• Hultner

    (@hultner)


    Okay so it’s been over a year since I made a WordPress theme and now I’ve started again but I’ve run into a problem with my menu on pages.

    This is my current page hierarchy (I’m still only testing hence the names)

    EDIT: Multi level UL->LI didn’t work so well here so I’ll just show you with * meaning child and **meaning grandchild

    Home
    
    This page
    	*Child 1
    		**Grandchild 1
    		**Grandchild 2
    	*Child 2
    		**Grandchild 3
    		**Grandchild 4
    		**Grandchild 5
    	*Child 3
    		**Grandchild 6
    
    Another page

    Now when I visit “This page” I want to show a link to “This page” (current) and all the direct childs (no grandchildren here) of “This page” like in this sketch: https://img840.imageshack.us/img840/3006/thispage.png

    Now when i visit a “Child 1” of “This page” I want to show everything from above menu and all childs of “Child 1” (Grandchild 1 & 2) in a sub ul under “Child 1” like in this sketch: https://img4.imageshack.us/img4/7868/child1.png

    And now when I visit “Grandchild 1” I want to show the same menu as I did for “Child 1” only with “Grandchild 1” as current item instead like in this sketch: https://img819.imageshack.us/img819/1633/grandchild1.png

    This is my current code based on the example in the codex for a slightly other type of menu but it isn’t working very well and absolutely not well for the godchildren.

    <?php
    if($post->post_parent){
    	$children = wp_list_pages("title_li=&include=".$post->post_parent."&echo=0");
    	$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) { ?>
    	<div class="page-menu">
    	<ul>
    	<?php echo $children; ?>
    	</ul>
    	</div>
    <?php } ?>

    My plan is to have the menu as a sidebar on my page as you can see in the sketches.

  • The topic ‘List page menu with children and grandchildren’ is closed to new replies.