Take the 2-minute tour ×
WordPress Development Stack Exchange is a question and answer site for WordPress developers and administrators. It's 100% free, no registration required.

I have a problem with menu organization. I have a Pages with url "pressroom" and have a Category with the same name. I want to make it a one menu item.

Pressroom (sitename.com/pressroom/)

  • page 1 (sitename.com/pressroom/page1/)
  • page 2 (sitename.com/pressroom/page2/)
  • category with posts (sitename.com/category/pressroom/news/)

When I am in Category - nav_menu parent item have a correct css selector current-menu-ancestor current-menu-parent, but when I am go to post of this category (url changed to sitename.com/pressroom/news/postid/) - css selector of parent menu item disappear.

How can I correct this?

share|improve this question
    
I don't understand. You want the menu items to treat categories like "parents" of the posts? Categories are not "parents" of posts, why would they have a selector identifying them as such? –  s_ha_dum Feb 15 '13 at 14:33

1 Answer 1

up vote 2 down vote accepted

Check nav menu target URL for '/pressroom/', then check if it's a post. If it fits, add custom class to that menu item.

<?php
function my_add_posts_page_ancestor_class( $classes, $item ) {
    if( false !== strpos($item->url, '/pressroom/')
    && is_single($item->ID)
    && !is_page($item->ID) ) {
        $classes[] = 'my-ancestor-class';
    }
    return $classes;
}
add_filter('nav_menu_css_class', 'my_add_posts_page_ancestor_class', 10, 2);

The code is untested and can be improved. It's a direction to think about.

Update

See what I've found: Add a class to wp_nav_menu() items with URLs included in the current URL

share|improve this answer

Your Answer

 
discard

By posting your answer, you agree to the privacy policy and terms of service.

Not the answer you're looking for? Browse other questions tagged or ask your own question.