Everyday more websites use WordPress in ways that stretch beyond the standard “blog.” Shared hosts offer inexpensive LAMP hosting and its friendly interface makes basic content editing a snap that is until the editor needs to change the navigation. To close this gap, version 3.0 introduces a new menu management system that brings plenty of control and flexibility. Although with the added flexibility comes new complexity while also side-stepping a fundamental issue with using WordPress to manage 50+ pages — changing a page’s position within a site’s structure is painful.
Tucked under the Appearance, a new menu Appearance > Menus has been added that provides users an interface for creating and editing menus. A menu may consist of any number of pages, categories, or custom links arranged in any order and structured hierarchically. Objects are positioned using the same drag-and-drop interface found elsewhere in the Admin UI.
Once created the menu needs to be placed into action. There are two options: (1) add the “Navigation Menu” widget to a widget area, or (2) add the template tag wp_nav_menu() to your theme.
Site Structure vs. Navigation Menus
At Boston University, our WordPress MU CMS is a replacement for websites that used to be maintained using DreamWeaver/Contribute. A typical website such as the International Programs website, which launched a couple of months ago, consists of 20-150 pages organized in a hierarchical structure. (The “Find Programs” Section of this website breaks from this model by using taxonomies to provide multiple pathways for discovery.) Once a visitor clicks on a top-level page, the navigation widget in the sidebar adapts showing the children of the current top-level page, which are the most relevant pages.
Instead of the user being limited to typing a number in box (menu_order) and selecting a page parent from a never-ending drop-down, BU invested substantial time and energy in a custom tool for managing a site’s structure. In addition, to making it easy to position a page, our tools add custom navigation labels, provide users with the ability to exclude pages from the navigation, adds support for custom links, and improves performance substantially. The system works great for the main navigation, but there are a few issues:
- Moving pages changes the permalink without creating 301 redirects.
- Creating custom utility, side, and footer menus is not possible.
- Creating microsites that do not share any navigation with the main website is not possible.
Criticisms of the Menu Management Approach in 3.0
WordPress 3.0 does nothing to improve the management of a site’s structure. The new menu management functionality is completely separated. Changing a page’s parent or adding a category does not modify existing menus, so every change has to be replicated in the menus. Larger sites with lots of pages will still need to depend on wp_list_pages() or some other custom solution to achieve the common behavior of listing child pages or child and sibling pages of the current page.
The good news is that this hole could be addressed in the future. Perhaps a combination of the BU Navigation Management tool used to manage a site’s structure coupled with an improved version of the menu management tool being released in WordPress 3.0 would achieve the best of both worlds.
I wonder what the rest of the community thinks…