サポート » 使い方全般 » 階層化しているタグページにパンくずを表示したい

  • mmm_squirrel

    (@mmm_squirrel)


    お世話になっております。
    オリジナルテーマを使っております。

    タグページにてパンくずを

    親タグの場合は
     HOME >親タグ

    子タグの場合は
     HOME >親タグ >子タグ

    孫タグの場合は
     HOME >親タグ >子タグ >孫タグ

    のように表示したいです。

    https://ja.forums.wordpress.org/topic/10840?replies=3
    上記を参考にさせて頂いただいたのですが

    <?php
    $oyaterm = array_pop(get_the_terms($post->ID, 'post_tag'));
    $term_p = $current_tag->parent;
    if ( ! $term_p == 0 ){
    /* 子の場合 */
        $oyaterm = array_shift(get_the_terms($post->ID, 'post_tag'));
    
    echo '<a href="/tag/' . $oyaterm->slug . '">' . esc_html($oyaterm->name) .
    '</a>'
    ?>
     >
    <?php $term = $wp_query->queried_object;
    echo esc_attr($term->name); ?>
    <?php
    } elseif {
    /* 孫の場合 どうしたらいいのか分かりません*/
     }
     else {
    /* 親の場合 */
    single_tag_title();
     } ?>

    子タグの時に親タグが空になってしまいます。
    また、孫タグをだしたい時はどのようにすればいいのでしょうか?
    そもそも、この書き方が正しいのかも分からない状況です。

    ご教示頂けますと幸いです。
    よろしくお願いいたします。

3件の返信を表示中 - 1 - 3件目 (全3件中)
  • タグに階層構造はなく、親子関係は存在しないはずなのですが…?

    https://github.com/WordPress/WordPress/blob/4.3-branch/wp-includes/taxonomy.php#L69

    なので、

    $oyaterm = array_pop(get_the_terms($post->ID, 'post_tag'));
    $term_p = $current_tag->parent;

    ($current_tag$oyaterm の誤りであるとするなら) $term_p は、おそらく常に0 になります。

    以下、PHP構文上のお話ですが、

    if ( ! $term_p == 0 ){

    $term_p0 でない場合、ということを検証したいのであれば、

    if ( $term_p != 0 ){

    が普通かな、と思いました。

    PHP: 比較演算子 – Manual
    PHP: 論理演算子 – Manual

    トピック投稿者 mmm_squirrel

    (@mmm_squirrel)

    mimosafaさま

    >タグに階層構造はなく、親子関係は存在しないはずなのですが…?

    説明不足で申し訳ありません。
    下記を参考にさせてもらい、tagをhierarchicalに変更しています。
    https://ja.forums.wordpress.org/topic/31140?replies=2

    >($current_tag が $oyaterm の誤りであるとするなら) $term_p は、おそらく常に0 になります。

    思った結果がでず、
    いじりまわしてたので誤りのあるコードで申し訳ないです。。。

    演算子について教えていただきありがとうございます!
    勉強してみます。

    関数リファレンス/get ancestors – WordPress Codex 日本語版

    上記関数を使えば得られた配列を元に実装できるのではないでしょうか。
    タグを階層化している、という汎用性のない状況なのでこの程度で。

3件の返信を表示中 - 1 - 3件目 (全3件中)
  • トピック「階層化しているタグページにパンくずを表示したい」には新たに返信することはできません。