【WordPress】特定のカテゴリのみのアーカイブページを作成する(PHP)

タグページやカテゴリページ、投稿者ページなどのアーカイブページで、特定のカテゴリのみを表示する方法について説明します。基本的にはテーマ開発者向けですが、子テーマで archive.php 等を作成すれば、既存テーマにも適用することができます。
中身は、カテゴリで制限した WP_Query() でサブループを回し、記事一覧を出力していくだけです。注意点としては、$GLOBALS[‘wp_query’] の max_num_pages をサブループの記事数に合わせておかないと、ページネーションの表示がおかしくなります。
サブループ:WordPress 側が用意している自動で記事一覧を出力する機能(メインループ)に対して、自分で設定をカスタマイズして記事一覧を出力する機能のこと。
具体的なコードを見たほうがわかりやすいと思うので、以下 author.php (投稿者ページ)を特定カテゴリに絞って、記事一覧を出力するケースを示します。
<!-- 以上ヘッダー -->
<?php
global $post;
$author_ID = $post->post_author;
$paged = get_query_var('paged') ? get_query_var('paged') : 1;
$args = [
'author' => $author_ID,
'cat' => カテゴリID,
'paged' => $paged
];
$the_query = new WP_Query($args);
if($the_query->have_posts()):
while($the_query->have_posts()):
$the_query->the_post();
?>
<!-- ここに各記事の紹介を書く -->
<?php
endwhile;
endif;
$GLOBALS['wp_query']->max_num_pages = $the_query->max_num_pages; // 重要!
the_posts_pagination(['prev_text' => '<<span>前</span>', 'next_text' => '<span>後</span>>']);
?>
<!-- 以下フッター -->
ちょっと宣伝
当サイトは WordPress 自作テーマを使った海外旅ブログまとめサイトとなっています。トップページに地図がありますが、地名を押すと画像が開き、画像を押すと関連記事一覧(クリック数順)が開きます。記事数が多い国ほど赤く、地名もその国で記事が多い都市の文字が大きくなるようにしています。ぜひ覗いてみてください。
当サイトで海外旅ブログを執筆することも可能です(もちろん無料です)! また既にブログをお持ちの方も、当サイトからリンクを貼ることができるようになっています。パントレ開発部までお気軽にお問い合わせください。
パントレ開発部