またまたカスタム投稿がらみで。
カスタム投稿タイプで記事をつくる際、通常のカテゴリーも使用できますが、固有のタクソノミーを作成してタームで分類することが多いと思います。
その際に、タームの文字のみを取得して表示したい場合のメモ。
タームの文字のみ取得する(シングルページ)
<?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); ?>
私は各ページで分岐してみましたが、もっとシンプルな方法があるかもしれません。