この記事では、カスタム投稿タイプを使用して投稿を作成する際に使用される
ターム情報の表示方法についてご紹介します。
カスタム投稿とは
WordPressでは、カスタム投稿タイプを使用して、
通常の投稿タイプ(記事)とは異なる目的に合わせて投稿タイプを作成することができます。
またカスタム投稿タイプでは、タクソノミーとタームを使用して投稿を分類することができます。
例えば、
カスタム投稿タイプ「製品」のジャンル分けとして「商品カテゴリー」というタクソノミーを作成し、
その中に「家電」「食品」「ファッション」というタームで細かく分類することができます。
一覧ページでターム情報を表示する方法 ※get_terms()で取得
一覧ページでカスタム投稿のターム情報を表示するには、get_terms()関数を使用します。
この関数は、指定した投稿のターム(カテゴリー)の情報を取得するために使用されます。
タームをすべて表示する場合
<?php
$terms = get_terms('taxonomy'); // taxonomyには、タクソノミースラッグを記述
if ($terms) : ?>
<ul class="term__items">
<?php foreach ($terms as $term) : ?>
<li class="term__item">
<a class="term__link" href="<?php echo esc_url(get_term_link($term->slug, 'taxonomy')); ?>"><?php echo esc_html($term->name); ?></a>
</li>
<?php endforeach; ?>
</ul>
<?php endif; ?>
タームを1つだけ表示する場合
<?php
$terms = get_terms('taxonomy'); // taxonomyには、タクソノミースラッグを記述
if ($terms) : ?>
<ul class="term__items">
<li class="term__item">
<a class="term__link" href="<?php echo esc_url(get_term_link($terms[0]->slug, 'taxonomy')); ?>"><?php echo esc_html($terms[0]->name); ?></a>
</li>
</ul>
<?php endif; ?>
2つのコードの違いは、foreachですべて取得する点と、[0] で配列の1番目のみを取り出している点です
【コードの説明】
- get_terms();
get_terms()関数は、指定されたタクソノミーのターム情報を配列で取得します。
<?php
$tax_name = 'tax'; // タクソノミースラッグを変数に代入
$args = array(
'orderby' => 'id', // ID順に変更
'order' => 'ASC', // 並び順は昇順
'number' => 10, // 10個表示
);
$terms = get_terms($tax_name, $args);
if ($terms) : ?>
<ul class="term__items">
<?php foreach ($terms as $term) : ?>
<li class="term__item">
<a class="term__link" href="<?php echo esc_url(get_term_link($term->slug, $tax_name)); ?>"><?php echo esc_html($term->name); ?></a>
</li>
<?php endforeach; ?>
</ul>
<?php endif; ?>
WordPress 私的マニュアルさんより 「get_terms」
https://elearn.jp/wpman/function/get_terms.html
詳細ページでターム情報を表示する方法 ※get_the_terms()で取得
詳細ページでカスタム投稿のターム情報を表示するには、同様にget_the_terms()関数を使用します。
タームをすべて表示する場合
<?php
$terms = get_the_terms($post->ID, 'taxonomy'); // taxonomyには、タクソノミースラッグを記述
if ($terms) : ?>
<ul class="term__items">
<?php foreach ($terms as $term) : ?>
<li class="term__item">
<a class="term__link" href="<?php echo esc_url(get_term_link($term->slug, 'taxonomy')); ?>"><?php echo esc_html($term->name); ?></a>
</li>
<?php endforeach; ?>
</ul>
<?php endif; ?>
タームを1つだけ表示する場合
<?php
$terms = get_the_terms($post->ID, 'taxonomy'); // taxonomyには、タクソノミースラッグを記述
if ($terms) : ?>
<ul class="term__items">
<li class="term__item">
<a class="term__link" href="<?php echo esc_url(get_term_link($terms[0]->slug, 'taxonomy')); ?>"><?php echo esc_html($terms[0]->name); ?></a>
</li>
</ul>
<?php endif; ?>
【コードの説明】
- get_the_terms();
get_the_terms()関数は、投稿に属するタクソノミーのターム情報を配列で取得するために使用されます。
<?php
$tax_name = 'tax'; // タクソノミースラッグを変数に代入
$terms = get_the_terms($post->ID, $tax_name);
if ($terms) : ?>
<ul class="term__items">
<?php foreach ($terms as $term) : ?>
<li class="term__item">
<a class="term__link" href="<?php echo esc_url(get_term_link($term->slug, $tax_name)); ?>"><?php echo esc_html($term->name); ?></a>
</li>
<?php endforeach; ?>
</ul>
<?php endif; ?>
WordPress 私的マニュアルさんより「get_the_terms」
https://elearn.jp/wpman/function/get_the_terms.html
以上が、一覧ページと詳細ページでカスタム投稿のターム情報を表示する方法です。
ターム情報を適切に取得して表示することにより、ユーザーにより使いやすいカスタム投稿の表示を提供することができます。
タームによる分類は、通常の投稿におけるカテゴリーやタグによる分類に近い関係にあります。
カテゴリーやタグの情報を表示する方法については、以下の記事でご紹介しています。