WordPress Snippets at WPcustoms

Highlight menu item of wp_nav_menu on CPT

The code below finds the menu item with the class “[CPT]-menu-item” and adds another “current_page_parent” class to it. Furthermore, it removes the “current_page_parent” from the blog menu item, if this is present.


/**
 * Snippet Name: Highlight menu item of wp_nav_menu on CPT
 * Snippet URL: https://wpcustoms.net/snippets/highlight-menu-item-of-wp_nav_menu-on-cpt/
 */
  function current_type_nav_class($classes, $item) {
    // Get post_type for this post
    $post_type = get_query_var('post_type');
 
    // Removes current_page_parent class from blog menu item
    if ( get_post_type() == $post_type )
        $classes = array_filter($classes, "get_current_value" );
 
    // Go to Menus and add a menu class named: {custom-post-type}-menu-item
    // This adds a current_page_parent class to the parent menu item
    if( in_array( $post_type.'-menu-item', $classes ) )
        array_push($classes, 'current_page_parent');
 
    return $classes;
}
function get_current_value( $element ) {
    return ( $element != "current_page_parent" );
}
add_filter('nav_menu_css_class', 'current_type_nav_class', 10, 2);