Site Navigation
IMPORTANT: The older CMS Navigation plugin has been deprecated in favor of the WPML plugin.
WPML CMS navigation includes:
- Top navigation with top level pages and post categories including drop down items
- Breadcrumb trail – showing where the current page is located in the website
- Sidebar navigation – showing pages related to the one shown
Top Navigation
The top navigation includes items for pages with no parent and post categories. No configuration is required.
You can style the top navigation bar using our drop down menu CSS generator. It allows styling the menu visually and creates the CSS code that needs to be added to your stylesheet file.
Breadcrumb Trail Navigation
This gives a trace going from the current page all the way up to the home page. For posts, it displays the post’s category. For pages, it goes up to the posts parents until the home page is reached.
This lets users see where they are in the website for every page they visit.
Sidebar Navigation
This creates local navigation for mini-sites inside the complete website. Let’s start with an example.
A few pages for a hotel will make up a mini-website. The structure will be:
- Hotel Bella Vista
- Rooms
- Guest services
- How to get there
- Rates
- Golf
- Fishing
- Ski classes
All the information pages are children of the hotel’s home – “Hotel Bella Vista”.
Grouping elements in sub-sections
We also want to make sub-sections, to make internal pages group easier. We want it to appear like this:
Hotel Bella Vista
Guest information (not a link!)
- Rooms
- Guest services
- How to get there
- Rates
Activities (not a link!)
- Golf
- Fishing
- Ski classes
There will be no page such as ‘Guest information’ or ‘Activities’. These are just custom fields added to the child pages.
In order to build such a menu, we will need to know:
- Which is the home for the mini-site (in this case, ‘Hotel Bella Vista’).
- How the child elements are grouped

Mini home and sections
To tell the plugin that elements should be grouped together set the Section (in the CMS Navigation) for each child page. In this example above, Rooms, Guest services, How to get there and Rates all have the Section set to Guest information. The rest of the pages Golf, Fishing and Ski classes have Section set to Activities. This is optional. If not specified, the child page will not be grouped with others, but will still be listed.
WPML home page includes two section: Design Ideas and Get in touch.
Breaking large page hierarchies to smaller ones
By default, the left navigation tree will recursively scan all pages and include them. You can break it up into smaller trees. The advantages would be:
- Less clutter and easier navigation
- Only relevant pages can be displayed
To indicate that the plugin should not display the child elements of a page, select the ‘Mini home‘ checkbox in the CMS Navigation section.
The plugin will then include the page with this field, but not its child pages. Instead, when the page marked as Mini home is displayed, it’s child pages are included, but the parent pages are not. This enables you to include many mini sites in one large site.
For example, the getting started guide, in this website, is marked as a mini home. When you visit it, you don’t see the parent page in the sidebar navigation. Also, the child pages of that page don’t appear in the sidebar, when viewing the home page.
How to add the navigation elements to your WordPress theme
For information on how to add WPML navigation elements to your theme, go to the navigation section of the getting started guide.
Stuff we’re going to add
Here is a list of things we know this plugin needs to do, but haven’t yet implemented.

English
so where is the download link?
I downloaded the ZIP file from Wordpress and the file is corrupted.
The download link now appear in the top of this page (http://downloads.wordpress.org/plugin/cms-navigation.zip). It’s not corrupt. If you’re getting a corrupt download, check that your download is complete and not partial.
[...] plugin per la gestione delle pagine di WordPress che migliora le capacità come CMS, tra [...]
Hi,
where exactly I have to put the script in the page.php or post.php?
Thanks
This plugin need a particular themes to work?
Hi Shimshon and Dax,
I’m glad your taking an interest in this. I’ve uploaded the WordPress Default theme adapted to use this plugin and I’ll document here the changes I did to it in order to use the CMS navigation.
This example is using version 0.2 of the plugin, which should be available tomorrow from the WP plugin page.
Let me know what you think. If you like it, feel free to rate the plugin.
Amir
Hi, I have been playing around trying to get this to work and I think I figured it out. I kept getting a fatal error. In my case I needed to alter the actual call in all cases by removing the th_:
to
Not sure why? but at least it is working, now I am off to re-organise the site
NB I am using vistalicious
Thank you Amir for a great plugin.
Hi dixie,
Can you please send me the full details of what you needed to change?
ZIP the plugin files (after your change) and send to amir dot helzer at gmail com
Also, do you know what version of PHP you’re using?
[...] CMS Navigation Pluginpretty nice wp plugin for creating non-blog style navigation, sidebar etc.. [...]
Hi !
how should I use the bp_minihome ?
bp_minihome = what values ?
could you give us an example ? whith Hotel Belal vista please ?
thx
Hi Remy,
From this page:
To tell the plugin that elements should be grouped together include the custom_field bp_section for each child page.
In this example these pages: “Rooms”, “Guest services”, “How to get there” and “Rates” all have the custom_field bp_section=”Guest information”.
The rest of the pages: “Golf”, “Fishing” and “Ski classes” have bp_section=”Guest information”.
The top page for this section (Hotel Bella Vista) would need to have a custom_fields named: bp_minihome. The value can be anything.
Is this what you meant?
ok but i dont want to group elements …
i just want to use the bp_minihome function …
is this possible ?
yes. then, just include the custom_fields named: bp_minihome to the mini-home page. All the child elements would be listed below it without sections.
Let me know if you eventually use it. I’ll add a list of sites using this plugin. Also, we’re going to add some fancy administration page for this mini-home and sub-section functionality.
I’d love to get some feedback so we know what to put there.
Can’t I have top level categories in the top bar along side the parent pages, and have subcategories as menu items in the dropdown?
It would be really helpful if we can do that!
ok … i did what you say but …
the navigation is always recursive when i clic in a subpage (i mean the navigation change)
If you tell me what’s the site and on which page you indicated the mini-home, I can have a look and see.
Hey, I’m copying the CSS code from the default CSS file into my style.css file, is this the most correct way to go about it? Also, I’m having a difficult time editing it.. a lot of trial and error. Could you please add comments to the CSS?
Hi jacobbrett,
As a starting point, you can copy and paste the CSS to your style.css.
You’re absolutely right about the need to document it better. I’ll add another page here which would explain this in detail and tell what everything does and how the different style parameters work together.
Hello – I am running into issues getting this to work with my theme. I receive an error – Fatal error: Call to undefined function: – I added the CSS and the header code to my header.php file. Any help is appreciated.
Phil
Hello -
I figured out the issue. But now I have a new question. Is there a way to exclude pages from showing up?
Thanks, Phil
I’ve added a table of features to add (just at the bottom of this post) and included ‘page exclusion’ in it.
I also had the fatal error when adding the menu to header.php. I used the advice above (dixie) and removed the th from
‘th_cms_navigation_menu_nav(‘menu_order’,true,’News’)’
It worked on my local server, but not on my web host – it must be a database prefix issue, right?
A couple of questions about the top nav.
In the readme file:
“Function:
`cms_navigation_menu_nav($order=’menu_order’, $show_cat_menu=false, $catmenu_title=’News’)`
This will display the top navigation – the top level pages with their sub pages as drop down elements.
Additionally – if specified – the menu will include the top level post categories at the end.”
What specifically does show_cat_menu do? Do I need to use variable and make it true for any instance?
How does one create sub pages – or do you mean posts within a category?
I would like to actually place posts not at the end as catmenu_title=’News specifies, but rather in the middle of my nav before contact us etc. Is there a way to somehow use the page sort order to do this? I’ve been using all pages because I can’t figure this out. Being able to put a post category wherever you want in the menu would be great. Can it be done with a custom field as you did for the sidebar?
Can I specify a category and sort it as well the same way without having the overarching “News” as the main nav?
Hi James,
1. What error do you get on your web host?
2. If the $show_cat_menu argument is set to ‘true’ a dropdown with the top level categories will be appended to the top navigation.
3. Creating subpages is similar to creating regular pages but before saving you need to use the ‘Page Parent’ widget to configure a parent. You can read more here.
4. I’m not sure I understand your last question – the extra item in the menu will not display posts link but links to the top level categories. Currently it can only be displayed at the end.
5. You can specify (in the 3rd argument) the title of the dropdown (default is ‘News’)
Phil,
If you’re still having problems with the css – try adding the code to the styles.css file rather than to header.php
If this won’t help, please let me know where you have this published (if you do have it published somewhere) so I can take a look.