Section Subnav

Adds a widget and template function for displaying subnavigation based on the current navigation state.

Author:Benjamin Knight (profile at wordpress.org)
WordPress version required:3.1
WordPress version tested:3.2.1
Plugin version:0.9
Added to WordPress repository:30-08-2011
Last updated:30-08-2011
Warning! This plugin has not been updated in over 2 years. It may no longer be maintained or supported and may have compatibility issues when used with more recent versions of WordPress.
Rating, %:100
Rated by:3
Plugin URI:https://github.com/benknight/section-subnav
Total downloads:3 366
Active installs:100+
plugin download
Click to start download

This is a simple plugin that was born out of working on several projects with sectional navigations. For example, consider the following common navigation tree structure:

  • Home
  • Item
  • About Us
    • Sub-item #1
    • Sub-item #2
  • Item
  • Item

Then, whenever on the "About Us" page or any of its sub-items, it would output that peice of the navigation:

  • About Us
    • Sub-item #1
    • Sub-item #2

This is particularly useful for websites that have a top horizontal navigation which shows top-level items and want to show a vertical subnavigation in the sidebar.

This plugin works by parsing the output of the wp_nav_menu function as XML and analyzing the CSS class hooks (current-menu-ancestor, current-menu-item, and current-menu-parent). Because it uses PHP's SimpleXML library it therefore requires PHP 5+. It uses the theme's registered menu locations.

This plugin also exposes the section_subnav() function for theme developers to use as a template tag to manually place a subnav inside the theme. Here is the usage:

<?php

    section_subnav( array( // defaults
        'before_widget' => '<nav id="section-subnav" class="widget widget_section-subnav">',
        'after_widget' => "</nav>",
        'before_title' => '<h3 class="section-subnav-title widget-title">',
        'after_title' => '</h3>',
        'echo' => true
    ));

?>

It returns false when there is no subnavigation.

This function also provides the section_subnav_args filter hook for writing less code and easier integration with other plugins and child themes.


ChangeLog