it-swarm.com.de

Targeting eines bestimmten Menüs mit wp_nav_menu_items

Hallo! Ich habe meinen Header mit einem Snippet in meiner functions.php um wp_loginout () erweitert:

    add_filter('wp_nav_menu_items', 'add_login_logout_link', 10, 2);
function add_login_logout_link($items, $args) {

        ob_start();
        wp_loginout('index.php');
        $loginoutlink = ob_get_contents();
        ob_end_clean();

        $items .= '<li>'. $loginoutlink .'</li>';

    return $items;
}

Die Sache ist, dass es den Login-Link in jedem meiner drei Menüs zeigt:

    function register_main_menus() {
   register_nav_menus(
      array(
         'primary-menu' => __( 'Primary Menu' ),
         'secondary-menu' => __( 'Secondary Menu' ),
         'footer-menu' => __( 'Footer Menu' ),
      )
   );
};

Ich möchte den Filter wp_nav_menu_items so ausrichten, dass nur der Login-Link im Hauptmenü enthalten ist. Ideen? Danke im Voraus

2
Kasper Isager

Siehe diese bezogene Frage . Ich schätze in deinem Fall würdest du deinen Code in if( $args->theme_location == 'primary-menu' ) einwickeln.

6

Bitte ändern Sie Ihren Code mit dem folgenden Code. Sie haben vergessen, die Bedingung if ($args->theme_location == 'primary-menu') hinzuzufügen. Prüfen Sie, ob das Menü das primäre Menü ist oder nicht.

add_filter('wp_nav_menu_items', 'add_login_logout_link', 10, 2);
function add_login_logout_link($items, $args) {
    if ($args->theme_location == 'primary-menu') {
        ob_start();
        wp_loginout('index.php');
        $loginoutlink = ob_get_contents();
        ob_end_clean();
        $items .= '<li>' . $loginoutlink . '</li>';
        return $items;
    }
}

function register_main_menus() {
   register_nav_menus(
      array(
         'primary-menu' => __( 'Primary Menu' ),
         'secondary-menu' => __( 'Secondary Menu' ),
         'footer-menu' => __( 'Footer Menu' ),
      )
   );
};
1
Mr. HK