通常の場合URLは
http://【ブログトップのURL】/feed/
カスタム投稿のみのRSS
http://【ブログトップのURL】/【カスタム投稿タイプのスラッグ】/feed/http://【ブログトップのURL】/feed/?post_type=【カスタム投稿タイプのスラッグ】
カスタム投稿タイプのスラッグが「music」ならば、
http://【ブログトップのURL】/music/feed/
http://【ブログトップのURL】/feed/?post_type=music
投稿+カスタム投稿など複数にまたがるフィードを取得する場合
まず、URLは最終的に
http://【ブログトップのURL】/feed/
でいいのだが、function.phpで複数読み込ませる記述を追加する必要がある。
下記の3つの中で正常に動作するものを選べばよい
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 |
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', '【カスタム投稿タイプAのスラッグ】', '【カスタム投稿タイプBのスラッグ】' ) ); } return $query; } } add_filter( 'pre_get_posts', 'custom_post_rss_set' ); |
1 2 3 4 5 6 7 8 9 10 11 |
function mysite_feed_request($vars) { if ( isset($vars['feed']) && !isset($vars['post_type']) ){ $vars['post_type'] = array( 'post', '【カスタム投稿タイプAのスラッグ】', '【カスタム投稿タイプBのスラッグ】' ); } return $vars; } add_filter( 'request', 'mysite_feed_request' ); |
下記が一般的と言われているが、バグがあるので注意
1 2 3 4 5 6 7 8 9 10 11 12 13 14 |
function custom_post_rss_set($query) { if( is_feed() ) { $query->set('post_type', array( 'post', '【カスタム投稿タイプAのスラッグ】', '【カスタム投稿タイプBのスラッグ】' ) ); return $query; } } add_filter( 'pre_get_posts', 'custom_post_rss_set' ); |
カスタム投稿タイプのフィードを表示させようと思ったのですが、下記のような不具合が発生。
・特定のカスタム投稿タイプのRSSが取得できない(全てメインフィードと同じフィードになる)
・WP_DEBUGがtrueのときに特定のカスタム投稿タイプのRSSフィードを表示するとNoticeエラーがでる
出典: 巷でよく見かけるカスタム投稿タイプをRSSに反映させるコードはバグがあるので使ってはいけない | モンキーレンチ