如何在函数中定位特定的wp_NAV_MENU?

时间:2014-10-06 作者:rob.m

我正在通过函数在我的wp\\U nav\\U菜单链接上添加一个特定类。php,但我无法针对特定菜单:这是我得到的针对我页面上所有wp\\U menu\\U nav的菜单:

function add_menuclass_active($ulclass) {
 return preg_replace(\'/<a /\', \'<a class="list-group"\', $ulclass, 1);
  }
 add_filter(\'wp_nav_menu\', \'add_menuclass_active\');
我也尝试过使用以下方法,但没有成功

function add_menuclass_active( $nav_menu, $args ) {
if( $args->theme_location == \'CUSTOM MENU\' )
    return preg_replace( \'/<a /\', \'<a class="list-group"\', $nav_menu, 1 );
    return $nav_menu;
}
add_filter( \'wp_nav_menu\', \'add_menuclass_active\', 10, 2 );

1 个回复
最合适的回答,由SO网友:Zammuuz 整理而成

我尝试了下面的代码,它成功了。

将此添加到functions.php

register_nav_menus(array(
    \'top-menu\' => __(\'Menu1\', \'twentyfourteen\'),
    \'side-menu\' => __(\'Menu2\', \'twentyfourteen\'),
    \'footer-menu\' => __(\'Menu3\', \'twentyfourteen\')
) );

function my_walker_nav_menu_start_el($item_output, $item, $depth, $args) {
    $menu_locations = get_nav_menu_locations();

    if ( has_term($menu_locations[\'top-menu\'], \'nav_menu\', $item) ) {
       $item_output = preg_replace(\'/<a /\', \'<a class="list-group" \', $item_output, 1);
    }

    return $item_output;
}
add_filter(\'walker_nav_menu_start_el\', \'my_walker_nav_menu_start_el\', 10, 4);
最后,您必须为特定菜单选择“Menu1”选项,您必须在该菜单上从仪表板添加锚定自定义类Apperance->menus. (选择menu2menu3 对于锚定链接不需要自定义类的其他菜单)

要将“活动类”添加到特定菜单的第一个菜单项,请尝试以下操作:

function my_walker_nav_menu_start_el($item_output, $item, $depth, $args) {
    $menu_locations = get_nav_menu_locations();

    if ( has_term($menu_locations[\'top-menu\'], \'nav_menu\', $item) ) {
       $item_output = preg_replace(\'/<a /\', \'<a class="list-group" \', $item_output, 1);
        if ($item->menu_order == 1){
            $item_output = preg_replace(\'/<a /\', \'<a class="list-group active" \', $item_output, 1);
        }
    }

    return $item_output;
}
add_filter(\'walker_nav_menu_start_el\', \'my_walker_nav_menu_start_el\', 10, 4);
如果必须将活动类添加到所有菜单的第一个菜单项中,请使用以下选项:

function my_walker_nav_menu_start_el($item_output, $item, $depth, $args) {
    $menu_locations = get_nav_menu_locations();

    if ( has_term($menu_locations[\'top-menu\'], \'nav_menu\', $item) ) {
       $item_output = preg_replace(\'/<a /\', \'<a class="list-group" \', $item_output, 1);
    }
    if ($item->menu_order == 1){
        $item_output = preg_replace(\'/<a /\', \'<a class="active" \', $item_output, 1);
    }
    return $item_output;
}
add_filter(\'walker_nav_menu_start_el\', \'my_walker_nav_menu_start_el\', 10, 4);

结束