ショウジンブログ on Hatena

“お芝居をしないと、この社会では異邦人として扱われるほかない”

カスタム投稿タイプやカスタム分類のfeed URLを取得する@WordPress

WordPressにカスタム投稿タイプを追加し、指定した投稿タイプの投稿や更に絞って指定した投稿タイプのカスタム分類(カスタムタクソノミー)投稿のfeed URLを取得します。

今回の用途としてはFacebookページへ流す(プラグインRSS Graffitiを使用)ためだけなので、feedのURLさえ取得できれば問題ありません。その場合はfeed URLに引数を追加すればよいです。

カスタム投稿タイプを指定

カスタム投稿タイプのスラッグが「blog」の場合。

WordPressのサイトアドレス/feed?post_type=blog

これはよくお世話になっている公式フォーラムで知りました。 ありがとうございます。

フォーラム » カスタム投稿タイプごとのRSS配信方法 — WordPress

カスタム投稿タイプ+カスタム分類を指定

これが今回必要だったやり方で、これはそのものズバリは見当たらなかったので、あれこれ試してみて得る事が出来ました。

カスタム投稿タイプのスラッグが「blog」で、この投稿タイプにおけるカスタム分類名(今回の例ではgenre)が「social」の場合。

WordPressのサイトアドレス/feed?post_type=blog&genre=social

カスタム分類名は、自身で追加した「分類名」になります。(genre部分)

先述のカスタム投稿タイプの指定に「&」で分類名を追加し、この分類にある取得したいスラッグ(social)を指定しているだけです。

確認のため「genre=」の値を変更してブラウザアクセスしてみましたが、それぞれの分類が取得できていました。

指定したカスタム投稿タイプのfeedをまとめて取得

用途としてはこちらのほうが多いのかもしれません。

以下を使用テーマのfunctions.phpに追加します。

post_typeの配列の指定のところで取得したい投稿タイプのスラッグを指定すれば良さそうです。(「よさそうです」というのは未検証だからです)

// 指定したカスタム投稿タイプ
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( 'diary', 'information', 'works' ) );
        }
        return $query;
    }
}
add_filter( 'pre_get_posts', 'custom_post_rss_set' );

上記の例ではカスタム投稿タイプのスラッグが「diary」「information」「works」のものを指定しています。

以下の記事で知りました。ありがとうございます。

2inc.org

それでも人生にイエスと言う

それでも人生にイエスと言う