Widget, affichage d’un flux RSS : contrôler l’ordre de tri…

Quelque soit l’origine du flux (feed) RSS, on est obligé de constater que l’affichage se fait toujours par date des éléments, de la plus récente (ou future) à la plus ancienne.
Pourquoi ?
Parce qu’en fait si on se promène dans le source des widgets par défaut (default-widgets.php - class WP_Widget_RSS), on observe que le flux est le résultat d’une fonction (fetch_feed) qui elle même fait appelle à une classe d’un framework SimplePie. Or dans cette classe (SimplePie), le tri se fait par défaut par la date décroissante…
La solution
Il faut donc utiliser le filtre (wp_feed_options de fetch_feed) et utiliser la méthode (enable_order_by_date) qui est prévue dans la classe pour annuler ce tri d’affichage. Ce sera donc le tri du flux lui-même prévu dans la requête du site distant qui sera pris en compte.
Dans l’exemple ci-dessous, on pourrait faire un test pour n’appliquer ce filtre qu’à quelques urls…

add_action ('wp_feed_options', 'pip_wp_feed_options', 10, 2 );
function pip_wp_feed_options( $feed, $url ) {
	//error_log($url . serialize($feed));
	$feed->enable_order_by_date(false);
}

Dans un site, ce filtre permet de conserver le tri du flux délivré par le site distant qui donne la date d’un évènement à venir, on souhaitait donc conserver la chronologie normale.

Les notes et articles “trucs et astuces” : pourquoi ?

Ce site multilingue sert à démontrer ici les potentialités du thème enfant Twenty Fifteen xili dans le contexte multilingue créé par la trilogie des extensions xili-language avec les articles les plus récents sur le site de Twenty Fourteen xili.
Au fur et à mesure des progrès et des versions, on découvre des parties du code WordPress pleine de richesse ou de vieillerie. Via une note ou un article plus long, nous partageons notre retour d’expérience. La première note concernera une façon de débloquer l’ordre de tri d’un flux (feed) RSS affiché via le widget de base..