カスタムタクソノミーとタームの出力

タクソノミーとターム

記事の分類で「カテゴリー」と「タグ」が用意されていますが、「カスタムタクソノミー」という方法で、別分類を追加することができます。

また、この「カスタムタクソノミー」を使うことで、カスタム投稿にもタグ・カテゴリーを設定することが可能で、それを出力する時の関数です。

ターム名の出力

カスタムタクソノミーで指定したターム名を、文字列で出力します。

PHP

<?php single_term_title(); ?>

タームの説明の出力

カスタムタクソノミーで指定したタームの「説明」を出力します。

PHP

<?php echo term_description(); ?>

その記事のタームをリンク付きで出力

その記事のタクソノミーのタームを、a タグのリンクで出力します。

PHP

<?php
$terms = get_the_terms($post->ID,'タクソノミー名');
foreach( $terms as $term ) {
echo '<a href="'.get_term_link($term->slug, 'タクソノミー名').'" class="manualcategory">'.$term->name.'</a>';
}
?>

タームごとに記事一覧を生成

まず、カスタム投稿にタクソノミーを作ります。そして、そのタクソノミーに紐付けるtaxonomy-[タクソノミーのslug].phpに、以下のコードを記述してターム毎の記事一覧を出力します。

PHP

<?php
$taxonomy_name  = get_query_var('taxonomy');
$tax_posts = get_posts(array('post_type' => get_post_type(), 'taxonomy' => $taxonomy_name, 'term' => $taxonomy->slug ) );
$term_var = get_query_var( 'term' );
$myQuery = new WP_Query();
$param = array(
    'posts_per_page' => '-1', //表示数
    'post_type' => 'カスタム投稿名',
    'taxonomy' => $taxonomy_name,
    'term' => $term_var,
);
	$myQuery->query($param);
?>
<?php if($myQuery->have_posts()): ?>
<ul>
<?php while($myQuery->have_posts()) : $myQuery->the_post(); ?>
<!-- ここからループ -->
<li>〜〜〜〜〜</li>
<!-- ここまでループ -->
<?php endwhile; ?>
</ul>
<?php endif; ?>
<?php wp_reset_postdata(); ?>

作成するファイルは1つでOKで、通常投稿の「カテゴリページ」のように、ターム毎の記事一覧を出力してくれます。

タームをリンク付きリストで出力

タームを li のリストで出力し、サイドバーなど一覧で出力したい時に使います。

PHP

<ul>
<?php // タームの一覧を表示
$catlist = wp_list_categories(array(
'taxonomy' => 'タクソノミー名',
'title_li' => '',
'show_count' => 1, // 1でタクソノミーの投稿数を表示
'echo' => 0 // 設定した値を返す
));
$catlist = preg_replace('/<\/a> (\([0-9]*\))/', ' <span>$1</span></a>', $catlist); // 投稿数をspanで囲う
$catlist = str_replace(array('(',')'), '', $catlist); // 投稿数の()を削除
echo $catlist; // ターム一覧を表示
?>
</ul>

taxonomy.php の中に記述すると、表示中のタームを取得して li タグに current のclassを付与して出力します。