Support » Fixing WordPress » Parent/Children Navigation

  • Hi there,

    In my sidebar I want to list child pages of the current page. Therefore I am checking to see whether a page is a subpage or not using the code here:

    The problem is, is that if a page is a sub page and also has sub pages then it only returns as being a sub page and not a parent of other pages.

    Basically I want it so that when you click on a page the sidebar shows any subpages. If there are no sub pages at the top level then nothing shows. If there are subpages it shows them. If one of these sub pages is clicked on and also has sub pages then the sub pages are shown. If it doesn’t then other pages at the same level are shown.

    Anyone any ideas?

Viewing 5 replies - 1 through 5 (of 5 total)
  • Having read that back you may struggle to understand so here it is a different way. Below if what I want to do in English! Just need this translating into PHP / WordPress functions etc.

    If current page is a top level page
    Does current page have child pages?
    Display children
    Do nothing
    Does current page have child pages?
    Display children
    Display parent page and other pages at the same level as parents
    End if

    Hope that helps

    Ok I have now managed to use this code to check what page I am on (parent or sub page):

    <?php global $post; if ( is_page() && $post->post_parent ) { ?>
     <!-- is a sub page -->
            <p>I am a sub page</p>
     <?php } else { ?>
     <!-- not a subpage -->
        	<p>I am a parent Page</p>
    <?php } ?>

    The only problem is, is that if a page is both a parent to some child pages and a sub page of a parent it only returns that it is a sub page. How could I modify this?

    I think I need something where it says “I am a sub page” that check to see if there are any children. How can I check to see if the page has children?

    This sounds so easy yet is proving so hard 🙁

    This code:

    works but only if have only 2 levels i.e. parent and child and not parent > child > grandchild.

    Anyone any solutions?

    Actually I think I can do what I want if someone could help me with a simple if else statement to check whether a page has any children. Something like:

    If has children > echo ‘has children’
    else echo ‘no children’


    I’m still working on mine, but I think I’ve got something along what you need.
    Mine is simply creating a menu structure, but I don’t know if wordpress has a way to test for current page (I thought I saw something somewhere along those lines), otherwise use of CSS and Javascript should allow you to hide or display.

    This code does display children only under their appropriate parents. I haven’t yet tested grandchildren, but that should/would be just a matter of duplicating the $children = get_pages and the subsequent conditional statement (placing the duplicated code inside the current children conditional statement / foreach loop).

    	    $include_page_ids = array('3','5','7','9','19','11','13'); //also the order of appearance
    	    for ($i = 0;$i < count($include_page_ids);$i++) {
    		$args = array('title_li'=>'','include' => $include_page_ids[$i]);
    		wp_list_pages( $args );
    		echo "<span class='zp-delimit'>|</span>";
    		$children = get_pages('child_of='.$include_page_ids[$i]);
     		if (count($children) > 0) {
    		    $sub = "<ul class='childul'>";
    		    foreach ($children as $child){
    			$sub .= "<li><a href='".get_page_link($child->ID)."'>";
    			$sub .= $child->post_title;
    			$sub .= "</a></li>";
    		    $sub .="</ul>";
    		    echo $sub;
Viewing 5 replies - 1 through 5 (of 5 total)
  • The topic ‘Parent/Children Navigation’ is closed to new replies.