web-dev-qa-db-ja.com

カスタム投稿タイプのフィールドにのみコンテンツを追加する

前書き

RSSフィードのエントリの最後にコンテンツを追加したい場合は、次のように書くことができます。

// 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.';
});

私がやりたいこと

上記はうまくいきます。ただし、それにより「フィードを購読していただきありがとうございます」が追加されます。すべてのフィードエントリに。特定のカスタム投稿タイプのフィードである場合にのみその行を追加したい場合は、どうすればよいですか。

たとえば、'books'というカスタム投稿タイプがある場合は、example.com/feed/?post_type=booksに移動してそのためのフィードリンクにアクセスできます。 'Thank you for subscribing to the feed.'他の投稿タイプのフィードと同様に、'Thank you for subscribing to the books feed.'と言いたいのです。


私はis_feed( $feeds )に引数を渡すことが答えになるかもしれないと考えました、しかし codexドキュメンテーション は正確に何を渡すべきかについて私にはあまり明確ではないようです。 「フィードの種類」と言っているだけですか。

$ feeds(配列/文字列)(オプション)チェックするフィードの種類。デフォルト:なし

それはフィードへのURLですか?たぶん何かのナメクジ? 「RSS 2.0」など(あるいはそれは私の問題とは無関係です。)

私が見つけることができる唯一の情報は、最初にカスタム投稿タイプのフィードにアクセスする方法(例:example.com/feed/?post_type=books)です。そのフィードにコンテンツを排他的に追加する方法ではありません。

助けてくれてありがとう。

2
Leon Williams

まず、より具体的なthe_content_feedフックを使用することができます。そのため、コードは無関係なコンテキストで実行する必要はありません。

"type"はフィード(投稿ではない)を参照するので、rss2のようなものになり、投稿の種類によって同じになります。

それは少し明白ではありませんが、フィードもフロントエンドと同じように一種のループです。したがって、同じAPIでも通常はうまく機能します。

あなたのチェックはif ( 'books' === get_post_type() )のようなものです。

1
Rarst