Accueil > WordPress > Optimisation technique de WordPress > Exclure un format d'article du flux RSS de WordPress

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.

Exclure d'autres éléments du flux RSS

Sachez que tout le rendu d'un flux RSS sur WordPress est modulable. Dans cet article, nous avons pris pour exemple le fait de retirer un format de contenu. Mais on peut faire la même chose dans ce CMS avec d'autres critères :

  • Des types de contenus ;
  • Des articles précis ;
  • Des articles classés selon une taxonomie ou un terme de taxonomie (par exemple, exclure tous les articles ayant une étiquette, ou exclure tous ceux qui seraient associés à une catégorie précise).

Partez donc de votre besoin pour ensuite adapter le fonction pour filtrer selon votre besoin les flux RSS de WordPress.

Daniel Roch

Expert SEO WordPress - Créateur de SeoMix et SEOKEY - Auteur de nombreux livres et conférencier

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 e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *