Page and Sub-page Menus In Wordpress

Written by Chris on September 17, 2007 – 6:52 pm -

Recently I wanted to change the theme I use on my personal blog to the following: http://www.wpdesigner.com/2007/01/22/digg-3-columns-wordpress-theme/ as the current one I was using was pretty awful (to say the least) and this was a lot better :)

I liked this theme but unfortunately it lacked one thing (as do a lot of other themes I've used) - an auto generating set of page menu tabs at the top. The default theme just had a link to the home and about pages, so I added this in and it now works exactly the way I wanted it to. I've pasted the code below should you wish to do something similar.

This mod basically creates a list of all the parent pages along the top (which are rendered as tabs due to the css), and then when a link of a parent page is clicked, it displays the home tab, the tab for the parent page and then the list of tabs for the sub pages of that parent page.

On my site so far I only have one level of sub pages below the parent, but I believe this should work for any hierarchy of sub-sub pages - if you use this code and it does please post a comment to let me know.

Also this is a bit rough - the next time I use it I will probably clean it up a bit, but I know it works for now. If you'd like to provide me with a cleaner version before I have chance to work on it please feel free to drop me a line, and if it works I'll also post it here.

  1.  
  2. <div id="header">
  3.  
  4.         <div id="menu">
  5.                 <ul>
  6.                         <li><a href="<?php bloginfo('url'); ?>/" title="<?php bloginfo('name'); ?>"><?php _e('Home'); ?></a></li>
  7.  
  8.  
  9. <?php
  10.  
  11. // From http://codex.wordpress.org/Template_Tags/wp_list_pages
  12.  
  13. $defaults = array('depth' => 1,
  14.                   'show_date' => '',
  15.                   'date_format' => get_option('date_format'),
  16.                   'child_of' => 0,
  17.                   'exclude' => '2, 53',
  18.                   'title_li' => '',
  19.                   'echo' => 1,
  20.                   'authors' => '',
  21.                   'sort_column' => 'menu_order, post_title');
  22.  
  23. if($post->post_parent)
  24.     $children = wp_list_pages("title_li=&child_of=".$post->post_parent."&echo=0");
  25. else
  26.     $children = wp_list_pages('title_li=&child_of='.$post->ID.'&echo=0');
  27.  
  28. if ($children)
  29. {  
  30.     if(intval($post->post_parent)>0)
  31.     {
  32.         wp_list_pages('title_li=&include='.$post->post_parent);
  33.     }
  34.     else
  35.     {
  36. ?>
  37. <li><a href="<?php echo get_permalink($post->ID); ?>" title="<?php the_title(); ?>"><?php the_title();  ?></a></li>
  38. <?php        
  39.  
  40.  
  41.  
  42.     }
  43.     echo $children;
  44. }
  45. else
  46. {
  47. ?>
  48. <li><a href="<?php echo get_permalink(2); ?>" title="<?php _e('About'); ?>"><?php _e('About'); ?></a></li>
  49. <?php
  50. wp_list_pages($defaults);
  51. }
  52. ?>
  53.  
  54.                 </ul>
  55.         </div>
  56.  


Popularity: 18% [?]

Sphere: Related Content

Related posts on coderchris.com:

  1. Make Money With Wordpress And Matched.co.uk
    Everybody out there at the moment is trying to make money from their blog...
  2. Advanced Syntax-Hilighting Online Code Editors - A Wordpress IDE?
    When I write plugins for wordpress I like to do it on a test...
  3. Dodgy Wordpress Plugins and Themes
    Recently I have been doing a LOT of research into various wordpress themes and...
  4. Wordpress 2.5 Released!
    Version 2.5 of wordpress has been released and we have a nice new admin interface...
  5. Wordpress 2.3 has been released
    Wordpress 2.3 has been released and I can already see the improvements as I'm...


Tags: , , , , , ,
Posted in PHP, Wordpress | Trackback |

2 Comments to “Page and Sub-page Menus In Wordpress”

  1. Gruber Says:

    wow :)
    its very reasonable article.
    Good post.
    realy gj

    thank you ;)

  2. herve76 Says:

    Thank you for this information. :)

Leave a Comment

RSS