Web制作 WordPress カスタム投稿

カスタム投稿のターム情報を表示する方法

2023年10月11日

この記事では、カスタム投稿タイプを使用して投稿を作成する際に使用される
ターム情報の表示方法についてご紹介します。

カスタム投稿とは

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

以上が、一覧ページと詳細ページでカスタム投稿のターム情報を表示する方法です。
ターム情報を適切に取得して表示することにより、ユーザーにより使いやすいカスタム投稿の表示を提供することができます。

タームによる分類は、通常の投稿におけるカテゴリーやタグによる分類に近い関係にあります。
カテゴリーやタグの情報を表示する方法については、以下の記事でご紹介しています。

あわせて読みたい
あわせて読みたい
  • この記事を書いた人

はぎ

43歳からWeb制作開始|フリーランス2年目| 税理士・公認会計士を目指すも挫折、27歳でトヨタ系自動車部品工場に勤務| 管理業務に関わるなか、ExcelVBAからプログラミングに目覚める| 現在は兼業コーダーとしてクラウドソーシング・制作会社からのお仕事をさせて頂いております| 時間と場所に縛られないライフスタイルを目指し鬼労働中| 柴犬好き🐕‍🦺

-Web制作, WordPress, カスタム投稿