今回の内容は、ブログトップの記事一覧から特定のカテゴリがついた記事を非表示にするというものです。
記事は書いておきたいけどそれはトップの記事一覧には表示したくない、という時に使えると思います。
概要
目標
- ブログトップの記事一覧から特定の記事カテゴリを除外して表示する
環境
- WordPress 5.1.1 + Gutenberg
カテゴリIDを調べる
特定のカテゴリを除外するには、そのカテゴリIDが必要になるのでそれを先に調べます。
管理画面の左にあるメニューから、「投稿一覧 > カテゴリー」を開きます。
カテゴリ一覧が表示されるので、非表示にしたいカテゴリの編集画面をクリックして開きます。
ブラウザのURLの中にtag_ID=○という文字列(○は数字が表示されています)があるので、その数字をメモします。
これが非表示にしたいカテゴリのIDとなります。
今回はtag_IDを10として進めます。
非表示にする処理をつくる
公式サイトよりサンプルのコードがあるので、そちらを参考にします。
さきほどメモしたtag_ID:10を使って、作ってみたコードがこちらになります。
(1)か(2)のどちらかをfunction.phpなどに追加してください。
(1)無名関数を使う
add_action('pre_get_posts', function($query) {
if ($query->is_home() && $query->is_main_query()) {
$query->set('cat', '-10');
}
});
(2)無名関数を使わない
function exclude_category($query) {
if ($query->is_home() && $query->is_main_query()) {
$query->set('cat', '-10');
}
});
add_action('pre_get_posts', 'exclude_category');
コードについて
カテゴリの除外の処理の部分です。
$query->set('cat', '-10'); // 除外するカテゴリID: 10
ポイントは除外するカテゴリIDにマイナスをつける、文字列で囲んであげることです。
これで準備は完了です。
確認
ブログトップの記事一覧を開いて、除外したいカテゴリがついた記事が表示されていなければオッケーです。
表示されたままの場合は指定するカテゴリIDが間違っていないかを確認してみましょう。
実際に使っているトコロ

実際に自分の運営している日記ブログに使ってみました!
自分が運営する日記系ブログの記事トップから、日記カテゴリのみを非表示にしてみました。
トップから非表示にした代わりに、ナビメニューに「日記」という項目を作りそこで日記カテゴリの記事一覧を表示するようにしました。
よかったら日記系のブログにも遊びにきてください。

おわりに
今回は、ブログトップに表示されている投稿一覧から、特定の記事のカテゴリを除外して表示する、という内容でした。
条件分岐の中身を書き換えることにより、ブログトップ以外での記事一覧からも特定のカテゴリを除外できたりします。
公式にサンプルがあるので確認してみるといいかと思います。
それでは、このへんで。
バイナリー!
参考
「メインページから特定のカテゴリーを除外」の項目のソースコードを参考にしました。