web-dev-qa-db-fra.com

Ajouter du contenu exclusivement à un flux de type de post personnalisé

Introduction

Si je voulais ajouter du contenu à la fin d'une entrée de flux RSS, je pourrais écrire quelque chose comme ceci:

// quick PHP 5.3+ example
add_filter('the_content', function($content) {
    // If this is not a feed, leave now.
    if ( !is_feed() ) return $content;

    // Add content to the feed entry.
    $content .= 'Thank you for subscribing to the feed.';
});

Ce que je veux faire

Ce qui précède fonctionne bien. cependant, cela ajoutera "Merci pour votre inscription au flux." à chaque entrée de flux. Si je voulais ajouter cette ligne uniquement s'il s'agissait d'un flux pour un type de publication personnalisé, comment procéderais-je?

Par exemple, si j'avais un type de publication personnalisé appelé 'books', je pourrais accéder au lien de fil correspondant en accédant à example.com/feed/?post_type=books. Donc, au lieu de dire, 'Thank you for subscribing to the feed.' je voudrais dire, 'Thank you for subscribing to the books feed.' De même avec les flux d'autres types d'articles.


J'ai pensé que passer un argument dans is_feed( $feeds ) pourrait être la solution, mais la documentation du codex ne semble pas être très claire pour ce qu'il faut exactement . Il dit juste, "types de fourrage"?

$ feeds (array/string) (optionnel) Type (s) de flux à vérifier. Par défaut: aucun

Est-ce une URL vers un flux? Une limace de quelque chose peut-être? "RSS 2.0" etc.? (Ou peut-être que cela n'a rien à voir avec mon problème.)

La seule information que je puisse sembler trouver est comment accéder au flux du type de publication personnalisé (par exemple, example.com/feed/?post_type=books) - et non pas comment ajouter du contenu exclusivement à ce flux.

Merci pour toute aide.

2
Leon Williams

Tout d'abord, vous pouvez utiliser un hook the_content_feed plus spécifique, de sorte que votre code ne doit pas s'exécuter dans des contextes non liés.

Le "type" fait référence à les flux (pas les publications), donc ce serait quelque chose comme rss2 et ce sera la même pour tous les types de publications.

C'est un peu non évident, mais les flux sont aussi une sorte de boucle, comme au début. Donc, les mêmes API fonctionnent généralement très bien.

Votre chèque peut être quelque chose comme if ( 'books' === get_post_type() ).

1
Rarst