Update: I have added instructions below on hiding sub-pages from the navigation menus as well.
I spent a little time tonight looking over several WordPress blog themes/skins and noticed that several of them create a site-wide navigation on the blog based on the pages that the user creates in the WordPress admin section.
This is a great feature and saves tons of time from having to hard-code buttons that link to your pages.
Hiding Pages from the Nav
Tutorial Level of Difficulty: Medium
What if you want to hide a pages from the nav? How can you hide a page so it doesn’t become a nav button automatically?
Here’s how (NOTE: the colors don’t matter, they are just added to show the different sections of code in the explanation).
1. In the Wordpress theme editor, open up the header.php file and find the following line:
<?php $children = wp_list_pages(’sort_column=menu_order&depth=1&title_li=’);?>
2. We will be adding the following bit of code after the last ‘=’ sign:
&exclude=
3. Now the code should look like this (colors are just for display purposes):
<?php $children = wp_list_pages(’sort_column=menu_order&depth=1&title_li=&exclude=‘);?>
4. Now, all you have to do is add the page ID numbers that you want to hide after the ‘&exclude=’… make sure to separate with commas.
Example: If I wanted to hide page ID’s 1, 2 & 3 from the nav then the code would look like this:
<?php $children = wp_list_pages(’sort_column=menu_order&depth=1&title_li=&exclude=1,2,3‘);?>
(note: commas are used to separate page ID’s, but if you are only entering a single ID instead of several then you will not need to add a comma)
Hiding sub-pages (Pages that are assigned to a ‘Parent Page’)
1. If you want to hide a sub page, scroll down to the bottom of the same file (header.php) and find the following bit of code:
<div id=”subnav”>
<ul>
<?php wp_list_pages(’sort_column=menu_order&depth=1&title_li=&child_of=’. $parent_id); ?>
</ul>
</div><!– /sub nav –>
2. Directly after the part that says &title_li= add:
&exclude=
3. Now, all you have to do is add the page ID numbers that you want to hide after the ‘&exclude=’… make sure to separate with commas.
Example: If I wanted to hide sub-page ID 47 and 117 from the sub-nav then the code would look like this:
<?php wp_list_pages(’sort_column=menu_order&depth=1&title_li=&exclude=47,117&child_of=’. $parent_id); ?>
(note: commas are used to separate page ID’s, but if you are only entering a single ID instead of several then you will not need to add a comma)
How can I find my page ID’s?
By default, WordPress blogs create links for the pages you add. These links are each given a unique ID found in the URL. You can either use your browser or the WordPress ‘Manage Pages’ admin section to browse to a page you have created and copy/paste the ID’s into the code we just made.
What if I am using text links (pretty permalinks) instead of page IDs?
You can still find the page ID for each page by mousing over each page link in the ‘Manage Pages’ section of your WordPress admin.
The status bar is the bottom bar in your browser that displays the hyperlink when you mouse over a link on a page.
Don’t see the status bar? Turn it on by opening up your browser and going to View, click on ‘Status Bar’ if there isn’t already a check mark next to it.
Now that the status bar is turned on, go back to your WordPress admin and navigate to Manage > Pages, and mouse over the links to the pages that you would like to hide from the nav. The status bar will show the original hyperlink to that page including the page ID (look for the part of the link that says ‘ID=’ … the ID is the number that follows the ‘=’ sign).
Hiding pages came in helpful for me recently, hopefully a few of you find it useful as well.
This has been successfully tested on the following blog themes:
- Revolution Themes - by Brian Gardner
- i3Theme - by MangoOrange
- Natural Essence Theme - by Arcsin
- All Themes by GraphPaperPress
Has it worked on your theme? Leave a comment and I’ll add it to the list.






