it-swarm.com.de

Wie kann man ein bestimmtes wp_nav_menu in der Funktion ansprechen?

Ich füge eine bestimmte Klasse zu meinem wp_nav_menu-Link über function.php hinzu, kann aber kein bestimmtes Menü ansteuern: Dies ist, was ich für alle wp_menu_nav-Ziele auf meiner Seite erhalten habe:

function add_menuclass_active($ulclass) {
 return preg_replace('/<a /', '<a class="list-group"', $ulclass, 1);
  }
 add_filter('wp_nav_menu', 'add_menuclass_active');

Ich habe auch das Folgende ohne Glück versucht

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 );
3
rob.m

Ich habe den folgenden Code ausprobiert und es hat funktioniert.

Fügen Sie dies Ihrem functions.php hinzu

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

Zuletzt müssen Sie die Option "Menu1" für das spezifische Menü auswählen, in dem Sie die benutzerdefinierten Ankerklassen aus dem Dashboard Apperance->menus hinzufügen müssen. (Wählen Sie menu2 oder menu3 für andere Menüs, für deren Ankerverknüpfungen die benutzerdefinierte Klasse nicht erforderlich ist.)

Um "aktive Klasse" zum ersten Menüpunkt des jeweiligen Menüs hinzuzufügen, probieren Sie diesen aus:

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

Wenn die aktive Klasse zum ersten Menüpunkt aller Menüs hinzugefügt werden muss, verwenden Sie Folgendes:

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