読者です 読者をやめる 読者になる 読者になる

WordPressへの道

WordPressを始めたばかり。備忘録として書き込みます。

【Wordpress】カスタムタクソノミーを階層表示させるには

前回、カスタムタクソノミーの設定まで無事にできたのですが、表示に問題がありました。
前回記事はこちら>>

<?php echo get_the_term_list($post->ID, タクソノミーのslug, 'タクソノミーの前に表示する文字', ' タクソノミーの区切り文字', 'タクソノミーの後ろに表示する文字'); ?>

上記コードだと、親子関係を無視して記事に設定されたタクソノミーを表示してしまいます。

そこで、各記事に親1つ、子1つの設定を前提として、親(リンク付)>子(リンク付)と表示するコードを考えました。

カスタムタクソノミーを親子に分けて表示

「get_the_term_list()」を使うとリンク付で一覧を取得できますが、階層表示するには「 get_the_terms()」を使います。
こちらはリンクなしなので、別途リンクURLを取得します。

<?php
$terms = get_the_terms( $post -> ID, 'test' );//記事のタクソノミー情報を取得
$count = count($terms);//タクソノミーの個数カウント
if($count>0){
foreach ( $terms as $term ) {
$termparent = $term -> parent; //親のid取得(親がない場合すなわち自分が親の場合は0)
$termlink = get_term_link( $term, $taxonomy );//リンクURL取得
if($termparent==0){//親がない場合(つまり自分が親)
$parentname = $term -> name;//タクソノミー名取得
$parentlink = $termlink;//リンク取得
}else{//親がいる場合(つまり自分は子)
$childname = $term -> name;
$childlink = $termlink;
}
}
echo '<a href="' . esc_url( $parentlink ) . '">' .$parentname . '</a>'." > ".'<a href="' . esc_url( $childlink ) . '">' .$childname. '</a>';
}
?>

上記コードは親子の設定がそれぞれ複数の場合、idの大きい方(新しい方かな?)が表示されます。
どんなにたくさん設定しても、「親1つ(リンク付)>子1つ(リンク付)」の表示です。
複数表示する場合は違う方法を考えないといけないですね。