Exclure un format d’article du flux RSS de WordPress

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.

Daniel Roch

Fondateur, conférencier, auteur, consultant et expert SEO WordPress

10 Commentaires

Agence web Le 02 octobre 2012 à 8h55
Idée prochain article à moins que ça soit déjà fait mais j'utilise des Custom Post Type (et non pas des format d'article).

Or par défaut, Wordpress a un flux distinct pour les articles et pour chaque custom pour type, l'idéal sera d'avoir un seul flux avec le tout.

Par contre, c'est vrai que plutôt de créer un type d'article personnalisé, je pourrais créer des 'formats' d'articles...

Autre idée article : ajouter des champs personnalisés obligatoires et supprimer l'éditor dans un format d'article de type vidéo par exemple ;)
Omnireso Le 02 octobre 2012 à 9h02
Merci pour cette ressource, qui permet de pallier à certaines erreurs de conception (oui, car normalement on utilise un type custom) ce qui peut être très pratique pour un blog qu'on "récupère".

Un bout de code de plus dans fonctions.php ;-)
Arnaud Le 02 octobre 2012 à 9h20
Merci pour cette astuce !

Pas si compliquée pour exclure un format de son flux rss finalement.

Je vais tester ça :)
Mikiweb Le 02 octobre 2012 à 9h42
Très bon tuto qui m'a bien aidé il y a quelques semaines de cela ;)
Merci Daniel
Aurélien Denis Le 10 octobre 2012 à 15h11
L'astuce qui tombe au moment où j'en ai besoin.. du SEO prévisionnel :p
stephane Le 10 février 2013 à 22h21
Bonjour, tout d'abord merci pour votre article.
J'ai réalisé un site sous wordpress mais je me rends compte que les articles sont bien présents dans le flux du site mais rien d'autre.

Est-il possible de configurer ce flux rss créé automatiquement par wordpress pour que toutes les infos du site soient présentes dans le flux?
(par exemple j'ai des évènements sur le site : utilisation du plugin "The Events Calendar" que j'aimerai avoir dans le flux RRS)

Merci d'avance et bonne continuation!
Daniel Roch Le 11 février 2013 à 9h17
Théoriquement, c'est tout à fait faisable, mais il faut voir cela au cas par cas, et ce n'est malheureusement pas le sujet de cet article.
stephane Le 11 février 2013 à 12h32
Merci pour cette réponse Daniel.
Pouvez-vous me donner une simple précision sur le fichier de configuration de flux rss à modifier en général où un plugin disponible pour ce cas?
Daniel Roch Le 11 février 2013 à 19h25
Faite une recherche sur Google et vous devriez pouvoir trouver votre bonheur : théoriquement, certains plugins peuvent le faire, tout comme des services externes (Feedburner ou aute) ou encore un hack du thème.
Sylvain Le 11 mai 2013 à 20h34
Bonsoir, cela marche très bien mais cela résolue mon problème à moitié. Pour ma part je cherche le moyen de désactiver / supprimer le flux de commentaires "site_url?feed=rss2&page_id=2".
Une idée une piste de recherche pour un profane ?

Laisser un commentaire

Votre adresse de messagerie ne sera pas publiée. Les champs obligatoires sont indiqués avec *