Simple Section Navigation is a WordPress plug-in that adds a widget for section based navigation. Easy to configure and essential for CMS implementations!

New version 2.1 added June 22, 2010 with better widget title control!

Download version 2.1 from the WordPress plugin repository »


Adds a widget to your sidebar for section (or top level page) based navigation. The title of the widget is the top level page within the current section. Shows all page siblings (except on the top level page), all parents and grandparents (and higher), the siblings of all parents and grandparents (up to top level page), and any immediate children of the current page. Can also be called by a function inside template files.

It includes a simple widget configuration panel. From this panel you can:

  1. Determine whether the section navigation widget should appear on the home page
  2. Override standard behavior and have the widget show all pages in the current section
  3. Determine whether the widget should appear even if the section only has one page (the top level)
  4. Provide a list of pages to exclude from the output
  5. Determine whether the section navigation should still appear when viewing excluded pages
  6. Use a specific widget title (i.e. In This Section), or just use the top level page title
  7. Determine whether the section title should be linked
  8. Determine page sort order (defaults to menu order)

The widget uses standard WordPress navigation classes, in addition to a unique class around the widget, for easy styling.

Compatible with WordPress MU. General installation instructions.

Upgrading from pre-2.0

Version 2.0 represents a major change to the plug-in’s internal architecture. Version 2 will attempt to seamlessly upgrade the old the widget, but you should document your current settings before upgrading to be safe. If you are calling it by a function in the template (not using the widget), you will be required to update your template, unless you were using the default settings. The function now has 1 parameter: arguments for the output of the widget, as detailed under installation instructions.


Calling section navigation inside template (without widget)

Function name: simple_section_nav()


  • show_all – Always show all pages in current section (default: false)
  • exclude – Page IDs, seperated by commas, of pages to exclude (default: ”)
  • hide_on_excluded – No navigation on excluded pages (default: true)
  • show_on_home – Show top level page list on home page (default: false)
  • show_empty – Output even if empty section (default: false)
  • sort_by – Page sort order; can use any WordPress page list sort value (default: menu_order)
  • title – Provide a specific widget title; default is the top level page title (default: ”)
  • a_heading – Link heading to the top level page (default: false)
  • before_widget – HTML before widget (default:
  • after_widget – HTML after widget (default:
  • before_title – HTML before widget (default:


  • after_title – HTML after widget (default: )
  • Example:

  • &after_widget=
  • &exclude=2&show_on_home=1');

    Will wrap the widget in LI tags, exclude page ID 2, and will output on home page.

    Additional Notes

    A full change log is available here.

    Possible future features based on demand:

    If you’re interested in the origins of this plugin and how it works under the hood, check out this blog post.

    As always, feedback and suggestions are welcome!

    139 Responses to “Simple Section Navigation (WordPress Plugin)”

    1. April says:

      Brilliant, thank you!!!! This has solved my problem with more than one type of custom wordpress navigation. A total blessing for me, who couldn’t entirely follow your article about get_post_ancestors but desperately needs page “sections”. Donation on the way!

    2. Karl says:

      Thanks for this, great that you’ve attempted to solve this and package it up as a widget! Good work.

      I’ve got a bit of an odd output though and I’m not sure if it’s meant to work this way or not, but I looks odd to me. If I output the widget and only show the sibling and children and I’m three levels down, I get this:


      So each level down gets output on top of the last one, and it’s all in a plain list of:


      with nothing to differentiate the levels. On the other hand, if I chose the option in the admin to “Show all pages in section”, I get a proper list:


      and so on. The problem then is that it outputs all the menus and I only want to output the grandparents, parents, siblings and children of current menu. But then I’m running into the problem above..

      Any info on this would be greatly appreciated!

    3. Jake Goldman says:

      Karl – I’m not entirely sure I follow. You’re saying if you’re three levels down (i.e. Top Level Page, Sub Page, Sub-Page of Sub-Page), that the navigation “flattens” instead of being in a hierarchy?

      That’s definitely not the expected output, and not what it’s doing in my test environments!

      Is there a link where I could see this in action? I may need to see “under the hood” of your own setup. The first that springs to mind is that there may be a conflicting plug-in… ?

    4. jardo says:

      thank you _so much_ for this, this is almost exactly what i wanted :) .

      let’s see if i can explain this properly.

      when we’re on a top level page with children, the plugin lists all children, obviously.

      now if we’re on a child page, the plugin lists all children of the parent page, including the child page we’re on _linking_ it basically to itself. i don’t think it’s good.

      i wish there was an option to configure the plugin to exclude this behavior.

      would this be possible? do you find it would be an important addition to the current functionality?

      again, thanks so much, you really made my day.

    5. April says:

      This may be obvious, but how do I keep the ’section’ nav item highlighted when on children and grandchildren pages?

    6. Jake Goldman says:

      April – Can you clarify the question? Are you asking how you differentiate a page that’s within the current hierarchy? So if you’re on a third level page, the second level page (its parent) should stand out?

      Assuming you’re looking for something along those lines, the answer is to use CSS. If you look at the HTML you’ll notice that the LI tags have a variety of classes (i.e. “current_page_ancestor”) that your stylesheet can reference to provide some emphasis or other differentiated styling.

    7. April says:

      Hmm, that’s the problem – for some reason my top level nav does not have the class “current_page_ancestor” applied to it when on it’s child/grandchild pages. For instance, on this page here on your site I see that “Software” does have that class, but on my site it does not even on the equivalent sub-sub-page. I’m not sure I setup the plugin call right even though it works like a charm in all other ways.

      I have set up my nav like so:

      Where the “toplevelnav” are the 4 sections, and supposed to be ancestors, and “nav” includes all of the pages and subpages underneath it.

      Do you see any obvious reasons that the ancestor class wouldn’t be applying to the “toplevelnav”?

    8. April says:

      oops, let me try that code again..

    9. April says:

      hmm.. code tags?

    10. April says:

      Never mind my highlighting question afterall! I ended up styling the top level ‘Section’ nav using conditional tags instead.

    11. Jake Goldman says:

      April – sorry for the delayed response!

      I’m still curious about the problem. You did call the plug-in correctly.

      It sounds like there’s not an issue with the “section nav”, but your top level nav retaining proper styles? I assume you’re using the generic wp_list_pages to generate that? Is there a URL I can look at?

    12. April says:

      Right, the top level nav doesn’t seem to be retaining the “current_page_ancestor” styles. The conditional tags aren’t the best option so I appreciate any insight you have on how to make the styles work.

      Here’s the URL:

      Yes, the top level nav (Features / Customers / Benefits / Pricing) is using a simple wp_list_pages tag.

      Then everything in the dropdown menus is called by the simple_section_nav tag.

      And to keep things simple, I made the following styles:

      .current_page_item: orange border
      .current_page_parent: red border
      .current_page_ancestor: green border

      So when I’m on a grandchild page of “Features”, ( then shouldn’t “Features” be green?

      Thanks for your assistance!

    13. NicoMollet says:

      Hey, great plugin you have here.

      I wonder what the feature “Ability to treat blog categories as sub pages of blog home”. Is it like the feature “Categories menu” from the plugin ?

    14. Karl says:


      Sorry for the delayed response, I was working on other parts of the site.

      Yep, could be a conflicting plugin, the behaviour is a bit strange. It does flatten three levels down for me like you describe, but in reverse order (sub-sub pages on top).. confusing indeed! Wish I could send a link, but it’s on a test-server.

      Haven’t had a chance to deactivate all plugins or trial it further, for this project I went with the Fold Page List plugin in the end, with a snippet to split out just the 2nd level down

      Might have a look at your plugin again for another project, good luck with it!

    15. Jake Goldman says:

      NicoMollet – that feature (which I hope to roll out in the next update) allows you to treat blog categories as though they’re sub pages of the blog page. So, for example, if you create a top level page called “Blog”, and make that your blog page in the settings, when you visit that top level page, the Simple Section Navigation would output permalinks to the top level blog categories as sub pages of “blog”.

      Hope this makes sense!

    16. Fred says:

      Karl and I are having the same issue. Though, I have no other plugins installed.

    17. Jake Goldman says:

      The loss of hierarchy issue seems to be resolved… download the latest build (1.1.2) for the fix!

    18. Fred says:

      Many thanks. Super nice plugin, guys!

    19. Svein Are says:

      I’m looking for a navigation plugin that does the following:
      - Shows only root pages (when current page is home)
      - Shows root pages + sub-pages of the current page

      To me it seems like this plugin only shows the siblings/children of current page. Not the whole hierarchy.

      I want this view:

      (Current page: Home):
      - Section A
      - Section B
      - Section C
      - Section D

      (Current page: Section B, therefore I can see the sub-pages):
      - Section A
      - Section B
      – Subsection B1
      – Subsection B2
      - Section C
      - Section D

      Is this supported?

    20. Jake Goldman says:

      Svein – that’s close to what this plug-in does, but not exactly.

      The plug-in can be set to show top level pages (“sections”) on the home page, but once inside of each section it uses that top level page (i.e. “Section B”) as the heading for the navigation, with its children listed beneath. Using your example:

      (Current page: Home):
      Heading: Home
      - Section A
      - Section B
      - Section C
      - Section D

      (Current page: Section B, therefore I can see the sub-pages):
      Heading: Section B
      - Subsection B1
      - Subsection B2

      (Current page: Subsection B1):
      Heading: Section B
      - Subsection B1
      - Subsection B2

      The intent was not really to create a site-wide “smart” navigation; the typical use case is a site with a persistent list of top level pages in the heading, that wants a sidebar with navigation within that section, once inside one of those top level pages.

      The functionality you’re seeking is most easily accomplished with CSS. Just use descending LI classes combined with various “current” classes to control display of sub pages.

      If you don’t want to use the CSS approach, and would like to sponsor a small modification to this plug-in to support your use case, let me know and I’ll email you with the details.

    21. Roger says:

      Hi Jake,

      I have one quick question.

      How can I show the children of the sub page under its parent rather than on the top.

      It ruins the need of it as it start showing the sub pages on the top, where as it should show them under the specific child to which they are parent of.

      Please help.

      any help regarding CSS or Code would be appreciated.

    22. Jake Goldman says:

      Roger – they are supposed to show up as children of the parent page. It appears my “fix” in 1.1.2 actually breaks some previously working instances. It appears to be rooted in a WordPress bug related to the “include” option. I am going to put out another update very soon.

    23. Roger says:

      Hi Jake,
      Thank you very much for your reply.

      My question was actually exactly as Svein Are’s. The code is perfect and generated children perfectly but why does it show it at the top?

      I actually, and I am sure many other would like to show the third level children under the 2nd level parent. Just like Svein Are wanted.

      I will be very thankful if you can give a fix for that within PHP. That would be really helpful.

    24. Roger says:

      Any help Jake :-(

    25. Jake Goldman says:

      Roger – I have emailed you with a beta version that may fix your problem. I’m trying to work around an apparent bug with WordPress page lists and the “include” option.

    26. Thank you for this plugin – this is exactly what I was looking for! Would love to have an admin option to turn the section title off, but that can be done easily enough in the CSS.

      Also, you probably have this documented somewhere that I missed, but the user needs to explicitly assign page order numbers to each page – for whatever reason if the value is left at the default of “0″, the subpages were jumping to the top of the nav list instead of staying under the parent.

    27. Jake Goldman says:

      Edwards – thanks for the feedback.

      I’m aware of the page order bug… it’s tied to the other issues with “flattening” navigation folks have mentioned in the comment. I’m looking at reworking the plug-in a bit to work around what I believe to be a WordPress bug with “include” page listings.

    28. Roger says:

      Hi Jake,

      I am sorry but I didn’t receive it. Must be some problem. Can you email here instead:- ayishaakram[at]

      I will be very thankful.


    29. Loren says:

      Thank you for a valuable plugin. I had tested it some months back and ran into the “flattening” issue. So I had been using the Sub Pages widget ( but it does not seem to be supported any longer.
      This plugin works very nicely in conjunction with the Page Template Extended plugin ( which I am not sure is supported either) allowing for great CMS-like capability. Page id based templates then form the “sections” for the site. Great work!

    30. Jake Goldman says:

      Loren – glad to hear that the plug-in has been useful!

      All – a fix is coming “soon” for the page flattening issue. Unfortunately, I was out for about 10 days, and I’m in catch up mode. In the interim, as someone else indicated, if you explicitly define a page order using a third party plug-in like pageMash or using the page order drop down, the flattening should not occur.

    31. Loren says:

      Is there a way of adding the WordPress current_page_item class to the title of the widget?

    32. Jake Goldman says:

      Loren – we can add that to the next revision.

    33. Loren says:

      Jake – That is great! I am still developing the site that I am using this on but it really seems to be exactly what this type of website needed. Thanks again.

    34. [...] actually released a plug-in that makes “section” or “top level page” WordPress navigation a cinch. But there are plenty of reasons outside of navigation that may require you to indentify [...]

    35. Mike says:

      Excellent plugin! Simple and elegant. As a feature request, I suggest a sort order option to the settings, so the menu can be displayed alphabetical, by date, page order, page ID, etc. The default is page order, which doesn’t work when you want a large number of pages to be sorted automatically.

    36. Jake Goldman says:

      Great suggestion, Mike.

      We’ll incorporate that, as well as Loren’s suggestion, in the next update.

    37. Jeff says:

      How do I wrap it in a div so I can stylize just this list? Would it be easier to just call to it from my template? If, so how do I do that? I tried using the call function, but I have no idea how to do that properly. Any help would be wonderful. Thanks!

    38. Susan says:

      This plugin is terrific, but I’m having one problem — page/child/grandchild nav are showing up correct, formatting is correct via my CSS, BUT I’m getting an extra blank line at the end of my indented grandchild link list before the child page list continues — i.e (don’t know if my formatting below will show up tho):

      – Child
      – Grandchild

      – Next Child

      I am completely stumped as to what I need to do in my CSS to fix this. It appears that something is causing that extra line at the end of a child group, because when I switch the setting to display all pages in section, the end break happens in between all Child/Grandchild groups.

    39. Jake Goldman says:

      Jeff – if you’re using widgets, WordPress automatically wraps the widget in an element (an “li” in the default theme) with a special class name that corresponds to the widget name. In the case of this plugin, the widget’s wrapper gets a “widget_pages” class. You can use that reference to uniquely style this widget.

      To output it in a template file, you need to execute the “simple_section_nav();” function in a PHP code block (as explained in the documentation and on the configuration page). You can put whatever you like around, including a “div” tag with a unique ID.

      If you need further assistance, please use the “request a quote” button at the top of the page!

    40. Jake Goldman says:

      Susan: it sounds like you have a “margin-bottom” or “padding-bottom” property attached to unordered lists (UL’s). Do you have a link where we can see this in action?

      If this is not a bug with the extension, but simply a matter of CSS expertise, I’d politely ask that you strongly consider a small donation in exchange for our time assisting you.

    41. Susan says:

      Thanks — no margin-bottom or padding-bottom properties at all on this list — I was just wondering if there was something in the plugin that automatically added that extra line. I’m now sure it’s my CSS, because when I try the list without it, all is OK. I’ll keep plugging away.

      And I do plan on donating as soon as I get everything working — thanks a bunch.

    42. Jake Goldman says:

      Susan – good luck with the CSS! The forthcoming donation is very appreciated… it’s hard for us to walk the line between extension support and supporting people’s sites!

    43. Power Tips For WordPress Template Developers « Tech7.Net says:

      [...] make “section”, or “top level page” WordPress navigation a cinch, such as Simple Section Navigation. However, there are plenty of instances (outside of navigation) where the template may need to be [...]

    44. Magnus says:


      Prior to upgrading to the last version I used

      < ?php simple_section_nav("",""); ?>

      to output the navigation in a css-themable block. This doesn’t seem to work any longer. Any hints? :)

    45. Magnus says:

      Addtion to the above (the form stripped my code)

      I added a div with a class between the fist quote mark, and a closing div in the second.

    46. Desenvolvendo Templante Wordpress | I-consultores says:

      [...] ou “nível superior página” WordPress uma cincha navegação, como a simples secção Navegação. No entanto, há muitas instâncias (fora de navegação), onde o modelo pode estar conscientes da [...]

    47. WP Freak says:

      I’m excited to find this plugin but am not quite able to make it do what I want. I’ll try to explain in simple terms. Here’s my site’s navigation.

      Section A
      Sub Page A1
      Sub Page A2
      Section B
      Sub Page B1
      Sub Page B2

      When I’m on either of the section landing pages, I see just what I would expect. I see the title of the section, and a listing of the sub-pages.

      The problem is when I navigate to a child page. What I want to see is the same “section” navigation that I see when I’m on the section “landing page”. But instead, it’s now treating the “Sub Page A1″ as the “parent” and trying to list children pages (which don’t exist).

      I’m hopeful that this is possible because the screenshot at the top of this page shows exactly what I want. in that screenshot, there’s a page called “Clinics” and to the right you can see a sectional navigation called “Get Informed” with Clinics as well as it’s other children all listed.

      Thanks in advance for the advice/response.

    48. Jake Goldman says:

      WP Freak – the expected behavior is the behavior you *should* be encountering. Not sure why you’re not getting that. Do you have a link I can look at?

      Can you confirm that you’re using version 2.7 or newer of WordPress, and the current version of the plug-in (1.3)?

    49. WP Freak says:

      Jake, Thanks for the response.

      I am using the latest wordpress 2.8.2 and the latest version of your plugin.

      Unfortunately, this afternoon I ended up just hard-coding some PHP to accomplish what I wanted into my sidebar, so I don’t have a link for you to look at. If the client isn’t happy with my self-rolled solution I may come back to you and see if you can troubleshoot it, but for now I think I’m good.

    50. Loren says:

      Hi Jake,
      I seem to have run into a conflict between the Simple Section Nav plugin and the Role Scoper plugin. It seems the RS settings override the SSN settings. I didn’t see any comment on this anywhere and wondered if you have run into this at all? I have posted a couple of screen shots showing the problem in my sidebar list:
      I have contacted Kevin at RS and am waiting to see what his take is on this issue.

      BTW – thanks for adding current_page_item to the top level. It works nicely.

    51. Jake Goldman says:


      Interesting result. I’m not familiar with Role Scoper, and not sure what would could cause the conflict. Simple Section Nav does not use any action hooks or filters, it simply uses straight forward WordPress calls related to getting posts and post ancestors, so (though it’s easy for me to say) the problem is unlikely to be on our end.

      My guess would be that RS is hooking into the get posts (or other post listing) functions and overriding the default behavior that SSN relies on.

      If you can’t get this figured out, we can provide a more in depth analysis (or potentially a different solution that works) through our services, if there’s some budget for that.

      WP Freak – along these lines, I’d bet you have a conflicting plug-in. I’ve double checked, and it’s working as expected on at least 2 WP 2.8.2 sites in a live environment…

    52. Loren says:

      Hi Jake,

      Yes, I think it is something to do with RS and I am waiting for a response from the author.

      If I could suggest another feature to add to SSN it would be to give the option for allowing logged-in users to view the list of private pages to which they are entitled (i.e. if they can read them). Currently, even for an admin, private pages are not listed. Branko Ajzele addresses this issue with a different solution over at .
      This would be a cool addition to SSN as this functionality would again significantly enhance it’s capabilities as a CMS component for WP. Thanks, my friend!

    53. Matt says:

      Hi Jake,

      I installed the plugin and its working great. I am running into a small problem on a few of my pages that display posts. The sub nav disappears. This might fall back on my lack of WP knowledge but I didn’t know if you had any advice to get this corrected?

      Looks good here. Normal page.

      Page with posts it disappears.

      Reappears on subpage of News.

      Thanks for your time. Matt

    54. Jake Goldman says:

      Mike – turns out you caught a bug that occurs when you try to use the section navigation on a posts page (and archives/posts as a result).

      v1.3.1 was released this evening, and fixes this.

      Loren – we’ll definitely add private page support. To clarify, anyone with subscriber or higher permissions would be able to read private pages, correct? That’s the default WordPress logic, I believe.

    55. Loren says:

      I believe that read_private_pages and read_private_posts does not start until the Editor level – unless assigned specifically with a plugin like Role Manager. However default to WordPress the links do not show up when reading the page even for administrators. So current_user_can(’some_role’) functionality needs to be added (I think!). This needs to be an option as plugins like Role Scoper already include this function.

    56. Loren says:

      If I understand the WP logic correctly you need to include post_status = ‘publish’ and/or post_status = ‘private’ in your query.

    57. ee says:

      Hi, I need exactly what a previous poster does (see below) — the whole hierarchy showing, as appropriate, not controlled by CSS show/hide. Also, I don’t need it as a widget. I will be hardwiring it and just need a call to the main function. What would it take for you to modify your script?

      I want this view:

      (Current page: Home):
      - Section A
      - Section B
      - Section C
      - Section D

      (Current page: Section B, therefore I can see the subpages):
      - Section A
      - Section B
      – Subsection B1
      – Subsection B2
      - Section C
      - Section D

      (Current page: Section B1, therefore I can see the subsubpages):
      - Section A
      - Section B
      – Subsection B1
      – Subsubsection B1.1
      – Subsubsection B1.2
      – Subsection B2
      - Section C
      - Section D

    58. Stephan says:

      Love the plugin :)

      I was wondering if you knew of a simple way to make it so that on a grandchild page, it will only list it’s siblings, or only siblings + it’s own parent.

      Currently it lists siblings as well as all parent level pages.


      So If I am at 2B in the above example, I would love to have it so that it displays only B1/1b/2b – right now it shows


      Thanks :)

    59. Stephan says:

      Doh, formatting didn’t hold in the above. Hope this displays what I mean better.

      Section A
      Sub-Section A1
      Sub-sub-section 1A
      Sub-sub-section 2A
      Sub-Section A2
      Section B
      Sub-Section B1
      Sub-sub-section 1B
      Sub-sub-section 2B
      Sub-Section B2

    60. Loren says:

      Hi Jake,
      The SSN widget does not seem to allow for multiple instances of itself. Is that something that you will be adding? It would be very helpful in some applications.

    61. ElShaddai Edwards says:

      Any chance that an option can be added to disable the a link on the current page? I know I can style current_page_item so that it appears to be non-linked text, but it seems that removing the link would be more efficient.

      Also, any chance that this functionality can be called by a shortcode? I’ve been using the “Section Widget” plugin for page-specific sidebars and would love to be able to add SSN into the mix to better control where it appears.

    62. Jake Goldman says:

      ElShaddai – we’ll add both of those to the list of future enhancements.

    63. Achim says:

      Hi Jake,

      I used your plugin on a wordpress installation of mine and it works great ! Now I installed it on another wordpress blog (same template, both installations 2.8.4) but I get the same behaviour as WPFreak. I have absolute no idea, what causes this problem. On the first site, everything works perfectly (only 1 parent and 4 childs). Even when I visit the child pages, the plugins show the parent and the other children on the same level.

      On the other site nothing is displayed, if I select a child page. Any Ideas ?

    64. Jake Goldman says:

      Achim – very strange. The way the current version of the plug-in is structured, it’s hard to see how that could happen. The most likely cause is a conflicting plug-in that is hooking the functions I’m using.

      If you turn off all the other plug-ins, does it work? Or are you still seeing the issue?

    65. Achim says:

      Hi Jake,

      I will give it a try tomorrow !

    66. Bob says:

      Hello Jake, love the plugin. Only thing is I don’t think it’s working right for me. The widget shows up at the parent level (shows children and grandchildren) but not on any of the other pages (children and grandchildren). I’m running WP 2.8.4. I’ve deactivated all plugins but to no avail. Any help would be appreciated.

    67. Jake Goldman says:

      Bob – I’ll be in touch. Achim – any luck turning off the other plug-ins on your end?

    68. Tim says:

      Great work guys. This just saved me a whole lot of wp_list_pages fiddling!

    69. Plugins, themes and the IA « Museum In A Day says:

      [...] their favourites: today I’ve installed Akismet, Contact Form 7, Google Analyticator, Simple Section Navigation Widget and Unfiltered [...]

    70. Jim says:

      Accessibility. It’s hugely important in reading. This plug-in is wonderful and appears to be one of a kind. I’m surprised by that; I guess not nearly as many people are using WP as a CMS as I thought. I’m also surprised WP’s inherent coding is so difficult to put serviceable menus and context sensitive table of contents in place. What a great plug-in!

      For those of us who are CSS challenged, I wonder if you could publish the names of the variables to reference your titles and the current page so we can incorporate them into our themes; the before and after fields don’t work in my widget bar, and I’d like to bold the current page on the sidebar.

      Thanks again for the wonderful plug-in.

    71. Ludo says:

      Thank you so much for this, this is almost exactly what i wanted !

    72. Achim says:

      Hi Jake,

      no, disabling the plugins didn’t help. Now I have another site, same template, same WP Version (2.8.6) and the same behaviour. If you are interested, i can send you login credentials to a test site who shows this behaviour.

    73. Sharon says:


      Wish I could try out this plug in! But after installing, I don’t see the Section Nav configuration page or a widget on the widgets page. :-( I’m using ver. 2.8.6 and the Atahualpa theme. Any thoughts as to what might be going on? Known incompatibilities? Thanks!

    74. Jake Goldman says:

      Hi Sharon – sounds like it didn’t activate correctly? I assume you “activated” the plug-in after installing it… ?

    75. Arthur Baker says:


      Great plugin idea! Hope that I can get it working . . .

      I’m trying to implement this on a test site and it works when I add it to the main page template’s content section, just before the WP loop is called. See here:

      But if it is added via the widget in the sidebar, it doesn’t process the php call and no list shows, see here: If I hard code it before the widgetized area of the sidebar, the same result happens, no list.

      If I put the code in the content area of that last page it will show up the list.

      Any clues as to what I’m doing wrong?



    76. Jake Goldman says:

      I can’t be sure without looking at the code, Arthur. My guess would be that you have a problem in your template – that your new a post query that overrides the default page information somewhere before that widget area.

    77. Arthur Baker says:

      >>My guess would be that you have a problem in your template<<

      That was the problem. I'm using Ajaxed WP and to allow the pagination effects on "pages" as opposed to "posts" the following code has to be placed just before calling the loop in the page template:

      is_page = false;
      $wp_query->is_archive = true; ?>

      [/code] (Hope I did that correctly)

      When I used your insertion code just before this php call, it works, if placed after, not at all. Since I was calling the sidebar.php file below the content div closing, which was after that code block, it didn’t work.

      After moving the sidebars call above this code, it now works fine:

      Now, all I have to do if work on the styling.

      Thanks for the quick response!


    78. [...] order to improve server performance as well as making pages load quicker. Another great plugin is Simple Section Navigation which is essential for CMS installations. It allows the display of page siblings, parents and [...]

    79. Michelle says:

      Awesome update, thank you very much! This was a great plugin before and you’ve made it even better.

      I have a request for future versions – adding in the parameters link_before and link_after (as used in wp_list_pages()). I never thought I’d need this, but the latest site I’m working on adds a “»” (>>) symbol in more places than I thought possible. :-)

      Thanks again for the fantastic plugin! It’s incredibly useful.


    80. Jake Goldman says:

      Michelle – thanks for the positive feedback! We’ll add those options in a future update. As an interim work around, you can use the CSS “before” property for many browsers.

    81. Ray Gulick says:

      This latest update has created a couple of issues, and I would really appreciate your help:

      1. the plugin inserts an H2 into the list, enclosing the section title.

      Here’s the code I’m using in the sidebar which renders the tags inside the tags:

      I can deal with an H2 from a CSS perspective, but it’s not semantic; I don’t want an H2 in my subnavigation. I can’t see in your code where or how the H2 is being inserted, though I can find $headclass, which adds a class to it.

      How do I eliminate the H2 in the list?

      2. There used to be a Configuration Panel that showed up under “Settings” in the Admin area of WordPress to adjust settings. Can’t find such a panel with the updated version, although I can see what looks like the code to create such a panel in simple-section-navigation/simple_section_nav.php.

      Here is a link to the WP admin with settings menu pulled down: no Section Nav on menu:

      The version of WP I’m running in which I updated SSN is 2.9.1.

    82. Michelle says:

      Thanks Jake!

      I’ve created a shortcode for this which might be helpful for other people, here it is – hopefully this will work in a comment. :)

      // To add this to posts, use: [sectionNav]
      // If you would like to enable shortcodes in your sidebar too, uncomment the following line:
      // add_filter('widget_text', 'do_shortcode');
      function my_simple_section_nav() {
      echo simple_section_nav('before_widget=&after_widget=&a_heading=true');
      add_shortcode("sectionNav", "my_simple_section_nav");

    83. Michelle says:

      Sorry, I should have said – to get the shortcode function working, paste all of that code into your theme’s function.php file.

    84. jupiter76 says:

      Hello, this is a wonderful navigation widget! I’ve gotten it to work swimmingly but I seem to be having the same problem as Matt did in the comments above. On my post pages which reference single.php, my navigation disappears. You mentioned this was a bug and it was fixed. I’m currently using your widget version 2.0 with the latest version of Wordpress. Has the bug really been fixed? I cannot figure out why the widget isn’t showing up, even though the sidebar with the widget is definitely being called.

      Thanks for all your help!!!

    85. Jake Goldman says:

      Jupiter – to be clear, your posts page is set – in settings – to a specific page?

    86. jupiter76 says:

      Yes, in the Wordpress Settings area, I have set the Reading > Posts page to my “Blog”. It’s a CMS site, so the blog is in a designated page on the site. The navigation gets displayed on the blog’s front page, but when you click on an individual post, it disappears. It uses single.php to render a specific blog post, which does call the same sidebar with your widget, yet the navigation disappears. It also does it on the categories and archive.php pages.

    87. Jake Goldman says:

      jupiter – I’ve just confirmed on 2 other sites that this is not a bug with the plug-in. It’s working as expected; showing up on both posts and archives. If you set the widget to “Output even if empty section” and look at the source, does the framework of the widget still show up? It sounds like you may have a different registered sidebar for posts, or there’s some code in the single template (or another plug-in) that’s “messing with” the apparent page or post query (and not resetting itself afterward) and confusing this plug-in. If you need personalized support for your site, use the “Request a Quote” button. If it *does* turn out to be a plug-in bug (I’m about 99% sure it’s not), you wouldn’t be charged anything.

    88. Jake Goldman says:

      Ray – as you since discovered (re: #2), the settings are now contained in the individual widget, or passed by parameter when using the function.

      2.0.1 adds new “before_title” and “after_title” arguments to the function, so you can override those values (per #1).

    89. Doug C. says:

      Just installed this widget and placed it in my main sidebar, but it doesn’t appear anywhere – o_O

      Is there something I need to turn “on” ?

    90. Admo says:

      Is it possible to hide the siblings of parents with this plugin?

      I’ve tried but can’t figure out how to do this.

    91. jupiter76 says:

      Thanks Jake! I think the reason my navigation is different on the blog’s individual pages, is because they are referencing single.php and because the blog pages don’t fall under any of the menu pages I set up. So for the section the blog is in, the blog’s sidebar nav is correct for the section it’s in, but when you click on the pages to see an individual post, the nav is different because the pages don’t reference any particular section.

      I guess if I want it to appear like it’s in the same section, I’ll have to fake it in some way. Would probably mean deleting your plugin from single.php and using a custom sidebar for the nav there. Not the best workaround but it’ll have to do.

    92. Jake Goldman says:

      Doug – it should work on it’s own. If the sidebar is showing up on pages that have subpages or parents and this widget is not appearing in the HTML output, there must be a conflict somewhere in your theme or other plugins that is breaking the widgets ability to correctly identify the page.

    93. Jake Goldman says:

      Admo – only via CSS styles. That sounds more like a breadcrumbs trail than a “section” navigation.

    94. Rob R. says:

      This errors out for me as soon as I click on any item in the list. I have a section (root level page) with three subpages defined. The first child page displays as expected (I don’t have the show all pages in section option checked). However, when I click on that link I get the following instead of the section navigation being output:

      Warning: Attempt to assign property of non-object in C:\xampp\htdocs\eptest\wp-includes\post.php on line 3628

      This installation is local and new, this is the only plugin I have installed at the moment. Thoughts?


    95. Sean says:

      Thank you Jake for this plugin! I have a question about styling. I’ve tried reading all the documentation I could find as to not ask an unnecessary question.

      I’m working on Into my style sheet I’ve inserted:

      color: #ffffff;
      color: #ffffff;
      color: #ffffff;
      (obviously not the style i’m sticking with, but just trying to get it to work)

      I can’t get it to work and have tried many variations. I know someone a while back (April in ‘09) used conditional arguments to get her’s styled because she couldn’t get the styles to stick. Any thoughts?


      thank you for your help!

    96. adam says:

      Hi, I love this plugin- its almost perfect for me. ;)

      Is there a way to ONLY display the grandchildren of the current children page? Instead of all displaying all of the children and grandchildren?


      Grandchild <–only display other grandchildren of section, not all children.

    97. Jake Goldman says:

      Rob – sounds like there’s something wrong with your installation or your theme. The links don’t go anywhere special; just to the page. Only other thought, given the vague nature of the error – are you running an old version of PHP?

    98. Jake Goldman says:

      Hi Sean – I’m not in the habit of troubleshooting individual sites gratis (unless there’s a potential plug-in bug), though you’re welcome to use the “Request Quote” button if you want consulting help.

      If I were to guess without looking, you have styles assigned to your anchors that take precedence over the classes above. Try adding ” !important” right after the color hex value.

    99. Jake Goldman says:

      Tom – One can certainly do it with code, but not with this plug-in!

    100. Rob R. says:


      It’s older – PHP 5.2.9 (I’m running Drupal locally too, which doesn’t like 5.3.x). Is that old enough that this could be the culprit?

    101. Peter E. says:


      i’m getting that same error message when I click on a section in the menu:

      Warning: Attempt to assign property of non-object in /home/…/wp-includes/post.php on line 3628

      i’m running php 5.2.13

      any further ideas?

    102. Rob R. says:


      Oddly enough, I’m running PHP 5.2.4 on my live webserver and the plugin seems to work fine there, just not on my local set up. Could be my local configuration (XAMMP).

    103. Peter E. says:

      for me it’s the other way round, the plugin works fine on my local setup (MAMP with php 5.3.2) but not on my webserver.

    104. Vic S. says:

      My question is: how do you highlight current childpage?
      Shouldn’t this be by default? Am I missing something?

    105. Vic S. says:

      Sorry, revind, delete…
      As soon as I asked about higlight current childpage i realized it was a simple CSS-thing.
      SSN is a great plugin!

    106. [...] Simple Section Navigation – Good little page navigation widget Reply With Quote [...]

    107. Bob says:


      Love the plug-in EXCEPT for one thing you tout right at the top of your page:

      The title of the widget is the top level page within the current section

      That’s what I DON’T want. The thing is in H3 and huge on the page. And ugly. And I don’t know how to change it.

      Is there no way to simple add a proper Title option to the widget?

      I’d much rather be able to type in a widget title that says something like “In This Section”

      I’m not a programmer, although I can manage some stuff. But I’ve been through the plugin code 3 times and can’t find where the output of the title is and the variable used to change it.


    108. Jake Goldman says:

      Bob – the just released 2.1 adds the ability to specify a page title. You can also use CSS to hide the title if so desired.

    109. Bob says:

      awesome.thanks. I’ll give it a go.

    110. Bob says:

      OK, looks good, but NEXT question.

      On my site I have a Nav bar at the top of each page. By default, it pulls the names of the pages is WP_Page_List() (or something like that). That results in some ugly nav titles, much as the problem I indicated with you.

      I use All in One SEO Pack, which let’s me assign a different title to those links. The plugin Page Lists Plus does the same thing. You can name the title on WP Page List() to something else.

      As a non-programmer, I don’t know what the attribute those two plugins are calling. Meaning, how do they do it?

      Reason I ask is I’d like YOUR plugin to pull the same info. SO, instead of writing “In This Section” I can have it pull the same “short title” off the Page so that, on my site, it would say “Dive Courses” instead of “In This Section” and so on.

      Possible? I thought if I could find the attribute that YOUR widget title is pulling I could change it, but I don’t know what to put in its place.

    111. Justin says:

      I am using Simple Section Navigation in my Wordpress 3.0 site. It works, but it shows the children of all the pages. I want it to only show the children of the page I am on. Is there a way to do that or could something be causing it to show all children?

    112. Jake Goldman says:

      Justin – Did you check the “show all pages in section” option?

    113. Cris B says:

      Great work on this plugin and widget. I’ve had a good read through this post and the comments and the precursor post and comments here:

      Yet I’m still a bit stumped on the following:

      Page A
      - Page a
      - Page b
      - – Page i
      - – Page ii
      - – Page iii
      - Page c
      Page B
      Page C
      Page D

      When I navigate to page b it’s showing:

      - Page a
      - Page b
      - – Page i
      - – Page ii
      - – Page iii
      - Page c

      Rather than just:

      - – Page i
      - – Page ii
      - – Page iii

      Also when I look at any of these three grandchild pages I still see:

      - Page a
      - Page b
      - – Page i
      - – Page ii
      - – Page iii
      - Page c

      Is there any way to limit this just to see the siblings?


      - – Page i
      - – Page ii
      - – Page iii

      Finally is it possible to get the menu title to show the currently selected page?

    114. Jake Goldman says:

      Cris – the plugin is behaving the way it’s supposed to. It’s “section” – or top level page – navigation, not current page navigation.

      You can accomplish what you’re looking for very easily in the theme’s code by using wp_list_pages with the current page ID as the parent and child_of parameter.

    115. Bob says:

      Swore I left a question after my “i’ll give a try” post, but don’t see it here nor an answer. Now I have 2 things:

      1) (repost) — Is there any way to make the Title (i.e. In This Section” show the short title of the top-level parent? Your widget already shows the short title (attached via a plugin like Page Lists Plus or All-in-One SEO), but I want the parent to carry that same thing. Thus, in my case, one section would say “Dive Courses” instead of “In This Section,” etc.

      2) Can you add an option to show sibling pages in the section and NOT their children? I’ve got one section with lots of “nieces and nephews” and it makes for a VERY long widget. Illustrated example:

      CURRENT – As seen from Child 1 page:

      - Top-Level Parent
      – Child 1
      —- Grandchild 1
      —- Grandchild 2
      —- Grandchild 3
      – Sibling 1
      —Nephew 1
      —Nephew 2
      – Sibling 2
      —Niece 1
      —Niece 2

      - Top-Level Parent
      – Child 1
      —- Grandchild 1
      —- Grandchild 2
      —- Grandchild 3
      – Sibling 1
      – Sibling 2


    116. Jake Goldman says:

      Bob -

      1) Yes. You need to add a filter to the section nav title that uses AiSEO’s meta field for menu title. I will add a FAQ for this explaining exactly how to do this (I’ve been asked this before). For better or worse, the AiSEO menu title filter is extremely specific to wp_list_pages, and not generic titles. While I won’t add AiSEO specific code to the plug-in, I will outline how you can do this in your theme’s functions file.

      2) Your preferred behavior is exactly what this plug-in does. You either have the “show all in section” option checked in the widget (which makes it behave like your “current”) or have an overriding / interfering plug-in.

    117. Bob says:


      On #2, I understand the whole “intended behavior” idea, but couldn’t this be added an an option for folks so they can go beyond the intended to use the plugin in a way that might not have been originally envisioned. What I’m asking is not ADDING functionality, it’s an option to limit the already offered amount of data.

    118. Jake Goldman says:

      Bob – I’m a little unclear on your question, but you can manipulate the nav title with the “simple_section_nav_title” filter I added in 2.1. You can read more about how filters work in WordPress here:

    119. Cris B says:

      Thanks for the info. This was the solution I used to get what I was looking for if you would like to share it ;)

      function custom_pagenav() {
      //Define the variables
      global $wp_query;
      $thePostID = $wp_query->post->ID;
      global $post;
      $parent = $post->post_parent;

      //Display the current page title
      echo "".get_the_title($thePostID);echo "";

      //This section shows the children of the current page
      if(wp_list_pages('child_of='.$thePostID.'&echo=0&depth=1')) {
      echo "";
      echo "";
      //This section shows the siblings of the current post if there are no children
      elseif(get_the_title($parent) != the_title(' ' , ' ',false)) {
      echo "";
      echo "";

    120. Bob says:

      Sorry, I’m not a programmer, so I think just referencing the codex is beyond me. You said you were going to add a step-by-step for using the AiOSEO title instead of the title function you added in 2.1?

      On my other question, I was asking if you could simply add a limiter into the data (as an option in the widget) to NOT show the children of siblings, rather than show ALL the pages in the section. Makes for some very long widgets. If possible, just a checkbox that says “do not show children of sibling pages” so you’d get this:

      - Top-Level Parent
      – Child 1
      —- Grandchild 1
      —- Grandchild 2
      —- Grandchild 3
      – Sibling 1
      – Sibling 2


      – Child 1
      —- Grandchild 1
      —- Grandchild 2
      —- Grandchild 3

      – Sibling 1
      — Child 1
      — Child 2

      – Sibling 2
      — Child 1
      — Child 2

    121. Jake Goldman says:

      Bob – I really don’t know how many times I have to repeat this. Your “preferred” way *IS* the way this plugin works if configured properly (don’t check “show all”). Please see my previous responses for reference.

    122. Marc says:


      I am going crazy. I love the plug in and all but I am working on a redo and for some reason I can not get the font colors to change on the widget. Nowhere in any of the active CSS files is there any reference to “ebebeb” yet there it is as the unvisited link color.
      If you can point me in the right direction I would be most grateful. I’ve been searching for an answer to this for hours and I don’t consider myself a beginner. I am guessing I missed something obvious though. :(

    123. Marc says:

      Jake, just as a follow up, using the Chrome inspector the items are listed as coming from an Inline Stylesheet.

      #sidebar a:visited, #sidebar-2 a:visited
      color: #999;
      text-decoration: none;
      inline stylesheet

      #sidebar a, #sidebar-2 a
      color: #EBEBEB;
      text-decoration: none;
      inline stylesheet

      All my problems would be solved if I can locate these settings.

    124. Marc says:

      Disregard, I found it. Sorry for the concern. (custom setting within my theme) See Obvious.

    125. Paul says:

      Hi Jake

      Great Great Plugin !
      I can’t say thank you enough for this.

      This is what’s missing from WordPress,
      and you help putting it there.

      Thanks !

    126. Andrew says:

      This plugin saved a pro-bono project from turning into a big time suck. Thanks!

    127. Nele says:

      Hi! Thanks a lot for this amazing plugin!
      There’s just one thing bothering me, when i click on an item in the menu, the top level menu item gets ‘inactive’ even though i’m in a child of the parent – now inactive – menu item

      i’m in Parent, is visibly active in the top menu
      Then i click on Child in the sidemenu, made by your plugin, and Parent gets visibly inactive in the menu
      How to solve this? Thx for your reply!

      UPDATE: never mind my last comment – i found the class to do it! srry :) once again: great plugin!

    128. Tom says:

      Holy smokes, I think this may be the best plugin I’ve ever found. It seems to do exactly what I want! I’m not getting too excited as I have tried loads of different “subnav” plugins, but this appears to show the levels it should, exactly when it should, and still show the parents it should to! :)

      Well done.

    129. Chuck says:

      I have this installed and used the widget on sidebar2.
      I only get the parent pages.
      How do I get the child pages to show up?
      How do I hard-code it into the theme, so that it works on all the sub-blogs?

    130. brian cooper says:

      I just found this plugin and love it. I do have one small suggestion. For me it would be absolutely complete and perfect if, in addition to the option “Determine whether the section title should be linked” I could choose to link the section title, but NOT when on the section title page itself.

    131. Brenna says:

      Oh this was SO CLOSE to being exactly what I’ve been looking for. >_<;

      The only thing that's missing is that I need the parent page link to be part of the rest of the link list. I don't want it to serve as the title.

      Currently what it outputs:

      Parent (title of link list)

      What I really need is to specify a static title and include the parent link as the first link in the list, like this:

      "In this Section:" (title of link list)

      The obvious answer would be for me to just change the styling of the list and put a static "In this Section" title above the php function. I can't do that though, or else the "In this Section" title will appear on every single page of the site, whether the menu is supposed to show up or not.

      Is there anyway to do this, whether it be through the widget CMS half or calling it through the code with the WP php snippit?

    132. Jake Goldman says:

      – remember, the plugin only show the hierarchy *above* the current page, the current page’s siblings, and any immediate children of the current page. So if you’re on the home page (and you have “show on home page” enabled), it will effectively only show its siblings – the other top pages.

      You can use the “simple_section_nav” function (documented in the readme and here) in your theme.

    133. Jake Goldman says:

      – I’ll keep that it mind, but I don’t want to add tons of configuration options. You can achieve this using the filter for the title, if you’re savvy with filters and hooks in WordPress. Since less sophisticated developers can fairly easily style the section title to “look” unlinked (look at the body classes), I’m torn on whether its worth adding another configuration option.

    134. Jake Goldman says:

      – you can do this with the filter for the section nav page list. When I have some extra time, I can try and write this up.

      The reason I won’t actually build this into the plug-in is because your use case assumes a fairly simple 2-tier set of pages. Imagine you’re another level of depth down. Suddenly that convention becomes pretty confusing.

    135. Brenna says:

      Thank you for the reply. (Many plugin developers never reply to queries from users, so I really appreciate that you took the time to.)

      I’m not really sure what you mean when you refer to the “filter for the section nav page list”. Currently I have the following php:

      …which is outputting the following:

      “In this Section:” (title of link list)

      The only thing missing is a link to the parent page. I looked through all of the different parameters that are available and I can’t see any that would do what I need them to — unless there’s a way to incorporate a dynamic link of some sort into the “after_title” element that automatically fetches the ID/link of the parent page some how…?

      Sorry, I’m not very familiar with php.

      The website in question (you can see what I have for the section menu so far on the side:

      Thank you again.

    136. Angie says:

      Hi Jake,

      FANTASTIC plugin. I asked this question at the WP forums, and on StudioPress for the theme I’m using, and got nothing but crickets.

      Your plugin does 95% of what I’d like to do, so I thought I’d ask if CAN do the other 5%!

      If I’m on Page A…I want to display only the children of Page A.

      Page A Child 1
      Page A Child 2
      Page A Child 3

      Additionally, if I’m on any of those Child pages, I want the same list to show. Your plugin is so close because you give the option to use it as a widget or in the template. I need to output this 5% above the post content (similar to the way it is here:

      Do you know how to do that, or can your plugin do it? Either way, when I get some free time, I’ll give you a screencasted shout out on my sites.

      Also, consider this an invitation to speak at WordCamp Columbus 2011 about either WordPress as CMS or plugin development!

      Angie Meeker

    137. Jake Goldman says:

      Brenna – you’d need to know how to use WordPress’ “apply_filters” function. I’ll try and find some time to add this specific example to the documentation.

    138. Jake Goldman says:

      Angie – first, thanks for the invitation. I may follow up on that!

      You can hide lower pages by using some smart CSS or writing your own code in the template. The “get_post_ancestors” function (passed a post ID) will return an array of the page’s ancestry. As memory serves, the *last* item in that array is the top level page ID. If it returns an empty array (or false) just set the top level page to the current page ID. Use that as the “child_of” argument in wp_list_pages with a depth argument of 1 and you should be in business!

    139. Chuck says:

      We are using WP Title 2 to let us control the navigation titles a little better.
      How do I get the Short Title of a section to appear as the Title instead of the long title?
      Thanks! Great Plugin BTW!

    Leave a Reply