Par défaut, WordPress insère dans le flux d’actualité RSS tous les articles d’un site, ce qui est idéal pour la plupart des sites utilisant ce CMS. Si votre thème ou un de vos plugins fait appel aux formats d’articles (aside, video, gallery, …), ils sont également tous inclus dans le flux de la même manière.

Sur WordPress, il existe des codes et fonctions pour exclure certains articles ou certaines catégories. Malheureusement, il n’y avait de pas de code pour exclure un format d’article de manière automatique (par exemple, tous les formats « Aside« ).

C’est désormais chose faite.

Format d’article et WordPress

Avant d’expliquer comment faire, voici une brève explication de ce qu’est un »post format » pour ceux qui ne connaissent pas.

Comme expliqué en introduction, votre thème ou un plugin peuvent activer des formats d’articles, le tout avec une simple ligne de code :

add_theme_support('post-formats', array( 'aside', 'gallery' ));

Sur WordPress, on peut activer ces formats d’article :

  • gallery
  • link
  • image
  • quote
  • status
  • video
  • audio
  • aside

C’est ensuite à votre thème ou à votre plugin d’utiliser et d’afficher de manière différente ces formats d’articles. C’est très pratique sur certains thèmes, comme par exemple l’excellent thème Diary de Peaxl.

Diary, un thème WordPress utilisant les formats d'articles
Diary, un thème WordPress utilisant les formats d’articles

Dans ce thème, les créateurs ont choisi d’utiliser les formats d’articles pour faire varier l’affichage des publications sur le site. Cela démontre d’ailleurs que l’on peut aller assez loin dans l’intégration de cette fonctionnalité dans les designs, ou encore comme ici dans l’administration de WordPress :

Un exemple d'intégration de Formats d'articles
Un exemple d’intégration de Formats d’articles

Exclure un Post Format du RSS de WordPress

Le hic, c’est qu’on utilise parfois les formats d’articles pour afficher du contenu plus décalé ou moins pertinent (ce qui d’ailleurs aurait été plus judicieux avec un custom post type, mais c’est un autre débat…).

Si vous souhaitez les exclure du flux d’actualité RSS de WordPress, il vous suffit d’utiliser le code suivant dans le fichier functions.php de votre thème, en pensant à remplacer le champ « terms » par le bon format d’article :

function seomix_filterpostformat($query) {
        if ($query->is_feed) {
                $query->set('tax_query',
                        array(          
                                array(
                                        'taxonomy' => 'post_format',
                                        'terms' => 'post-format-aside',
                                        'field' => 'slug',
                                        'operator' => 'NOT IN'
                                )
                        )
                );
        }
        return $query;
}
add_filter('parse_query','seomix_filterpostformat');

Et voilà, le tour est joué.

Merci à Nicolas Juen pour m’avoir donné cette piste de travail et à Willy Bahuaud pour une petite correction de bug à la fin.