wordpressは便利な機能が多いですよね。
その中でも多く使用する機能の一つにタグとカテゴリー
があります。
今回はカスタム投稿でタグとカテゴリーアーカイブ
を作成する方法を記載します。
目次
カスタム投稿作成
まずはカスタム投稿を作成します。
function.phpにカスタム投稿作成の記述をします。
/* カスタム投稿タイプ */ 
add_action( ‘init’, ‘create_post_type’ ); 
function create_post_type() { 
register_post_type( ‘event’, /* post-type */ 
array( 
‘labels’ => array( 
‘name’ => __( ‘イベント’ ), 
‘singular_name’ => __( ‘イベント’ ) 
), 
‘public’ => true, 
‘has_archive’ => true, /* アーカイブページを持つ */ 
‘menu_position’ => 5, //管理画面のメニュー順位 
‘supports’ => array( ‘title’, ‘author’, ‘thumbnail’, ‘excerpt’, ‘custom-fields’, ‘comments’ ), 
) 
); 
/* ここから */ 
register_taxonomy( 
‘event_cat’, /* タクソノミーの名前 */ 
‘event’, 
array( 
‘hierarchical’ => true, //カテゴリータイプの指定 
‘update_count_callback’ => ‘_update_post_term_count’, 
//ダッシュボードに表示させる名前 
‘label’ => ‘イベントのカテゴリー’, 
‘public’ => true, 
‘has_archive’ => true, /* アーカイブページを持つ */ 
‘show_ui’ => true 
) 
); 
/* ここから */ 
register_taxonomy( 
‘event_tag’, /* タクソノミーの名前 */ 
‘event’, 
array( 
‘hierarchical’ => false, //タグタイプの指定(階層をもたない) 
‘update_count_callback’ => ‘_update_post_term_count’, 
//ダッシュボードに表示させる名前 
‘label’ => ‘イベントのタグ’, 
‘public’ => true, 
‘has_archive’ => true, /* アーカイブページを持つ */ 
‘show_ui’ => true 
) 
); 
/* ここまでを追加 */ 
} 
 
 
 
 | 
追加すると管理画面に「イベント」と名前が
入った投稿が作成されます。
カテゴリー一覧作成
ではカスタム投稿でカテゴリーの一覧を作成する
方法を見てみましょう。
まずテンプレートですが、
名前は任意ではありません。
テンプレート名は下記の様になります。
taxonomy-「post_type」_cat.php
ですので、
今回post_typeが「event」ですので、
taxonomy-event_cat.php
になります。
下記が記載するコードです。
<?php 
/* 
Template Name: カテゴリテンプレート 
*/ 
?> 
<?php get_header(); ?> 
<?php 
$type = get_query_var( ‘event_cat’ ); //指定したいタクソノミーを指定 
$args = array( 
‘post_type’ => array( ‘event’ ), /* 投稿タイプを指定 */ 
‘tax_query’ => array( 
‘relation’ => ‘OR’, 
array( 
‘taxonomy’ => ‘event_cat’, /* 指定したい投稿タイプが持つタクソノミーを指定 */ 
‘field’ => ‘slug’, 
‘terms’ => $type, /* 上記で指定した変数を指定 */ 
), 
), 
‘paged’ => $paged, 
‘posts_per_page’ => ’16’ /* 16件を取得 */ 
); 
$the_query = new WP_Query( $args ); 
if ( $the_query->have_posts() ): ?> 
<?php while ($the_query->have_posts()): $the_query->the_post(); ?> 
<!–ここからループ–> 
<!–ここまでループ–> 
<?php endwhile; ?> 
<?php wp_reset_postdata(); ?> 
<?php else : ?> 
事例がありません。 
<?php endif; ?> 
<?php get_footer(); ?> 
 
 
 
 | 
ポイントは下記になります。
1,$type = get_query_var( ‘event_cat’ ); で指定したいタクソノミーを指定。
こちらはカスタム投稿作成で作成した
タクソノミーの名前、今回はカテゴリーの一覧なので
「event_cat」を指定します。
2,’tax_query’ => array( ),でタクソノミーに関連付けされた記事を取得。
get_posts()で記事を呼び出す際に、tax_queryを使うところが今回のポイントです。
tax_queryは、記事の取得条件を細かく絞り込むことができる便利なパラメータです。
変数$typeで定義したタクソノミーに関連付けされた記事に絞り込み、
各個別の記事を取得しています。
 
タグ一覧作成
今度はカスタム投稿でタグ一覧を作成する
方法を見てみましょう。
まずテンプレートですが、
こちらも名前は任意ではありません。
テンプレート名は下記の様になります。
taxonomy-「post_type」_tag.php
ですので、
今回post_typeが「event」ですので、
taxonomy-event_tag.php
になります。
下記が記載するコードです。
<?php 
/* 
Template Name: タグテンプレート 
*/ 
?> 
<?php get_header(); ?> 
<?php 
$type = get_query_var( ‘event_tag’ ); //指定したいタクソノミーを指定 
$args = array( 
‘post_type’ => array( ‘event’ ), /* 投稿タイプを指定 */ 
‘tax_query’ => array( 
‘relation’ => ‘OR’, 
array( 
‘taxonomy’ => ‘event_tag’, /* 指定したい投稿タイプが持つタクソノミーを指定 */ 
‘field’ => ‘slug’, 
‘terms’ => $type, /* 上記で指定した変数を指定 */ 
), 
), 
‘paged’ => $paged, 
‘posts_per_page’ => ’16’ /* 16件を取得 */ 
); 
$the_query = new WP_Query( $args ); 
if ( $the_query->have_posts() ): ?> 
<?php while ($the_query->have_posts()): $the_query->the_post(); ?> 
<!–ここからループ–> 
<!–ここまでループ–> 
<?php endwhile; ?> 
<?php wp_reset_postdata(); ?> 
<?php else : ?> 
事例がありません。 
<?php endif; ?> 
<?php get_footer(); ?> 
 
 
 
 | 
こちらもポイントは下記になります。
1,$type = get_query_var( ‘event_tag’ ); で指定したいタクソノミーを指定。
こちらはカスタム投稿作成で作成した
タクソノミーの名前、今回はタグの一覧なので
「event_tag」を指定します。
2,’tax_query’ => array( ),でタクソノミーに関連付けされた記事を取得。
get_posts()で記事を呼び出す際に、tax_queryを使うところが今回のポイントです。
tax_queryは、記事の取得条件を細かく絞り込むことができる便利なパラメータです。
変数$typeで定義したタクソノミーに関連付けされた記事に絞り込み、
各個別の記事を取得しています。
 
記事を表示するURLについて
ではテンプレートをテーマファイル内に
アップして記事を表示させてみましょう。
https://abc.co.jp/「post_type」/「タクソノミー名」/「スラッグ名」/
で表示をさせます。
なので今回は下記で表示が出来ます。
カテゴリー一覧
https://abc.co.jp/event/event_cat/スラッグ名/
タグ一覧
https://abc.co.jp/event/event_tag/スラッグ名/
 
上記がカスタム投稿のタクソノミー一覧を表示させる
URLになります。
各スラッグ名に対して表示してくれるので、
このテンプレート1枚で大丈夫です。
スラッグとは
カテゴリーやタグを管理画面より追加する際の
アルファベットになります。

URLをたたいて表示できれば完成です。
 
まとめ
今回はカスタム投稿で使用するタクソノミー一覧を
紹介しました。
便利な機能なのでぜひ使ってみてください。
参考サイト:
https://politik.hatenadiary.org/entry/20170303/1488537176
https://client.mamasquare.co.jp/