Aggiungere il link "Logout" al menu di navigazione

29 lug 2014, 21:54:34
Visualizzazioni: 85.3K
Voti: 19

Come posso aggiungere un link al menu di navigazione principale con l'attributo class="right"?

Ho provato ad aggiungere un link statico a example.com/wp-logout.php?action=logout ma questo porta a una pagina di conferma del logout. C'è un modo per renderlo un link di logout diretto?

6
Commenti

Hai visto domande e risposte esistenti come questa?

fuxia fuxia
29 lug 2014 22:04:32

Hai visto wp_loginout()?

kaiser kaiser
30 lug 2014 19:18:01

Ho rimosso la risposta accettata perché era plagio da questo sito senza attribuzione.

fuxia fuxia
31 lug 2014 02:13:36

Alla fine ho usato qualcosa di simile; almeno utilizzando la funzione loginout(). Posterò esattamente quello che ho fatto la prossima volta che sarò di fronte al mio computer. Grazie @toscho

Zach Russell Zach Russell
31 lug 2014 05:30:36

Puoi utilizzare questo plugin gratuito https://wordpress.org/plugins/login-logout-register-menu/ per ottenere lo stesso risultato facilmente.

Vinod Dalvi Vinod Dalvi
16 apr 2017 10:40:06

Puoi anche utilizzare un semplice plugin: https://wordpress.org/plugins/login-or-logout-menu-item/ Non ti porta alla pagina di conferma del logout.

Ray Meyer Ray Meyer
27 mag 2020 11:12:51
Mostra i restanti 1 commenti
Tutte le risposte alla domanda 4
2
49

Puoi ottenere questo risultato utilizzando l'hook wp_nav_menu_items. Diamo un'occhiata al seguente pezzo di codice che mostra il link di login/logout nella posizione del menu primary.

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

Ecco cosa abbiamo implementato nell'esempio sopra.

  1. Prima abbiamo aggiunto un filtro per l'hook wp_nav_menu_items e collegato una funzione ad esso.
  2. Dopo aver verificato la posizione del tema primary, abbiamo controllato se l'utente è loggato o meno.
  3. Se loggato, abbiamo mostrato il link Log Out, altrimenti il link Log In.
  4. Abbiamo passato il permalink della pagina attualmente visualizzata all'url di login in modo che l'utente venga reindirizzato alla pagina corrente dopo il login effettuato con successo.
  5. Abbiamo utilizzato class="right" nel codice sopra per soddisfare la tua richiesta.

Puoi trovare una spiegazione dettagliata su questo blog.

30 lug 2014 10:19:10
Commenti

@timo-s Nel tema Twenty Seventeen (child) questo funzionerà solo con una posizione del menu top: if ($args->theme_location == 'top').

Iurie Iurie
2 set 2017 23:59:25

per me la posizione necessaria era primary-menu

Toskan Toskan
3 set 2017 07:08:05
1

Prova ad aggiungere un link personalizzato con http://example.com/wp-login.php?action=logout Ha funzionato per me!

13 nov 2016 21:12:32
Commenti

Questo mostra all'utente il messaggio "Sei sicuro di voler uscire?", a causa della mancanza del nonce.

random_user_name random_user_name
10 lug 2017 21:28:34
0

Se sei flessibile nell'aggiungere un plugin per ottenere questa funzionalità, potresti usare: https://wordpress.org/plugins/login-logout-register-menu/

Aggiunge semplicemente una sezione molto pratica nel costruttore dei menu. Puoi combinarlo con un altro plugin per limitare quali voci di menu vengono mostrate agli utenti loggati, quali a quelli non loggati e quali a tutti.

Screenshot del plugin Login Logout Register Menu nell'editor menu di WordPress

16 lug 2020 21:01:50
0

Il mio menu nel footer è un widget, quindi ho avuto difficoltà a utilizzare il codice di Chittaranjan. La seguente versione modificata funziona per me. Ho anche modificato i link rendendoli "dinamici": il login porta a una pagina a scelta, il logout rimarrà sulla pagina corrente o reindirizzerà alla home se la pagina corrente è la tua pagina di login (privata). Idealmente dovrebbe verificare se la tua pagina di login è effettivamente privata, ma non so come farlo, mi dispiace.

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) .'">'. __("Disconnetti") .'</a></li>';
        } else {
            $items .= '<li class="right"><a href="'. wp_login_url($loginlink) .'">'. __("Accedi") .'</a></li>';
        }
    }
    return $items;
}
3 set 2018 16:17:31