サポート » 使い方全般 » 子ターム名のみ表示したい

  • 解決済 honeycreate

    (@honeycreate)


    タクソノミー area

    親ターム
     関東

    子ターム
     東京都
     神奈川県

    というようなタクソノミーを設定しています。

    <?php the_terms( $post->ID, 'area' ); ?>

    で親タームと子タームを表示していますが、
    子タームだけの表示に変更したいです。

    なかなか解決方法が見つからず困っております。
    どうぞよろしくお願いいたします。

8件の返信を表示中 - 1 - 8件目 (全8件中)
  • こんにちは

    子タームとは「東京都」「神奈川県」のことですよね(間違えていたらごめんなさい)。
    この場合は下記のコードでどうでしょうか。

    テンプレート等に

    <?php
    $child_term = get_term_by( 'name' , '子ターム' , 'area' );
    if ( $child_term ) {
    	$terms = get_the_terms( $post->ID, 'area' );
    	echo '<ul>';
    	foreach ( $terms as $term ) {
    		if ( $term->parent == $child_term->term_id ) {
    			echo '<li><a href="' . get_term_link( $term->slug, $term->taxonomy ) . '">'. $term->name . '</a></li>';
    		}
    	}
    	echo '</ul>' . "\n";
    }
    ?>

    ご回答ありがとうございます!
    はい。
    子タームは「東京都」「神奈川県」のことです。

    投稿記事のカテゴリ(ターム)で神奈川県、関東にチェックを入れると、
    神奈川県,関東
    と表示されているのですが、
    それを、
    神奈川県、関東にチェックを入れても
    子タームの
    神奈川県
    だけ表示したいのです。。

    お教えいただいたコードでは表示されませんでした。。

    結構複雑そうでしたら
    新しくカスタムフィールドを設定して県名を入力して表示させようかなとも考えてます。

    どうぞよろしくお願いいたします。

    おかしいですね。当方で検証してみましたが表示されます・・・。

    確認ですが、

    $child_term = get_term_by( 'name' , '子ターム' , 'area' );

    の ‘子ターム’ は実際の子タームのカテゴリー名(スラッグ名ではない)を設定していますか?
    また、’area’ は実際のタクソノミー名を設定していますか?

    ‘子ターム’ は実際の子タームのカテゴリー名(スラッグ名ではない)を設定していますか?

    →こちらがよくわからなかったのですが、「神奈川県」や「東京都」ということでしょうか??

    あっ!
    関東と入れたら表示できました!
    親タームの名前を入れたらいいんですね!

    カテゴリーの階層は下記のような階層を想定していましたが違うのかな?

    親ターム
     関東
    子ターム
     東京都
     神奈川県

    もし、

    関東
     東京都
     神奈川県

    のような階層の場合(関東がトップ階層の場合を想定)は、下記のコードになります。

    <?php
    $terms = get_the_terms( $post->ID, 'area' );
    echo '<ul>';
    foreach ( $terms as $term ) {
    	if ( $term->parent != 0 ) {
    		echo '<li><a href="' . get_term_link( $term->slug, $term->taxonomy ) . '">'. $term->name . '</a></li>';
    	}
    }
    echo '</ul>';
    ?>

    まさしくそれです!
    このコードでできました!!
    説明がわかりづらくお手数おかけしました。

    私の拙い説明で、読み解いていただきありがとうございましたm_ _m

    解決してよかったです(「解決済み」にしてくださいね)

    なんか勘違いしてしまいました。素直に読めばそのままでしたね。
    (素直じゃなくてごめんなさい)

8件の返信を表示中 - 1 - 8件目 (全8件中)
  • トピック「子ターム名のみ表示したい」には新たに返信することはできません。