query_postsを使うと/page/の表示が思わぬことになった

当サイトはWordPressで構築していたりするのですが、最新の投稿に一部カテゴリーの投稿が表示されない小細工を弄していたりしました。

恥ずかしいbefore

小細工というのは、index.phpに下記を追記するだけの簡単なものでした。

if (is_home()) {
 query_posts("cat=-/*ここにカテゴリーIDを入れる*/");
}

しかし!ここ連日で投稿を行ってきたせいか、当サイトフロントページの下部にページ送り表示があり、しかもこのページ送りが『URLに”/page/~”と付随するのに、表示される投稿は必ず最新の投稿数件になる。』なんていう恥ずかしい事態になっていたことに昨日気づきました。

納得のafter

数件、WordPressのphpに詳しいサイトを回ったところ、WORDPRESSCodex日本語版に行き着き、しかもサンプルコードがほぼ求めていたものでした!それがこちら。

function exclude_category( $query ) {
    if ( $query->is_home() && $query->is_main_query() ) {
        $query->set( 'cat', '-1,-1347' );
    }
}
add_action( 'pre_get_posts', 'exclude_category' );

もちろん、カテゴリ別表示にも対応しています。
よかったよかった!

よかったらシェアしてね!
  • URLをコピーしました!
  • URLをコピーしました!

この記事を書いた人

はじめまして、秋月なるです。
アラフォー会社員で、スマホアプリ/ゲーム/AIが好き。新しいものを見ると触りたくなるタイプで、スマホやウェアラブル等ガジェットが好きですが、よく買ったあとに「思ってたのと違う…」をやりがち。
ブログ投稿は趣味の1つなので、ゆるく続けていこうと思います。

目次