WordPress a un coté très agréable pour le développeur, c’est de permettre des modifications de code par petites touches tout en conservant la compatibilité avec les mises à jour. En voici un exemple avec la modification du template RSS par défaut.
État des lieux de l’existant
La fonctionnalité RSS est gérée dans /wp-includes avec deux fichiers functions.php et default-filters.php.
Pour commencer, on trouve dans functions.php :
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 |
/** * Load either the RSS2 comment feed or the RSS2 posts feed. * * @since 2.1.0 * * @see load_template() * * @param bool $for_comments True for the comment feed, false for normal feed. */ function do_feed_rss2( $for_comments ) { if ( $for_comments ) load_template( ABSPATH . WPINC . '/feed-rss2-comments.php' ); else load_template( ABSPATH . WPINC . '/feed-rss2.php' ); } |
Cette fonction do_feed_rss2 fait appel au fichier de template feed-rss2.php dans le même dossier. Elle est déclenchée dans default-filters.php comme ceci.
1 |
add_action( 'do_feed_rss2', 'do_feed_rss2', 10, 1 ); |
Modification des actions à l’aide du thème
Comme souvent avec WordPress, il est généralement pertinent d’effectuer les modifications de code dans le thème enfant. Ainsi on peut mettre à jour le core de WordPress ainsi que le thème parent.
Dans le fichier functions.php de votre thème vous pouvez ajouter :
1 2 3 4 5 6 7 8 9 10 11 |
/** * Deal with the custom RSS templates. */ function my_custom_rss( $for_comments ) { if ( $for_comments ) load_template( ABSPATH . WPINC . '/feed-rss2-comments.php' ); else load_template( ABSPATH . '/wp-content/themes/mon-theme/feed-rss2-custom.php' ); } remove_all_actions( 'do_feed_rss2' ); add_action( 'do_feed_rss2', 'my_custom_rss', 10, 1 ); |
Cet extrait est adapté depuis l’aide WordPress adaptée avec ce qu’on trouve dans la dernière version en date (ci-dessus).
Le fichier feed-rss2-custom.php est une copie conforme du feed-rss2.php que vous pouvez modifier en profondeur pour ajouter du contenu comme des images. Pour ma part j’ai ajouté le code ci-dessous dans la boucle for des posts. Le flux RSS devient ainsi un support d’échange riche comme OpenGraph avant l’heure.
1 2 3 |
<?php if ( get_the_post_thumbnail_url() ) { ?> <image><?php the_post_thumbnail_url(); ?></image> <?php } ?> |
Cette méthode est différente ce celle généralement proposée et qui consiste à ajouter une balise <img> dans le contenu de l’extrait de page à l’intention du lecteur RSS.
Ça n’est pas possible de tout faire qu’avec des balises de templates, histoire qu’il n’y ai aucun code PHP en inclusion dans le source, ce qui permettrait de rendre le tout plus lisible ?
Il y a 38 balises
dans le fichier feed-rss2.php original, et plus généralement WordPress a du code PHP en inclusion à gogo. Je me contente de poursuivre en collant à l'existant mais je suis preneur pour toute suggestion.