カスタムタクソノミーの一覧ページでカスタム投稿の一覧と同じテンプレートを読み込むようにする方法

カスタムタクソノミーの一覧ページでカスタム投稿の一覧と同じテンプレートを読み込むようにする方法

カスタムタクソノミーの一覧ページでカスタム投稿の一覧と同じテンプレートを読み込むようにする方法

カスタムタクソノミーはカスタム投稿とセットで利用することが多いです。例えば、「news」というカスタム投稿、「news_category」というカスタムタクソノミーがある場合、カスタムタクソノミーの一覧もarchive-news.phpを読み込みたいというケースは結構あると思います。

構成がほぼ一緒であれば、カスタムタクソノミーの一覧は、archive-news.phpをコピーしてtaxonomy-news.phpを作成すれば良いですが、個人的にはむやみにファイルを増やしたくないです。taxonomy-news.phpを作成しなかった場合はindex.phpが読み込まれますので、意図した表示にできない場合があります。

そんな時のために、カスタムタクソノミーの一覧でもカスタム投稿の一覧と同じテンプレートを読み込むようにする方法をご紹介いたします。

カスタムタクソノミーの一覧でカスタム投稿の一覧と同じテンプレートを読み込むようにする方法

以下の構成を前提としてご説明いたします。

  • カスタム投稿名:news
  • カスタムタクソノミー名:news_category

まずは、カスタム投稿の一覧ページ「archive-news.php」を作成しておきます。

続いて、functions.phpに以下コードを追加します。

function my_taxonomy_template_change($query) {
  if (is_admin() || !$query->is_main_query()) {
    return;
  }
  if (is_tax('news_category')) {
    $query->set('post_type', 'news');
    $query->is_archive = true;
  }
}
add_action('pre_get_posts', 'my_taxonomy_template_change');

これで、カスタムタクソノミー「news_category」の一覧でも、カスタム投稿「news」と同じarchive-news.phpが読み込まれるようになります。

pre_get_postsを使って、news_categoryの一覧をnewsの一覧扱いにして、読み込むテンプレートを変更しています。

あとがき

カスタム投稿とカスタムタクソノミーの一覧で、共通のテンプレートを使いたい場合は上述した方法をお試しください。

この記事が気に入ったら
いいね!してね♪

Twitter で

コメントを残す

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