How to target specific wp_nav_menu in function?

I tried the below code and it worked.

Add this to your 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);

At last you must select the option “Menu1” for the specific menu on which you have to add the anchor custom classes from dashboard Apperance->menus. (select menu2 or menu3 for other menus whose anchor links does not need the custom-class)

To add “active class” to the first menu item of the particular menu then try this one:

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);

If the active class must be added to the first menu item of all menus then use this:

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);

Leave a Comment