【WordPress】トップとフィードのループから特定カテゴリの投稿を除外する方法

公開 更新

最近ブログに習慣化に関する日記をUPしている@web_shufuです。しかし、日記的コンテンツをその他のコンテンツに混ぜてTOPに表示するとちょっと違和感を感じたので、TOPとフィードのループから習慣化カテゴリの日記コンテンツを除外しました。

2013/7/1、フィードには、習慣化カテゴリの記事を再び載せるようにしました。

TOPからの除外

Topページのループから習慣化カテゴリ(ID41)の投稿を除外するには、ループの直前に以下のように書けばいいです。

<?php query_posts( array( 
'category__not_in' => array(41)
) );?>

query_postsはそろそろ時代遅れになるという話ですが、とりあえず問題なく機能しますし、勉強するのが面倒でした。

フィードからの除外

習慣化カテゴリ(ID41)の投稿を除外したフィードは、以下のようなURLで実現できます。

  • https://webshufu.com/?feed=rss2&cat=-41
  • https://webshufu.com/feed/?cat=-41

これについては過去記事で説明しました。

しかし、今回はあえて、function.phpに以下のコードを記入して https://webshufu.com/feed/ で習慣化カテゴリ(ID41)の投稿を除外することにしました。

//フィードからカテゴリ41「習慣化を除外」
function myFilter($query) {
    if ($query->is_feed && !is_category()) {
        $query->set('category__not_in',array(41));
    }
return $query;
}
add_filter('pre_get_posts','myFilter');

Topページのループから習慣化カテゴリ(ID41)の投稿を除外する場合も、本来はこのpre_get_postsを使うやり方が適しているようです。

query_posts

ループを調整するのにquery_postsを使うのは時代遅れとの論調が日に日に強まっているので、勉強していきたいと思います。

以下のページ参考にさせて頂きました。

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です