WordPress
ターム名のみを取得して表示する

ターム名のみを取得して表示する

またまたカスタム投稿がらみで。

カスタム投稿タイプで記事をつくる際、通常のカテゴリーも使用できますが、固有のタクソノミーを作成してタームで分類することが多いと思います。

その際に、タームの文字のみを取得して表示したい場合のメモ。

タームの文字のみ取得する(シングルページ)

<?php
$terms = get_the_terms( $post->ID, 'タクソノミー名' );
if ( $terms && ! is_wp_error( $terms ) ) :
    $terms_links = array();
    foreach ( $terms as $term ) {
        $terms_links[] = $term->name;
    }
    $on_terms = join( ", ", $terms_links );
?>
// ここにターム名表示
<?php echo $on_terms; ?>

get_the_termsを利用してターム名を取得します。

リンク付きにする

また、リンク付きで表示する場合は、もっと簡単です。

<?php get_the_term_list( $post->ID, 'タクソノミー名' , $before, $sep, $after ); ?>

get_the_term_listという関数が用意されているので、これを利用します。

これで指定のタクソノミー配下のタームを取得して表示します。

第2引数でタクソノミーを指定して、3,4,5引数は装飾関係。

詳細
  • 必須$post->ID, 記事IDが入ります。
  • 必須‘タクソノミー名’ タクソノミー名が入ります。
  • $beforeは分類名の前に入る文字列やタグ。
  • $sepはセパレーター。
  • $afterは分類名の後に入る文字列や閉じタグを入れます。

タームの文字のみ取得する(アーカイブページ)

アーカイブはさらにシンプルで、

<?php
  $taxonomy = $wp_query->get_queried_object(); 
  echo esc_html($taxonomy->name);
?>

これでタームの一覧ページではターム名のみ表示できますが、カスタム投稿の一覧ではスラッグが表示されました。
ですので、

<?php
  if(is_tax()) {
    $taxonomy = get_queried_object();
    $termname = $taxonomy->name;
  } elseif(is_post_type_archive()) {
    $termname = wp_title('');
  }
  echo esc_html($termname);
?>

私は各ページで分岐してみましたが、もっとシンプルな方法があるかもしれません。