[WordPress] feedから特定カテゴリの投稿を除外する(コアファイル編集不要)

  • 3 10月, 2013

標準のfeedは基本的に全ての投稿が含まれますが、稀に含めたくないものがあったりします。そんな場合は投稿を取得するメインクエリの条件を書き換えてしまうだけで事足ります。そして最近良く見かける「pre_get_posts」にフックするだけで完了です。

以下のソースをfunctions.phpに追記します。


function exclude_tag_rss($query) {
  if ($query->is_feed) {
      $query->set('category__not_in',
           array(get_category_by_slug('it')->term_id,
                        get_category_by_slug('novels')->term_id));
  }
  return $query;
}
add_filter( 'pre_get_posts', 'exclude_tag_rss');
 

<解説>

  • (2行目)「$query->is_feed」でfeedの場合に限定
  • (3行目)「$query->set」の条件に「category__not_in」として、”指定カテゴリの除外を指定
  • (4~5行目)複数のカテゴリを指定する場合は配列で指定
  • (9行目)add_filterを使い、「pre_get_posts」に追加

これで指定したカテゴリに属する投稿は出力されなくなります。
余り使うパターンではないと思いますが、念のため書き残します。


関連ワード: ,

Comments are closed.