List Pages at Depth


This plugin creates a more powerful version of the wp_list_pages() function which allows you to specify a start depth.

This means you can easily display secondary and tertiary navigation seperately from the primary navigation on your site.

The list_pages_at_depth function accepts all the same arguments as wp_list_pages, but has an additional argument called ‘startdepth’. Set this to be 0 to display primary navigation, 1 for secondary navigation etc.

If you want to display secondary navigation with indented tertiary navigation you can use this in conjunction with the depth argument – simply set startdepth to 1 and depth to 2.

<?php list_pages_at_depth(array('startdepth' => 1,'depth' => 1)); ?>

The plugin also features a widget so you can easily implement a page list in your sidebar.

Feedback and Support

Please leave comments with feedback below.
If you require support, it is best to post it in the Forum.

A little poll…

Would you like the 'startdepth' parameter to be added to wp_list_pages in WordPress core?

View Results

Loading ... Loading ...


insurance attorney Atlanta

36 thoughts on “List Pages at Depth

  1. hi thanx for this plugin, but it just works with the first navigation-level like:
    0,’depth’ => 1)); ?>

    the second level:
    1,’depth’ => 1)); ?>
    this doesn’t work and i can’t figure out why!?!

    i work with wordpress 2.9.2. any idea?

  2. Drew, you can’t see sub pages on category and archives pages because they don’t have subpages. I guess it would be a nice feature to add so that it can be used to show sub categories on category or archive pages?

    You can’t currently call subpages from another parent but I plan to add that at some point.

  3. Great plugin! Thank you!

    To help others, here’s the working code for how I was able to change the title to what I wanted (and to have it display inside a Header3 tag):

    1,’depth’ => 2, ‘title_li’ => ” . __(‘Replace This Text with Any Header You Like to Display:’) . ” )); ?>

    The above works.

    However I have found that an additional unclosed tag is somehow appearing in front of my Header3 in the code. I couldn’t figure out where it is generated from yet. But it makes my Header line display as a list itself also, which I’d like to remove. Any ideas?

  4. Fab plugin – I can’t find a single other sub menu plugin that allows you to choose the level at which the menu starts – plenty allow you to choose the level it stops at. Great for building dynamic contextual menus in a CMS layout (e.g level 1 in main menu, level 2 in sidebar).

    Very simple to use too.

    If you ever get the chance please update it to go with the latest version of WordPress (though as noted above it appears to work fine with 3.1.4)

  5. Hello, the plugin works fine, but i have a question: Is it possible to display only the children-pages of the active parent-link? It shows now:
    Chapter 1
    – Child 1
    – Child 2
    – Child 3
    Chapter 2
    – Child 1
    – Child 2
    – Child 3

    But I want it to show like this (if Chapter 2 is active):
    Chapter 1
    Chapter 2
    – Child 1
    – Child 2
    – Child 3

    Is this possible with this plugin? If yes could you please tell me how?

  6. @mixmedia,

    You can do that by adding styles to your theme. Something bit like the following:

    ul.list-pages-at-depth ul {
    ul.list-pages-at-depth li.current_page_item > ul,
    ul.list-pages-at-depth li.current_page_ancestor > ul {
  7. Hi Ben,

    Just what I needed, thanks! One question, though: how can I change the text that says “Pages” in the displayed content? I’m not seeing that anywhere, even in the plugin code. Is there a parameter that I can use to dictate what it says there?


  8. Still using this plugin on almost every site I build. Left you a donation about a year ago, and leaving you another one now as this badboy’s been the right tool for the job yet again.

    Awesome, possum!

  9. I just found your plugin, installed it, and i’ve run into a problem with it.

    Here is what i am trying to do:

    My site structure is like this:

    Parent Page
    – Subpage01
    — Child 1
    — Child 2
    — Child 3
    – Subpage02
    — Child 1
    — Child 2
    — Child 3

    And so on. I’m trying to list only the child pages of the Parent Page. So i think my depth should be set to 3 and my startdepth should be 3 as well. That should show me only the child pages. Instead i get a blank page when i set the startdepth to value to 1. I tried start depth 2 and 3 as well and i get the same result.

    What am i doing wrong?

  10. i gave up on doing it with your plugin. I don’t know if it was something i was doing wrong or if maybe there is some small incompatibility with latest version of the wordpress. I’m still interested in seeing if your plugin works, for now i am using tags2pages to get at the third tier pages.

  11. I’m using the new Menu system in 3.3.1 and noticed that the plugin is not pulling from that structure but rather using wp_list_page(). I’m wondering if there’s any plan to update the plugin or if anyone can provide another solution. Thanks

  12. ‘startdepth’ is used to specify at what depth you would like to start displaying a list.
    Th nav will only show if the page you are viewing is the same level or deeper than the startdepth,
    So for example if you had a complex nav structure like this, and I am on page Level 3b1b:

    – Level 1
    – Level 2
    — Level 3a
    — Level 3a1
    — Level 3a2
    — Level 3b
    — Level 3b1
    —- Level 3b1a
    —- **Level 3b1b**
    — Level 3b2
    — Level 3c
    – Level 3

    If you specify a startdepth of 0, the entire nav will show.

    If you specify a startdepth of 1, it will display:

    – Level 3a
    — Level 3a1
    — Level 3a2
    – Level 3b
    — Level 3b1
    — Level 3b1a
    — **Level 3b1b**
    — Level 3b2
    – Level 3c

    If you specify a startdepth of 2, it will display:

    – Level 3b1
    — Level 3b1a
    — **Level 3b1b**
    – Level 3b2

    If you specify a startdepth of 3, it will display:

    – Level 3b1a
    – **Level 3b1b**

  13. Hey Ben,

    awesome plugin.
    I get the whole idea behind the depth, but I have one problem, on a page I want to display only Level 2 and at another point on the same page I want to display only Level 3.

    Like this:

    But the page won’t give out my Level 3.
    It will only display my Level 2 and when I go on a level 2 page it will display Level 3 aswell, but I need it before ;)


  14. Matt,

    It can only display level 3 if you are on a level 2 page as otherwise it doesn’t know which level 3 to show.

    For example, if you have 3 pages at level 2 all with child pages, if you are not on one of those level 2 pages it would not know which children to show at level 3.


Leave a Reply

Your email address will not be published. Required fields are marked *