WordPressの複数のカスタム投稿タイプを一つのRSS(feed)にまとめる方法

WordPressのカスタム投稿タイプ。大きくジャンルが違うものを管理するのに便利ですよね。

こんなプラグインでサクッと作れるのも魅力の一つ。

先日、ちょっとした相談で一つのRSSに複数のカスタム投稿タイプのものを表示出来ないだろうか。との相談があり、設定で悩んだので記録を残します。

プラグインの設定

では、出来ませんでした。(´・ω・`)
サクッと出来るものとばかり。

結局、functions.phpで調整しました

WordPressの場合、困ったことがあると最終的にはフックにたどり着きますね(笑)

カスタム投稿タイプをRSSに出力する、custom_post_rss_set のサンプルが巷に溢れていましたので、これをベースに一部を変更しました。
function custom_post_rss_set($query) {
    if ( is_feed() ) {
        if ( $query->get('post_type') == 'hogehoge' ){
            $query->set( 'post_type',
                array(
                    'hogehoge',
                    'fugafuga',
                )
            );
        }
        return $query;
    }
}

add_filter( 'pre_get_posts', 'custom_post_rss_set' );

これで、hogehoge/feed のRSSに、fugafuga/feed の結果も混ぜて表示されます。

おまけ

そもそも、カスタム投稿タイプのfeedが表示されない場合。

Custom Post Type UIの設定で、アーカイブありが[ false ]になっているのかも。デフォルトだとfalseっぽい。ここを[ true ]にするとアーカイブページが作られて、feedもあわせて出力されます。