サポート » テーマ » 固定ページのローカルナビを子があるかないかで分岐

  • 解決済 robocon150

    (@robocon150)



    固定ページにローカルナビ(子の一覧)をつけたいと思い、下記のコードを書いています。

    
    <?php
      if ( $post->post_parent) {
        $parents_num = count( $post->ancestors );
        $root_id = $post->ancestors [$parents_num - 1];
      } else {
        $root_id = $post->ID;
      }
    ?>
    <aside class="local-nav">
    <ul class="local-nav-menu">
    <?php wp_list_pages(
      array(
        'title_li' => '',
        'include' => $root_id,
      )
    );
    wp_list_pages (
     array(
        'title_li' => '',
        'child_of' => $root_id,
      )
    );
    ?>
    </ul>
    </aside>
    

    これでローカルナビを表示できているのですが、
    一つも子がない親ページの場合は、下記のラッパー部分は非表示にしたいと思っています。
    <aside class=”local-nav”>
    <ul class=”local-nav-menu”>

    </aside>
    条件分岐でできると思うのですが、どのように書けばいいか分かりません。。
    もしお分かりの方がいれば教えていただけないでしょうか?

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

    子の wp_list_pages の出力の有無で判定するのはどうでしょうか。

    <?php
    $child_list = wp_list_pages (
      array(
        'title_li' => '',
        'child_of' => $root_id,
        'echo' => true,
      )
    );
    if ( $child_list ):
    ?>
    <aside class="local-nav">
    <ul class="local-nav-menu">
    <?php wp_list_pages(
      array(
        'title_li' => '',
        'include' => $root_id,
      )
    );
    echo $child_list;
    ?>
    </ul>
    </aside>
    <?php endif; ?>

    ishitaka様

    さっそくありがとうございます!
    ご指定のコードでやってみました↓

    
    <?php
      if ( $post->post_parent) {
        $parents_num = count( $post->ancestors );
        $root_id = $post->ancestors [$parents_num - 1];
      } else {
        $root_id = $post->ID;
      }
    ?>
    <?php
    $child_list = wp_list_pages (
      array(
        'title_li' => '',
        'child_of' => $root_id,
        'echo' => true,
      )
    );
    if ( $child_list ):
    ?>
    <aside class="local-nav">
    <ul class="local-nav-menu">
    <?php wp_list_pages(
      array(
        'title_li' => '',
        'include' => $root_id,
      )
    );
    echo $child_list;
    ?>
    </ul>
    </aside>
    <?php endif; ?>
    

    確かに子がないページでは非表示なったのですが、
    子があるページでもラッパー部分がなくなり、
    liタグだけになってしまいました。
    なぜなんでしょうか・・??

    
    <li></li>
    <li></li>
    <li></li>
    

    あっ、間違えました。

    'echo' => true,

    'echo' => false,

    ですね。失礼しました。

    ishitaka様

    ご指定の箇所を修正したら、意図通りに表示されました!

    この度は迅速なご回答、誠にありがとうございました!!
    感謝いたします。

    • この返信は2 ヶ月、 1 週前に  robocon150 さんが編集しました。
4件の返信を表示中 - 1 - 4件目 (全4件中)
  • このトピックに返信するにはログインが必要です。