サポート » 使い方全般 » 最下層で、その上の親+同階層のメニューを表示させる方法

  • 解決済 miu9001

    (@miu9001)


    はじめまして!
    今回フォーラムをひたすら検索し、真似をしても上手く行かなかったので、
    知恵をお借りしたいと思い投稿いたしました。

    サイドバーにサブメニューリストを作成しようと思っております。

    ■今作っているサイトの構成
    ———————————–
    親ページA
    親ページB
    -子ページB-1
    -子ページB-2
    親ページC
    -子ページC-1
    --孫ページC-1-1
    --孫ページC-1-2
    -子ページC-2
    --孫ページC-2-1
    --孫ページC-2-2
    -子ページC-3
    --孫ページC-3-1
    --孫ページC-3-2
    ---曾孫ページC-3-2-1
    ---曾孫ページC-3-2-2
    --孫ページC-3-3
    親ページD
    親ページE
    ———————————–

    以下の様な挙動にしたいと思っています。

    ■親ページAを表示中・・・非表示
    ■親ページBを表示中・・・
    親ページB
    子ページB-1
    子ページB-2

    ■子ページB-1を表示中・・・
    親ページB
    子ページB-1
    子ページB-2

    ■親ページCを表示中・・・
    親ページC
    子ページC-1
    子ページC-2
    子ページC-3

    ■子ページC-1を表示中・・・
    子ページC-1
    孫ページC-1-1
    孫ページC-1-2

    ■子ページC-3を表示中・・・
    子ページC-3
    孫ページC-3-1
    孫ページC-3-2
    孫ページC-3-3

    ■孫ページC-3-1を表示中・・・
    子ページC-3
    孫ページC-3-1
    孫ページC-3-2
    孫ページC-3-3

    ■孫ページC-3-2を表示中・・・
    孫ページC-3-2
    曾孫ページC-3-2-1
    曾孫ページC-3-2-2

    ■曾孫ページC-3-2-1を表示中・・・
    孫ページC-3-2
    曾孫ページC-3-2-1
    曾孫ページC-3-2-2

    という具合に、親となるもののページの同階層は表示せず、
    下に進んでいくような感じのメニューが理想です。

    検索をして一番近くまで再現されたのが下記でした。
    ———————————–
    <div class=”submenu”>
    <?php
    global $wp_query;
    if( empty($wp_query->post->post_children) ) {
    $parent = $wp_query->post->ID;
    } else {
    $parent = $wp_query->post->post_children;
    } ?>
    <?php if(wp_list_pages(“title_li=&child_of=$parent&echo=0” )): ?>
    <h2>
    <?php
    $parent_title = get_the_title($parent);
    echo $parent_title;
    ?>
    </h2>

      <?php wp_list_pages(“title_li=&child_of=$parent&depth=1” ); ?>

    <?php endif; ?>
    </div>
    ———————————–

    これだと一番深い階層まで行った時に、表示されなくなってしまいます。
    最後の層では、その上の親と、同階層のメニューを表示させたいのです。

    すみませんが、ご教示いただければ幸いです。

3件の返信を表示中 - 1 - 3件目 (全3件中)
  • モデレーター jim912

    (@jim912)

    $parent の条件分岐がおかしいです。
    post_children というプロパティは存在しませんので、ここの条件分岐では、常に最初のコードが適用されてしまいます。

    get_chirdren を使い、子ページがあった場合には、$post->ID を 子ページがなく、$post->post_parent が 0 でない時には $post->post_parentを、それ以外の場合には、$post->ID が $parent に代入されるようにすればよいのではと思います。

    ご返信ありがとうございました!

    ちなみに、具体的にどう記述すれば良いのでしょうか。

    すみません。。まだカンペキに分岐を把握できていなくて・・・

    お手数ですが、教えていただけると助かります。

    すみません、なんとか手探りで解決いたしました。
    ありがとうございました。

3件の返信を表示中 - 1 - 3件目 (全3件中)
  • トピック「最下層で、その上の親+同階層のメニューを表示させる方法」には新たに返信することはできません。