WordPress.org

Ready to get started?Download WordPress

Forums

Pages & Subpages - Please help (11 posts)

  1. djmccabe
    Member
    Posted 6 years ago #

    First thanks for taking the time to look at this, I really need some specific help on this.

    I am creating a corporate website, just using WordPress as the CMS if you like to make it easy for the company to edit pages etc. So I am not using the "blog" posts and only using pages.

    I want it so in the sidebar the "Parent Pages" are listed, then when you click the parent page it takes you to page, but the menu on the sidebar lists the "Child Pages" underneath the parent page.

    I have been trying to work this out for about 2 hours, by reading the codex (http://codex.wordpress.org/wp_list_pages) but to no real avail.

    Here's how it looks so far: http://img153.imageshack.us/img153/6074/menusuk2.jpg
    (note the style for the parent and child pages should be the same, but I haven't looked at that yet)

    And here's the code:

    <div id="sidebar">
    	<ul class="pagenav">
    		<li><h2>Navigation</h2></li>
    	    <?php wp_list_pages('sort_column=menu_order&depth=0&title_li='); ?>
    		<li class="pagenav">
  2. djmccabe
    Member
    Posted 6 years ago #

    Ok so a little more tinkering and I am close...

    <?php wp_list_pages('include=18&sort_column=menu_order&depth=0&title_li=');
    			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 && $post->ID == 18) { ?>
    				<ul>
    					<?php echo $children; ?>
    				</ul>
    		<?php } ?>
    
    		<!-- Contracts -->
    	    <?php wp_list_pages('include=25&sort_column=menu_order&depth=0&title_li=');
    			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 && $post->ID == 25) { ?>
    				<ul>
    					<?php echo $children; ?>
    				</ul>
    		<?php } ?>
    
    		<!-- Civil Engineering -->
    	    <?php wp_list_pages('include=5&sort_column=menu_order&depth=0&title_li=');
    			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 && $post->ID == 5) { ?>
    				<ul>
    					<?php echo $children; ?>
    				</ul>
    		<?php } ?>		
    
    		<!-- Rouse Homes -->
    	    <?php wp_list_pages('include=8&sort_column=menu_order&depth=0&title_li=');
    			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 && $post->ID == 8) { ?>
    				<ul>
    					<?php echo $children; ?>
    				</ul>
    		<?php } ?>			
    
    		<!-- Plant Sales -->
    	    <?php wp_list_pages('include=10&sort_column=menu_order&depth=0&title_li=');
    			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 && $post->ID == 10) { ?>
    				<ul>
    					<?php echo $children; ?>
    				</ul>
    		<?php } ?>
    
    		<!-- Jobs at K Rouse -->
    	    <?php wp_list_pages('include=14&sort_column=menu_order&depth=0&title_li=');
    			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 && $post->ID == 14) { ?>
    				<ul>
    					<?php echo $children; ?>
    				</ul>
    		<?php } ?>

    However now the sud pages disappear once you go in to one of the sub pages.

    I know it is probably because I have put the "&& $post->ID == XX" in the statement, but this is needed so it only displays the subpage of the current parent page. I cant think of an elegant way round it.

  3. djmccabe
    Member
    Posted 6 years ago #

    8 hour bump

  4. kvnthng
    Member
    Posted 6 years ago #

    hey djmccabe

    ive just used this plugin:

    http://wordpress.org/extend/plugins/sps-suite-121/

    only parent links are visible until you go into that section then the child links for it appear...

    hope this helps

    :K

  5. djmccabe
    Member
    Posted 6 years ago #

    Thanks for the plugin Kvnthng!

    However I think I must be a bit slow or something, as I just dont get it.

    I have installed the plugin, activated it and can see that changing certain things, changes my sider bar, but I dont see anything that makes it work as I was hoping.

    Just in case let me explain again:

    Siderbar should be like this

    Parent Page 1
    Parent Page 2
    Parent Page 3

    Then when click in to Parent Page 1 it would look like this:

    Parent Page 1
    --Child Page 1.1
    --Child Page 1.2
    --Child Page 1.3
    Parent Page 2
    Parent Page 3

    And so on.

    Maybe I have something very basic wrong in the config of my wordpress site?

  6. kvnthng
    Member
    Posted 6 years ago #

    Thats what it does...

    cant check it as i have just upgraded to the new version of WP Mu and it automatically does it... sorry!

    (the latest version of WP may do it too!)

    good luck!

  7. Kalessin
    Member
    Posted 6 years ago #

    This is the plugin I use. It's simple and does exactly what you want. You just have to activate it and use the custom page list function <?php wswwpx_fold_page_list(); ?> but the arguments are the same as for wp_list_pages().

    http://www.webspaceworks.com/resources/wordpress/30/

  8. syncbox
    Member
    Posted 6 years ago #

    The simple way to do this is to build page templates, then you could include a different sidebar for each section and only use:

    <?php
    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 } ?>

    for the actual nav section for each particular include. So, for example, the sidebar for page 3 might look like (simple example)

    page 1 (wp_list_pages('include=1')
    page 2 (wp_list_pages('include=2')
    page 3 (wp_list_pages('include=3')
    (include code for subpages here)
    page 4 (wp_list_pages('include=4')

    does that make sense? The code above shows the child pages even if on a child page and there's no conditionals required to manage WHICH of the main buttons has a sub-nav because only ONE is available in any sidebar. The choice of page template controls which sidebar has it.

    HTH

  9. jkoon
    Member
    Posted 6 years ago #

    i have created sites that use the exact code that syncbox provided in the past. i am working on creating a new site for a client using this method as well and it is not working in wp2.5. can anyone confirm that this does/does not work in wp2.5 and perhaps give some suggestions on a workaround?

    thanks!

  10. Kim Parsell
    Volunteer Moderator
    Posted 6 years ago #

    I have also just tried using the code that syncbox provided, and it is not working in WP 2.6.1.

    Any ideas?

    Thanks in advance!

  11. smoo
    Member
    Posted 5 years ago #

    Thank you Kalessin!
    I've been trying for 2 days to find out how to make this work like this.
    I am now a very happy bunny!

Topic Closed

This topic has been closed to new replies.

About this Topic