WordPress Tutorial – How to Make a “Child” Page (Subpage) and How to Hide a Link in the Pages Sidebar Widget

This beginner-level WordPress tutorial shows 1. How to make a “child” page or subpage of another page (a “parent” page) using the WordPress 2.7 editing interface. And 2. How to hide a link in the Pages sidebar widget, in other words, how to keep a link to a page from showing in the Pages sidebar widget by putting the page (post) ID number into the “Exclude” box in the Pages sidebar widget dialog box.

If you like this tutorial, you may also like: WordPress Tutorial – How to Make a Static Page Your Home Page & Hide a Double Home Page Link

Making “child” pages (subpages) is useful because you may not want all your pages to show in the main page navigation of your WordPress theme. In most themes, only “main” pages (pages that don’t have a “parent”) show up in the main page navigation. In some newer WordPress themes, child pages show up in a popup menu that appears when you roll over the main page link. And in some themes, sub-subpages show up in popup menus as well. These are sometimes called “cascading” navigation menus: sub-subpages show up in a popup menu when you roll over a subpage link.

The second part of this tutorial shows how to hide (or “exclude”) a link to a page that would otherwise appear in the links of the Pages sidebar widget. The tricky part of excluding a link is finding the page / post ID number. I show you how to do this.

Excluding a link is useful for a number of reasons. One is that when you make a static page your Home page in WordPress (by telling WordPress to diplay a Page as your Home page instead of displaying your blog posts), some themes will show the link to this static page as a second home page link in your main navigation. By making the Home page a subpage and excluding that link from the Pages sidebar navigation, you can eliminate the double Home page link.

In WordPress 2.7, you select a static page to use as your Home page using the Settings > Reading panel in the Dashboard. When you do this, be sure to create a new page to use as your Blog page. If you do not designate a page to use as your Blog page, your blog posts will no longer be visible.

How to Make a “Child” Page (Subpage) & Hide a Pages Sidebar Widget Link

25 Responses

  1. Excellent tutorial and well presented, thank you!

  2. Hello Mark,

    Sorry for this obvious question …

    I´ve been following your tutorial of how to make child pages or subpages.

    You explain for example how to create a child page of your “about page”.

    So what you get is:

    http://mcbuzz.wordpress.com/about/about-business-blogging-101-in-china/

    What if instead of creating a subpage of your “about” you directly create a subpage of http:mcbuzz.wordpress.com??

    That´s what I want to do with my blog. I want some pages to be child pages of my home page.

    I´m not really got at explaining…. do you understand anything I´ve said?

    Thank you!.

    • @carolina
      No worries! If I understand you correctly, you only need to create a new page with Pages > Add New. When you leave that page as “Main page” – a page with no parent – it will automatically be a “child” of your home page – if you want to put it that way. A “Main page” is a child of your home page. On the mcbuzz.wordpress.com site, the Main pages (child pages of the home page) are About, Contact Us, WordPress Tutorials – Complete List, Resources, and Terms of Use.

      • Mark,
        Thanks for your reply.
        If you create a new page with Pages > Add New and leave that page as “main page” – won´t it appear in the navigation bar at the top as you have for about, contact us, wp tutoriales… etc… ? In this case I don´t want it to appear at the top. I know how to manage that but with the example you gave in your tutorial, creating a child page from “about”.

        On your mcbuzz.wordpress. com site to give you an example, your first link “How to Use a Text Widget to Customize a WordPress Sidebar” links to:

        http://mcbuzz.wordpress.com/2009/02/06/wordpress-tutorial-how-to-make-child-page-subpage-hide-pages-sidebar-widget-link/

        I want to manage that. In my post link some words to another page without the “about” in the middle of the url.

        I might be missing something, basic concepts of linking to another page or something……

      • @carolina
        You can definitely do that. You can create a Main page, and then you need to exclude that page from the main navigation. Some custom themes let you do that from within the Dashboard, and there are probably plugins that will enable you to do the same thing. Or you can do it manually by adding a parameter to the PHP code for the main navigation in the header.php file.

        I don’t have a tutorial for this yet. Sorry! If it’s a matter of fixing a business website, send me an email and we can discuss it.

  3. Hello Mark,

    Thanks for your message!
    I´m almost there.

    To conclude…. if you have too many main pages in your navigation bar and want to exclude pages from there you´ve got 2 ways to do that:

    1) The code way: I personally don´t feel too comfortable to do that since don´t know anything about PHP files. But you need to get something like this from the header php file:

    You need to type in your page IDs you want to exclude.

    2) Fantastic plugins!. This plugin adds a check box to include or exclude the pages you don´t want to appear.
    Exclude pages WordPress Plugin:

    http://wordpress.org/extend/plugins/exclude-pages/

    Mark, please correct!!!

    Question regarding pages in dashboard.
    Plugin and excluding pages ok. BUT, I can see from dashboard I´ve got 4 pages and 0 approved. Is something wrong?

    • @carolina
      Thanks for your comments and for pointing out the exclude pages plugin.

      I notice that the code you are trying to put into your comment is being removed by WordPress. WordPress won’t allow you to put strings of PHP code into a comment because potentially someone could put in malicious code or something that would send out spam email or something like that if it were included in the page or post.

      I haven’t figured out a great solution for this. It’s the brackets that cause the problem.

      It’s not that hard to exclude a page by editing the header.php file of your theme with a text editor. I do this in the main navigation on my http://mcbuzz.com site.

      Here’s what the code for the navigation looks like:

      ?php wp_list_pages(’sort_column=menu_order&depth=1&exclude=142′ ); ?

      (I removed the left and right brackets that go on either end.)

      The exclude=142 is what keeps the page with that post ID number from showing in the main navigation. The other parameters are:

      sort_column=menu_order (This means that the navigation links appear in the order I assign them in the Dashboard editor under “Menu Order”.

      depth=1 (This means that I want to display only the first level (Main) pages, not subpages, in my horizontal navigation.)

      You use the ampersand ‘&’ to connect more than one parameter. If you find the wp_list_pages() in your header.php file, you can add “&exclude=[post ID number]” (without the quote marks). To see how to find the post ID number for a page or post, watch the tutorial How to Make a “Child” Page (Subpage) and How to Hide a Link in the Pages Sidebar Widget.

      Also, don’t worry about the “0 approved” next to your “4 pages” in your Dashboard under “Right Now – At a Glance”. The “0 approved” refers to the Comments submitted on your site, not the Pages. The display is a little confusing.

  4. Hi! Thank you so much for this =)

  5. Mark,
    I’ve been building a couple of site using self-hosted WordPress and various free themes. When I do the trick to hide the double Home tab, it definitely works. But then when you click on the page that has the Home page as child, the tab for that page is highlighted as well as the Home page.

    To illustrate. If I’m on the Home page, Home tab is selected. If I go to ‘About’, About tab is selected. ‘Blog’ page has Home as a child. If I go to the ‘Blog’ page, both ‘Blog’ tab and ‘Home’ tab will be selected.

    This happens on every theme I’ve tried that has tabs in the header.
    Thanks for any help.
    Todd

    • @Todd
      If you can send me your website URL so I can check it out, that would be great. If you don’t want to display it here in the comments, you can use the Business Blogging 101 Contact Form.

      Have you tried the Hide / Exclude Pages WordPress Plugin? Try that before doing anything else.

      Here’s a follow-up: If the Exclude Pages plugin does not solve the problem, you may need to edit the code for your theme. If you are comfortable viewing the source code for these pages, you can find the code for the navigation and see that the issue involves dynamic insertion of class=”current_page_item”, which causes the nav button for the current page to be highlighted or turned “on”. The problem you are having is that on the Posts Page, class=”current_page_item” is inserted twice. You want to keep it from being inserted into the Home link. Conversely, you want to make sure it is inserted into that link when you are on the Home page.

      This is definitely what I would consider an “advanced” WordPress issue. There may be a plugin that solves the problem, but I don’t know of one. The way I would solve this would be to create custom code for the navigation menu by editing header.php in your theme files.

      If you Google “current_page_item double” (without the quotes) http://www.google.com/search?q=current_page_item+double you can find some posts that help you do this. I don’t have a tutorial for it at the moment.

      http://www.vanseodesign.com/blog/wordpress/hightlight-current-page-wordpress/

      http://www.talkphp.com/general/3558-wordpress-current_page_item.html

      Sorry I can’t be of more help.

      • Mark,

        Actually that’s great help. I’ve been testing many different themes while learning about WordPress. It seems to me that this is the default behavior with themes that have tabs. Someone will probably come up with a solution to this sooner or later I would think. The fix for double Home tabs ends up creating this issue with navigation.

        Todd

  6. i have made Tutorial Parent Page(just testing..) as a main page..then i made a new page called Tutorial Child Page (also just to test) and insert it under Tutorial Parent Page.Unfortunately,the child page is not under the parent page..it turn out to be a page which tagged as uncategorized..i have no idea how to change the uncategorized tag into tutorial tag (so that all the tutorials will be under Tutorial category)
    then i start using post and make Tutorial (post not page).After that i start making a post such as Tutorial#2(child title) and insert it under Tutorial (parent title)..this time i am able to tag it under Tutorial tag.Luckily all the tutorial posts(child title) are under TUtorial(parent title).
    the questions are:
    1)why my child title page can’t be inserted into parent page.
    2)how do i change the uncategorized tag page into Tutorial category..(i’m talking about page and not post).

    Although the problem (inserting child title into parent title) solve when i use post, i still want to figure out how to do it using page..
    thanks in advance

    http://www.archi-sketch.com

    • @archisketch
      It’s not possible to assign a category to a page. Nor is it possible to assign a tag to a page. Only posts can have categories and tags. So your question #2 might be a matter of confusing “page” with “post”.

      Likewise, it sounds like your “child page” in question #1 might actually be a post, which would explain why you can’t make it a subpage.

  7. Mark,

    It seems necessary to ALSO have a navigation plugin. Yes? If so, which one do you use? There are many.

    Without the navigation plugin, the subpages do not show up in a sidebar, it seems. At least, they’re not showing up in mine.

    Jane

  8. The problem doesn’t seem to be creating the child page; it seems to be getting the child page to appear when one is on the parent page. I can create my child page, but cannot get it to appear. The WordPress tells you how to create a child page and it’s there, but it simply does not appear when one is on the parent page. In WordPress 2.8 there is no easy way to check or change the “depth” of the nesting.

    • Hi Jane,
      Thanks for your questions. 1. Can you share the URL for your site? 2. What theme are you using?

      Some themes will show child pages in navigation – either in the main nav at the top of the page, or in the sidebar, or both. Others don’t.

      The “Exclude Pages” plugin by Simon Wheatley is very good. It lets you hide pages in navigation, but it sounds like you want to do the opposite.

      • Hi Mark. Thanks.

        The URL is dogsdontlookbothways.com/joeys_blog. The theme is Albion. You are correct, I want to do the opposite: I would be happy to show (then worry about excluding).

        Also, if it helps, I have this code in the header:

        /* Header ++++++++++++ */
        .header { width: 810px; padding: 25px 30px 10px 30px; margin-bottom: 10px; border-bottom: solid 1px
        etc.

        Thanks zillions.

        Jane

      • Hi Jane,
        Have you added the Pages widget to your sidebar?

        I loaded the Albeo theme (your theme) on a test site and subpages do display in the sidebar Pages navigation:
        http://mcbuzz.info/about/graphic-design/

        I also added the Exclude Pages plugin, and using that I was able to hide the link to the “Graphic Design” page in the sidebar nav. You can see only one subpage link in the sidebar nav (”Web Development”). The other is hidden using the plugin.

  9. Mark,

    That did it! The reason I never put the pages widget in the side bar is because it seemed repetitive (as the pages are listed along the top already). Now I see its function.

    Is that the only way to access a page? Through the page navigation?

    Then I guess the next challenge is to figure out how to do those drop down menus from the parent pages. Albion has the pages listed along the top. With only one sidebar for Albion, I don’t want to put everything there; it becomes dysfunctional!

    Thanks,

    Jane

    • Right. The dropdown navigation for subpages is a great feature. I don’t think you want to try to add that yourself. It’s complicated. Have you looked at some of the “premium” WordPress themes? See the Business Blogging 101 Resources page. Several of these have very good dropdown nav for subpages.

      • You are correct; I saw the code today and it is complicated! Lots of backing up databases…And then if it still doesn’t work….Yikes! Changing themes may be in the cards down the road!

  10. Mark,

    Your sidebar navigation looks different: First, it has the little arrows that points to and indicates child pages. Secondly, it has the hover feature! Delightful!

    I’m guessing you used some widget to make this magic appear! Care to share?

    Jane

  11. Thanks very much – this has been stumping me for several months now!

  12. hi.. I’ve been trying to create a child page under a parent page.. but it’s not working.. i have chose the right to be its parent but when i visit the site when i hover the mouse in the parent page, the child page is not appearing..

    somebody help me please.. i have a deadline to make.. thanks

Leave a Reply

You must be logged in to post a comment.