公開されているカスタム投稿タイプをすべてリストアップしRSSに反映させる場合

昨日に引き続きRSS関係のお話です。今回は「カスタム投稿タイプ」を使っている場合のRSSについて。
 
WordPressのカスタム投稿タイプでは、そのままではRSSが配信されません。面倒ですがfunctions.phpにソースコードを追加しなければなりません。面倒ではありますが、カスタム投稿タイプを設定した方にはそんなに苦にならないかと思います。
 
どんなソースコードを書けばいいの?というわけですが、WordPressの良いところは使っている人がたくさんいて似たようなことを考えている人がたくさんいて、更にソースコードを紹介してくれる人もたくさんいるということです!
 
google先生に聞いてしまえばいいということです!(極論)
 
ですが、出回っているソースコードをそのまま使えるかといえば答えはNOの場合が多い訳です。モンキーレンチさんの巷でよく見かけるカスタム投稿タイプをRSSに反映させるコードはバグがあるので使ってはいけないに詳しく書かれているように、バグが潜んでいたりするケースもあります。 
 
ちなみに巷でよくみかけるカスタム投稿タイプのRSS反映のコードはこんなん。
通常の投稿の他に『news』と『videos』というカスタム投稿があるっていう条件ですね。

function custom_post_rss_set( $query ) {
    if ( is_feed() ) {
        $query->set( 'post_type', array( 'post', 'news', 'videos' ) );
        return $query;
    }
}
add_filter( 'pre_get_posts', 'custom_post_rss_set' );

そして改良版がこちら。

public function custom_post_rss_set( $query ) {
    if ( is_feed() ) {
        $post_type = $query->get( 'post_type' );
        if ( empty( $post_type ) ) {
            $query->set( 'post_type', array( 'post', 'news', 'videos' ) );
        }
        return $query;
    }
}
add_filter( 'pre_get_posts', 'custom_post_rss_set' );

詳しくはモンキーレンチさんの巷でよく見かけるカスタム投稿タイプをRSSに反映させるコードはバグがあるので使ってはいけないをご覧いただければと思います。
 
でも、ふと思いました。
多くの場合、公開されているカスタム投稿タイプをひとつのRSSですべてリストアップして流したいだけなのではと。だとしたら、もっとシンプルに書くことができます。

 array( 'post', 'news', 'videos' )

の部分を

array( 'public'=>true ) 

にしちゃえば、ひとつのRSSですべてリストアップして流すことができます。例えば、カスタム投稿タイプが10種類とかあった場合、デフォルトとあわせて11種類をリストアップしてくれるのが‘public’=>trueというわけです。
 
そして忘れちゃいけないことが!functions.phpをアップした後、パーマリンクの更新をしましょう。そうしないと反映されないみたい。そしてブラウザキャッシュにもご注意くださいませ。 

検索しても本当にやりたいことにまったくドンピシャなコードというのはなかなか見つけることができませんが、複数のサイトをみることでなんとな〜く見えてきますよね。まるで手探りの宝探しみたいですが、良い勉強の機会になっています。
 
ちなみにですが、お客様のWEBサイトをWordPressを作る際、小規模サイトのテーマ作り程度なら自分でやりますが、ガッツリと作る場合は、私はPHPを書きません(笑)。マルチサイトをいくつも使ってカスタムフィールドでユーザーも多くてみたいな場合ですね。そういう場合はちゃんとしたエンジニア様に書いていただいております。勉強中なんです、・・・すいません。だから今回紹介したやり方も見る人が見たら「おまwwwwwwwwwww」の可能性があります。実際に使えてはいるんで紹介しましたが、あくまでも自己責任でお願いします。


中小企業・個人事業主様向けオリジナルデザインのホームページ制作 WEB屋くぇりのお手伝いできること

ホームページ制作は、コーディング技術やデザインセンスのほかにインターネットに関するさまざまな知識が必要です。
デザインしたり、プログラムを書いたり、どんな機能が必要か考えたり。
そして一番大変なのが、ホームページに掲載する内容を考えることです。

ただ美しいデザインのホームページを作るだけでは、なんの効果も得られない場合がほとんど。
それとは逆に情報を詰め込みすぎて伝えたい本質を見失ってしまう場合もあります。
だからお客さまが「ホームページを作ってなにをしたいのか」を明確にするところからご一緒させていただきます。

「どのプランを選べばいいの?」と思われたら、お気軽にお問い合わせください。
お客さまのご予算や状況にあったプランをご提案し概算でお見積もりいたします。
お見積もりは勿論無料です。
『くぇり』はお客様の疑問にお応えしながらホームページの方向性を一緒に作り上げていくのが得意なんです。

4つのプラン以外制作も承っております。
詳しくは価格表をご覧ください。

クリックするとメニューが見えるよ