サポート » テーマ » 子ページのリスト表示

  • 解決済 igarashi5620

    (@igarashi5620)


    お世話になります。
    以前にも似たような質問しましたが、
    下記のコードを「functions.php」 に入れてをページ毎に「<?php wp_list_pages_tree2($post); ?>
    」使用して子ページのリスト表示を実現しています。
    ですが、下記のとおり

    「サブサービス1」をクリックすると、クリック後のとおり他のページのボタンが表示されなくなります。クリックした後も他のページのボタンも表示したままにしたいのですが、
    ご指導をお願いします。

    ■クリック前
    サービス(親ページ)
    -サブサービス1(子ページ)
    -サブサービス2(子ページ)
    -サブサービス3(子ページ)

    ■クリック後
    サービス(親ページ)
    -サブサービス1(子ページ)

    function wp_list_pages_tree2($post){
    	if(is_page()){
    		$list = $post->ancestors;
    		$parent['list'] = array_reverse($list);
    		$parent['cnt']  = count($list);
    		$parent['top']  = array_pop($list);
    
    		$page_list = get_pages('parent=0&sort_column=menu_order');
    		foreach($page_list as $id){
    			echo ''."\n";
    			if($id->ID == $post->ID){
    				echo "<ul>\n";
    				wp_list_pages('depth=1&title_li=&child_of=' . $post->ID );
    				echo "</ul>\n";
    			}
    			if($id->ID == $parent['top']){
    				$pointer = $parent['list'];
    				$cnt = 0;
    				while($buf = next($pointer)){;
    					echo '<ul>'."\n";
    					echo '<li><a href="'.get_permalink($buf).'">'.get_the_title($buf).'</a>'."\n";
    					$cnt++;
    				}
    				echo '<ul><li><a href="'.get_permalink($post->ID).'">'.get_the_title($post->ID).'</a>'."\n";
    				echo "<ul>\n";
    				wp_list_pages('depth=1&title_li=&child_of=' . $post->ID );
    				echo "</ul>\n";
    				for($i=0;$i<$cnt;$i++){
    					echo '</li></ul>'."\n";
    				}
    				echo '</li></ul>'."\n";
    
    			}
    			echo "\n";
    		}
    	}
    	else{
    		wp_list_pages('depth=1&title_li=');
    	}
    }
2件の返信を表示中 - 1 - 2件目 (全2件中)
  • そんなに長いコード書かなくても

    $parent = get_post_ancestors( $post );
    $children = wp_list_pages("title_li=&include=".$post->post_parent."child_of=".$post->post_parent."&echo=0");
    
    echo $children;

    このくらいでいけないですかね?(未検証)

    トピック投稿者 igarashi5620

    (@igarashi5620)

    kvex さん

    ありがとうございました。
    解決できました。

2件の返信を表示中 - 1 - 2件目 (全2件中)
  • トピック「子ページのリスト表示」には新たに返信することはできません。