I need the Wordpress menu to include the 'current-menu-ancestor' class to reflect that site is currently in the recipe section. Supposing I have a recipe custom post type. I have the following code in my functions.php but it's not working:
function add_active_item_classes($classes = array(), $menu_item = false){
if ( get_post_type() == 'recipe' && $menu_item->title == 'Recipes') {
$classes[] = 'current-menu-ancestor';
return $menuclasses;
}
}
Also I don't know what filter hooks I will use to have this effect? Thanks for your suggestion and assistance.
I need the Wordpress menu to include the 'current-menu-ancestor' class to reflect that site is currently in the recipe section. Supposing I have a recipe custom post type. I have the following code in my functions.php but it's not working:
function add_active_item_classes($classes = array(), $menu_item = false){
if ( get_post_type() == 'recipe' && $menu_item->title == 'Recipes') {
$classes[] = 'current-menu-ancestor';
return $menuclasses;
}
}
Also I don't know what filter hooks I will use to have this effect? Thanks for your suggestion and assistance.
Share Improve this question asked Jan 2, 2013 at 2:27 Emerson ManingoEmerson Maningo 6192 gold badges12 silver badges29 bronze badges2 Answers
Reset to default 1This is the final working code:
<?php
function additional_active_item_classes($classes = array(), $menu_item = false){
global $wp_query;
if(in_array('current-menu-item', $menu_item->classes)){
$classes[] = 'current-menu-item';
}
if ( $menu_item->post_name == 'product' && is_post_type_archive('product') ) {
$classes[] = 'current-menu-item';
}
if ( $menu_item->post_name == 'product' && is_singular('product') ) {
$classes[] = 'current-menu-item';
}
return $classes;
}
add_filter( 'nav_menu_css_class', 'additional_active_item_classes', 10, 2 );
?>
This code add class 'current-menu-ancestor' to parent item menu of your child CPT or custom taxonomy or default single post, in case you do not have a nested menu structure in the admin panel - only if you have 'level 0' menu. For example - if you have Page Product, which display products grid and you go to the single product - WP will not see the parent menu item. The code below improve this:
function additional_active_item_classes( $classes = array(), $menu_item = false ) {
// custom taxonomy
if ( $menu_item->title == 'Custom Tax Name Page' && is_tax('custom_tax') ) {
$classes[] = 'current-menu-ancestor';
}
// custom post type single
if ( $menu_item->title == 'Custom Post Type Page' && is_singular('products') ) {
$classes[] = 'current-menu-ancestor';
}
// blog post single
if ( $menu_item->title == 'Blog Page' && is_singular('post') ) {
$classes[] = 'current-menu-ancestor';
}
return $classes;
}
add_filter( 'nav_menu_css_class', 'additional_active_item_classes', 10, 2 );
发布者:admin,转转请注明出处:http://www.yc00.com/questions/1745624206a4636705.html
评论列表(0条)