サポート » 使い方全般 » pageで子、孫のリンクを表示させたい。

  • 解決済 takacello

    (@takacello)


    こんにちは。

    A配下のpageを閲覧している際にA配下のみのリンクツリーを表示させたいと思っております。

    A、Bは固定的に表示させており、B(=A配下ではない)の時はAA、aaa、aabは表示させません。A、AA、aaa、aabの時は以下のように表示させたいと思っております。

    ・A
     ├・AA
     │  ├・aaa
     │  ├・aab
    ・B

    codexを参考にして作ったのですが、以下のコードですとA、AAの時はいいのですがaaa、aabの時はAとBだけになってしまいます。親までは探しに行ってるけど親の親は探していないからだというのは想像がついています。仮りにAのpageのidは10とします。

    <?php
    if ( is_page( 'A' ) || '10' == $post->post_parent ) {
      if($post->post_parent)
      $children = wp_list_pages("title_li=&child_of=".$post->post_parent."&echo=0");
      else
      $children = wp_list_pages("title_li=&child_of=".$post->ID."&echo=0");
      if ($children) { ?>
      <ul>
      <?php echo $children; ?>
      </ul>
      <?php } ?>
    <?php } ?>

    他の方法も模索したりこちらのサイトも参考にしましたが3階層の処理方法がわかりませんでした。

    他に考えたのはメニュー機能を使ってAA、aaa、aabの2階層メニューを作りzzzとしてみましたがこちらも同じ動きになります(そうだろうなとは思いましたが)。

    <?php
    if (is_page( 'A' ) || '10' == $post->post_parent ) {
       wp_nav_menu( array('menu' => 'zzz' ));}
    ?>

    どなたか3階層表示の方法を教えていただけないでしょうか。

    ちなみに下のコードの方がすっきりしているのでこちらを使ってみられたらいいと思っています。実現したらどちらでも構いませんが。

    よろしくお願いします。

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

    (@gatespace)

    こんにちは
    フォーラムの以下を参考にしてみて下さい。

    選択ページの一番上の親のID取得方法
    http://ja.forums.wordpress.org/topic/1056

    トピック投稿者 takacello

    (@takacello)

    <?php /*もしページの所属が三階層目だったら*/ ?>
    <?php if($post->post_parent && get_page($post->post_parent)->post_parent):?>
        <?php
                $grand_parent_id = get_page($post->post_parent)->post_parent;
                $parent_siblings =
                wp_list_pages("title_li=&child_of=".$grand_parent_id."&echo=0&depth=2");
        ?>
    	       <ul><?php echo $parent_siblings;?></ul>
    	<?php endif;?>
    	<?php /*もしページの所属が2階層目か、親だったら*/ ?>
    	<?php if ( is_page( '親Pageのパーマリンク名' ) || '親PageのID' == $post->post_parent ) :?>
    	    <?php if($post->post_parent):?>
    	    <?php /* 2階層の時*/ ?>
    	        <ul><?php echo $children = wp_list_pages("title_li=&child_of=18&echo=0&depth=2");?></ul>
    	    <?php else:?>
    	    <?php /* 1階層の時*/ ?>
    	        <ul><?php echo   $children = wp_list_pages("title_li=&child_of=".$post->ID."&echo=0");?></ul>
    	    <?php endif;?>
    <?php endif;?>
2件の返信を表示中 - 1 - 2件目 (全2件中)
  • トピック「pageで子、孫のリンクを表示させたい。」には新たに返信することはできません。