【wordpress】wordpressのカスタムタクソノミーを使いこなしたい!

2018年9月24日

wordpressのカスタム投稿タイプ専用のカテゴリやタグってどうやってつくるの?

toolsetプラグインでカスタム投稿タイプをサクサク作成して、
ページに表示できるようになったので、調子に乗ってタグやカテゴリーを足してみたところ

そのままだと、どの投稿タイプでも同じカテゴリーを共有している!
投稿タイプごとに別々のカテゴリーやタグを使いたい……!

そこで、投稿タイプの専用カテゴリ・専用タグとして、カスタムタクソノミーを設定!

Taxonomyを選択して……新規追加!

このタクソノミーを使う投稿タイプを選択すれば、そこでだけ使用可能。

カスタム投稿タイプと組み合わせれば、こんな感じに。

 

サイドバー用のカテゴリー一覧(カスタムタクソノミーバージョン)を表示する

<ul>
<?php 
$args = array(
'taxonomy' => 'example-cat', // タクソノミーの指定
'orderby' => 'name', // カテゴリー名のアルファベット順
'order' => 'ASC', // ASC:昇順(初期値)、DESC:降順
'hide_empty' => false, // 投稿のないカテゴリーの扱い、true:空カテゴリーを隠す、false:全て表示
);
$the_query = new WP_Term_Query($args);
foreach($the_query->get_terms() as $term){ // 繰り返し処理の開始
$term_link = get_term_link($term->slug,'example-cat'); // タクソノミーの指定
?>
<li><a href="<?php echo $term_link; ?>"><?php echo $term->name.' ('.$term->count.')'; ?></a></li>
<?php
} // 繰り返し処理の終了
?>
</ul>
  • カテゴリ名1
  • カテゴリ名2

参考サイト:WordPress WP_Term_Query を使ってターム情報を出力する方法

カテゴリ(カスタムタクソノミー)ごとに繰り返しループして一覧表示する

<?php
// タクソノミ取得
$catargs = array(
	'taxonomy' => 'faq-cat'
);
$catlists = get_categories( $catargs );
foreach($catlists as $cat) : // 取得したカテゴリの配列でループを回す
?>
<section>
<h3><a href="<?php echo home_url('/faq-cat/' . $cat->slug ); ?>"><?php echo $cat->name; ?></a></h3>
<ul>
<?php
$args = array(
	'post_type' => 'faq',
	'faq-cat' => $cat->slug,
	'posts_per_page'   => 10//表示件数 1カテゴリーにつき10件表示
);
$my_posts = get_posts( $args );
if ( $my_posts ) { // 該当する投稿があったら
	foreach ( $my_posts as $post ) :
		setup_postdata( $post );
		?>
		<li><a href="<?php the_permalink(); ?>"><?php the_title(); ?></a></li>
		<?php
	endforeach;
} else {
	echo 'このカテゴリに投稿はありません';
}
wp_reset_postdata();
?>
</ul>
<a href="<?php echo home_url('/faq-cat/' . $cat->slug ); ?>"><?php echo $cat->name; ?>についての質問一覧へ</a>
</section>
<?php endforeach; ?>

カテゴリ名
記事
記事
記事

カテゴリ名
記事
記事
記事

参考サイト:カスタム投稿タイプの記事の一覧をカスタムタクソノミごとに表示する

記事ごとのカスタムタクソノミー名を表示する

<?php echo get_the_term_list($post->ID, 'example-cat'); //カテゴリー?>
<?php echo get_the_term_list($post->ID, 'faq-tag','',','); //タグ?>