Support » Everything else WordPress » wp_list_pages Active State

  • I need to style a navigation list generated by wp_list_pages using css. There will be multiple top level pages and multiple subnav pages.

    For some reason when I use this:

    global $post; 
    if (is_page() && $post->post_parent ) {
    	// This is a subpage
    } else {
    	// This is not a subpage

    I am not getting the class added on the li elements when the current page is active. All I get is li.page_item. When I click on a SUB-page the parent’s class changes to .current_page_ancestor .current_page_parent, but when clicking on the main nav item I get no class change. I looked into the post-template include file where the function is located, but I don’t see how they are creating those active classes.

    Any ideas about what is going on?


Viewing 9 replies - 1 through 9 (of 9 total)
  • Okay so I figured out a little more.

    The wp_list_pages function calls the walk_page_tree function which uses the Walker_Page class. That class is where the CSS classes get set. There is a $current_page variable that is being passed to that class that is returning a NULL value no matter what page you are on. This is the problem.

    Can someone move this post to the Advanced category?? I want to get this fixed so others can use this active page functionality.


    But for others it works.
    We always get the “current_page_item” class.

    Moving to Advanced won’t change anything.

    Who’s site is it working on? Can you post a link?

    I’ve never seen this functioning correctly on a wordpress site.


    I don’t use the code you posted. But for a plain wp_list_pages the “current_page_item” is always added. Even on my blog.

    Well, look at that….it works perfectly on your site.

    So strange that mine doesn’t work….I even striped my nav function to

    <?php wp_list_pages(“title_li=”); ?>

    Still no current_page_item added to the current page.

    I’m confused.


    Okay, I figured it out.

    Its the Walker changes that were made in the 2.7 Beta 3 release that break this functionality.

    If you replace the classes.php file in v2.7B3 with the classes.php file in v2.7B2 the current_page_item class shows up again.

    I really do think this is a bug….can we report it some how?


    You posted your version as 2.6.
    You shouldn’t use alpha/beta on production sites…
    There is trac, there a mailing lists (testers, hackers) – get involved if you like testing.

    I would love to know how you fixed this issue, floodlightdesign. I am using <div class="tabs"><ul><?php wp_list_pages('title_li=' ); ?></ul></div> in header.php and I am getting current_page_item to appear in the category-tabbed navigation. But I can’t get current_page_parent to appear when I click a post related to a category tab.

    I installed WP 2.7 RC 3 this morning, btw.

    Anybody know if this is suppose to be fixed?

    I think I’m experiencing the same problem with a fresh install.

Viewing 9 replies - 1 through 9 (of 9 total)
  • The topic ‘wp_list_pages Active State’ is closed to new replies.