カスタム投稿でのカスタムタクソノミーごとのアーカイブページを表示する【プラグインなし】

キービジュアル

目次

こんにちは、オトナ帝国です。

今回は以前出てきたカスタム投稿の追加アーカイブページの作成の合わせ技、カスタム投稿のカテゴリー、すなわちカスタムタクソノミーごとのアーカイブページを作っていきましょう。

カスタム投稿の振り返り

まずはカスタム投稿には通常の投稿と異なり、カテゴリーがありません。その代わりにカスタムタクソノミーがあるという構図ですね。そしてそれはfunction.phpを編集することで実現する、という内容でした。

アーカイブページのテンプレートファイル

投稿のアーカイブページはarchive.phpが基本です。ここまでは話した通りです。ちなみにカスタム投稿タイプだとarchive-カスタム投稿タイプ名.phpになります。少し先にここをまとめていきましょう。 いったんドメイン名直下にWordpressがある前提で行きます。ドメイン名はtest.comとします。

通常投稿のアーカイブ:archive.php

これは最もオーソドックスの投稿の場合のアーカイブファイルです。ちなみに通常の投稿をarchive.phpで表示するにはfunction.phpをいじる必要があ/ります。これは基本的にはトップページが投稿の一覧を表示するようにwordpress側の仕様でそうなっていることが原因です。

ですので、アクセスはtest.com直下か、test.com/archivepage/にアクセスすることで表示になります。

//phpファイル
function post_has_archive( $args, $post_type ) {
	if ( 'post' == $post_type ) {
	  $args['rewrite'] = true;
	  $args['has_archive'] = 'archivepage'; //URLとして使いたい文字列
	}
	return $args;
  }
add_filter( 'register_post_type_args', 'post_has_archive', 10, 2 );

カスタム投稿のアーカイブ:archive-カスタム投稿名.php

こちらはカスタム投稿のアーカイブを表示する場合です。カスタム投稿名が'test'だった場合はtest.com/test/にアクセスすることで表示になります。

カスタム投稿のタクソノミーアーカイブ:taxonomy.php

taxonomy.php:基本形

taxonomy-カスタムタクソノミー名.php:優先度1

taxonomy-カスタムタクソノミー名-term名.php:優先度2

優先度が高いものから設定されます。ここはカスタム投稿の追加で追加したタクソノミー情報、そこから管理画面上で作られたタグのslugの中身がterm名に入ってきます。

その他にもcategory関連もありますが、いったんアーカイブ系のテンプレートファイルはここまでにします。今回のメインテーマは優先度2の内容になっています。

taxonomy-カスタムタクソノミー名-term名.phpの編集

実はファイル名までたどり着くと内容は関連記事の表示方法と似ています。今回はtaxonomyがtestTaxonomy、termsがtestTermとするとファイル名はtaxonomy-testTaxonomy-testTerm.phpが編集ファイルになります。

//phpファイル
<?php
      $programArgs = array(
        'tax_query' => array( 
          array(
            'taxonomy' => 'testtaxonomy', //タクソノミーを指定
            'field' => 'slug', //ターム名をスラッグで指定する
            'terms' => 'testTerm',
          ),
        ),
        'post_type' => 'noterss', // 投稿タイプのスラッグを指定
        'post_status' => 'publish', // 公開済の投稿を指定
      );
        $the_programQuery = new WP_Query($programArgs); 
?>
<?php if ($the_programQuery->have_posts()) : ?>
    <ul>
      <?php while (have_posts()) : the_post(); ?>
        <?php
          $link = get_the_permalink();
          $time = get_the_time('Y.m.d');
          $title = get_the_title();
        ?>
          <li>
            <a href="<?php echo $link; ?>">
              <p><img src="<?php echo $image; ?>" alt=""></p>
              <p>
                <span><?php echo $time; ?></span><br>
                <span><?php echo $title; ?></span>
              </p>
            </a>
          </li>
      <?php endwhile; ?>
<?php endif; ?>
</ul>

詳細解説はこちらのページで見ることができますので、そちらで確認してもらえれればと思いますが、いつもwp_query()で格納、if/whileループで回していくことになります。

最後に

今回はアーカイブページ、とりわけカスタムタクソノミー関連のアーカイブをまとめました。wp_queryで作るところは他のところでもかぶりますが、ファイル名での制御というのがWordpressの1つの特徴と言えますね。

何かの参考になれば幸いです。

それでは~★


オトナ帝国では、昔のゲームなどの懐かしい体験ができる秘密基地を運営中。
浅草葦拠点では現在セールを実施しています。お部屋の詳細だけでも見てください~

詳細を見る


関連記事

人気記事

最新記事

カテゴリーから記事を探す