こんにちは、オトナ帝国です。
今回は以前出てきたカスタム投稿の追加とアーカイブページの作成の合わせ技、カスタム投稿のカテゴリー、すなわちカスタムタクソノミーごとのアーカイブページを作っていきましょう。
まずはカスタム投稿には通常の投稿と異なり、カテゴリーがありません。その代わりにカスタムタクソノミーがあるという構図ですね。そしてそれはfunction.phpを編集することで実現する、という内容でした。
投稿のアーカイブページはarchive.phpが基本です。ここまでは話した通りです。ちなみにカスタム投稿タイプだとarchive-カスタム投稿タイプ名.phpになります。少し先にここをまとめていきましょう。 いったんドメイン名直下にWordpressがある前提で行きます。ドメイン名はtest.comとします。
これは最もオーソドックスの投稿の場合のアーカイブファイルです。ちなみに通常の投稿を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 );
こちらはカスタム投稿のアーカイブを表示する場合です。カスタム投稿名が'test'だった場合はtest.com/test/にアクセスすることで表示になります。
taxonomy.php:基本形
taxonomy-カスタムタクソノミー名.php:優先度1
taxonomy-カスタムタクソノミー名-term名.php:優先度2
優先度が高いものから設定されます。ここはカスタム投稿の追加で追加したタクソノミー情報、そこから管理画面上で作られたタグのslugの中身がterm名に入ってきます。
その他にもcategory関連もありますが、いったんアーカイブ系のテンプレートファイルはここまでにします。今回のメインテーマは優先度2の内容になっています。
実はファイル名までたどり着くと内容は関連記事の表示方法と似ています。今回は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つの特徴と言えますね。
何かの参考になれば幸いです。
それでは~★
オトナ帝国では、昔のゲームなどの懐かしい体験ができる秘密基地を運営中。
浅草葦拠点では現在セールを実施しています。お部屋の詳細だけでも見てください~