Wechseln Sie ein ganzes Navigationsmenü, wenn der Benutzer angemeldet ist

Ich versuche, ein gesamtes Navigationsmenü (nicht Navigationselemente) bedingt umzuschalten, wenn ein Benutzer angemeldet ist, aber der folgende Code ändert alle Menüs.

Das Menü, das ich auswähle, hat keinen Zielort für das Ziel, das über wp_nav_menu () hinzugefügt wurde.

add_filter( 'wp_nav_menu_args', 'foobar' ); function foobar( $args ) { if ( is_user_logged_in() && $args['menu'] == 'Non-Members Area' ) { $args['menu'] = 'Members Area'; return $args; } } 

Wie ziele ich auf das Menü Nicht-Mitglieder-Bereich?

Solutions Collecting From Web of "Wechseln Sie ein ganzes Navigationsmenü, wenn der Benutzer angemeldet ist"

Es gibt ein paar Probleme mit dem ursprünglichen Code. In der if statement wird $args['menu'] auf Non-Members Area (was dann zu true ausgewertet wird). Es sieht so aus, als ob du dort einen Gleichheits-Check machen möchtest. Eine gute Möglichkeit, dies zu vermeiden, ist die Verwendung von Yoda-Bedingungen .

Außerdem sollte das Array $args immer zurückgegeben werden, daher sollte es aus der bedingten statement entfernt werden. Hier ist eine aktualisierte Version des ursprünglichen Codes:

 add_filter( 'wp_nav_menu_args', 'foobar' ); function foobar( $args ) { if ( is_user_logged_in() && 'Non-Members Area' === $args['menu'] ) { $args['menu'] = 'Members Area'; } return $args; }