• 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:

    <?php
    
    global $post; 
    
    if (is_page() && $post->post_parent ) {
    	// This is a subpage
     wp_list_pages("title_li=&link_before=<h3>&link_after=</h3>&include=".$post->post_parent);
     wp_list_pages("title_li=&link_before=<h4>&link_after=</h4>&child_of=".$post->post_parent);
    
    } else {
    	// This is not a subpage
      wp_list_pages("title_li=&link_before=<h3>&link_after=</h3>&include=".$post->ID);
      wp_list_pages("title_li=&link_before=<h4>&link_after=</h4>&child_of=".$post->ID);
    }
    
    ?>

    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?

    Thanks!
    Joe

Viewing 9 replies - 1 through 9 (of 9 total)
  • Thread Starter floodlightdesign

    (@floodlightdesign)

    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.

    Thanks.
    Joe

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

    Moving to Advanced won’t change anything.

    Thread Starter floodlightdesign

    (@floodlightdesign)

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

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

    Joe

    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.

    Thread Starter floodlightdesign

    (@floodlightdesign)

    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.

    Joe

    Thread Starter floodlightdesign

    (@floodlightdesign)

    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?

    Joe

    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.
    http://trac.wordpress.org/
    http://lists.automattic.com/mailman/listinfo/

    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.