it-swarm.com.de

Fügen Sie dem Navigationsmenü den Link "Abmelden" hinzu

Wie kann ich dem primären Navigationsmenü einen Link mit dem Attribut class="right" hinzufügen?

Ich habe versucht, einen statischen Link zu example.com/wp-logout.php?action=logout hinzuzufügen, aber dies führt zu einer Bestätigungsseite für das Abmelden. Gibt es eine Möglichkeit, einen Abmeldelink zu erstellen?

15
Zach Russell

Sie können dies mit dem Hook wp_nav_menu_items erreichen. Werfen wir einen Blick auf den folgenden Code, der den Login/Logout-Link auf der primary-Menüposition zeigt.

add_filter( 'wp_nav_menu_items', 'wti_loginout_menu_link', 10, 2 );

function wti_loginout_menu_link( $items, $args ) {
   if ($args->theme_location == 'primary') {
      if (is_user_logged_in()) {
         $items .= '<li class="right"><a href="'. wp_logout_url() .'">'. __("Log Out") .'</a></li>';
      } else {
         $items .= '<li class="right"><a href="'. wp_login_url(get_permalink()) .'">'. __("Log In") .'</a></li>';
      }
   }
   return $items;
}

Dies haben wir im obigen Beispiel implementiert.

  1. Zuerst wurde ein Filter für wp_nav_menu_items hook hinzugefügt und eine Funktion hinzugefügt.
  2. Nachdem wir den Speicherort für primary überprüft haben, haben wir überprüft, ob der Benutzer angemeldet ist oder nicht.
  3. Wenn Sie angemeldet sind, haben wir den Log Out-Link angezeigt, ansonsten den Log In-Link.
  4. Wir haben den Permalink der aktuell angezeigten Seite an die Anmelde-URL übergeben, damit der Benutzer nach erfolgreicher Anmeldung auf die aktuelle Seite umgeleitet wird.
  5. Wir haben den class="right" für den obigen Code verwendet, um Ihre Anforderung zu erfüllen.

Eine ausführliche Erklärung finden Sie auf diesem Blog .

35
Chittaranjan

Versuchen Sie, einen benutzerdefinierten Link mit http://example.com/wp-login.php?action=logout hinzuzufügen. Es hat bei mir funktioniert!

2

Mein Fußzeilenmenü ist ein Widget , daher hatte ich Schwierigkeiten, den Code von Chittaranjan zu verwenden. Die folgende bearbeitete Version funktioniert für mich. Ich habe auch die Links geändert und sie "dynamisch" gemacht: Die Anmeldung führt zu einer Seite Ihrer Wahl, die Abmeldung bleibt entweder auf der aktuellen Seite oder wird nach Hause gesendet, wenn die aktuelle Seite Ihre (private) Anmeldeseite ist. Im Idealfall wird überprüft, ob Ihre Anmeldeseite tatsächlich privat ist, aber ich weiß nicht, wie das geht, sorry.

add_filter( 'wp_nav_menu_items', 'wti_loginout_menu_link', 10, 2 );

function wti_loginout_menu_link( $items, $args ) {
    //var_dump($args);
    if (($args->menu->slug == 'footer')) {
        if (is_user_logged_in()) {
            $loginlink = '/your-private-page';
            $logoutlink = get_permalink();
            if (strpos($logoutlink, $loginlink) !== false) {
                $logoutlink = '/';
            }
            $items .= '<li class="right"><a href="'. wp_logout_url($logoutlink) .'">'. __("Log Out") .'</a></li>';
        } else {
            $items .= '<li class="right"><a href="'. wp_login_url($loginlink) .'">'. __("Log In") .'</a></li>';
        }
    }
    return $items;
}
0
Ralf