
🔑 Pulsante di login e logout nel menu di WordPress: 2 metodi funzionanti
Hai bisogno di un pulsante «Accedi» nel menu che dopo l’autorizzazione diventi automaticamente «Esci»? È un’esigenza che si presenta su quasi tutti i siti con registrazione: forum, negozi online, LMS, portali associativi, perfino blog con commenti.
In passato se ne occupava il plugin baw-login-logout-menu. A giugno 2025 l’autore ne ha chiesto la rimozione dalla directory di WordPress.org. Il plugin non veniva aggiornato da 9 anni, usava la funzione create_function rimossa da PHP 8 e conteneva una vulnerabilità XSS. In pratica, due siti su tre in cui lo avevamo incontrato erano già migrati a soluzioni moderne.
Ecco due metodi funzionanti che fanno esattamente la stessa cosa: uno rapido via plugin e uno completo con codice proprio. Entrambi testati sulle versioni correnti di WordPress e PHP.
💡 Panoramica rapida:
- Installa il plugin Login Logout Menu, trascina la voce nel menu e configura i redirect.
- Aggiungi il filtro wp_nav_menu_items al functions.php del tuo child theme per il controllo totale.
- Includi le icone Font Awesome tramite Better Font Awesome o una riga wp_enqueue_style.
Metodo 1: plugin Login Logout Menu, rapido e senza codice
Un sostituto moderno del defunto baw-login-logout-menu, il plugin Login Logout Menu di WPBrigade. Versione 1.5.2, compatibile con WordPress 6.9 e PHP 8.3. A differenza del suo predecessore, non richiede di armeggiare con #bawloginout# nel campo URL: tutto funziona tramite l’interfaccia nativa dei menu.

Installa da Plugin → Aggiungi nuovo, cerca login-logout-menu. Dopo l’attivazione, apri Aspetto → Menu. Nella colonna di sinistra vedrai un blocco Login/Logout/Register/Profile con sei voci. La più usata, Login | Logout: mostra automaticamente «Accedi» ai visitatori e «Esci» agli utenti autenticati.
Trascinala nel menu desiderato. Espandi la voce aggiunta e inserisci l’URL di reindirizzamento dopo il login e dopo il logout. Lascia i campi vuoti e l’utente resta sulla stessa pagina. Inserisci /my-account/ e dopo il login arriverà alla dashboard del proprio account.
Il plugin aggiunge anche le voci «Registrati», «Profilo», «Nome utente» e «Reimposta password». Sono opzionali, ma per un sito associativo avere profilo e registrazione nel menu ha senso.
- Pro: zero codice, configurazione in un minuto, funziona con qualsiasi menu a blocchi o classico.
- Contro: un plugin in più nell’amministrazione. Per il 90% dei siti non è un problema.
- Prezzo: gratuito, scarica da WordPress.org.
Metodo 2: filtro wp_nav_menu_items, controllo totale sul markup
Non vuoi installare un plugin per un pulsante? Il compito si risolve con il filtro wp_nav_menu_items. Il codice va nel functions.php del child theme o tramite il plugin Code Snippets. Nel tema parent il file verrebbe sovrascritto durante gli aggiornamenti.
Aggiungi al functions.php del child theme:
1 /** 2 * Adds a login/logout button to the specified menu. 3 */ 4 add_filter( 'wp_nav_menu_items', 'sdstudio_add_loginout_link', 10, 2 ); 5 6 function sdstudio_add_loginout_link( $items, $args ) { 7 // Replace 'primary' with the slug of your menu 8 if ( 'primary' !== $args->theme_location ) { 9 return $items; 10 } 11 12 if ( is_user_logged_in() ) { 13 $link = '<li class="menu-item menu-item-logout">'; 14 $link .= '<a href="' . wp_logout_url( home_url() ) . '">Log Out</a>'; 15 $link .= '</li>'; 16 } else { 17 $link = '<li class="menu-item menu-item-login">'; 18 $link .= '<a href="' . wp_login_url( get_permalink() ) . '">Log In</a>'; 19 $link .= '</li>'; 20 } 21 22 return $items . $link; 23 }
Il filtro wp_nav_menu_items si attiva quando ogni menu viene renderizzato. Il controllo theme_location assicura che il pulsante compaia solo in una posizione, non in tutti i menu contemporaneamente. is_user_logged_in() determina lo stato: true per autenticato, false per visitatore. Le funzioni wp_login_url() e wp_logout_url() restituiscono URL corretti con token nonce, più sicuri che scrivere in modo fisso /wp-login.php.

Dopo aver aggiunto il codice, nel menu compare un link testuale «Log In» o «Log Out». Senza stili aggiuntivi, eredita la formattazione del tema.

- Pro: zero plugin, controllo totale su HTML e CSS.
- Contro: devi conoscere il
theme_locationdel menu. Se non lo sai, apri il fileheader.phpdel tema, individua la chiamatawp_nav_menu()e controlla il parametrotheme_location. Nella maggior parte dei casi èprimary,headeromain. - Prezzo: gratuito, il codice è tuo.
Bonus: icone Font Awesome per i pulsanti di login e logout
Il testo «Log In» e «Log Out» funziona, ma un pulsante con un'icona risalta di più. La via più semplice: il plugin Better Font Awesome (oltre 200.000 installazioni). Installa, attiva, le icone sono subito disponibili: il plugin carica automaticamente l'ultima versione.
Per il metodo con codice, aggiungiamo le icone di FA 6 direttamente nel markup del filtro:
1 if ( is_user_logged_in() ) { 2 $link = '<li class="menu-item menu-item-logout">'; 3 $link .= '<a href="' . wp_logout_url( home_url() ) . '">'; 4 $link .= '<i class="fa-solid fa-right-from-bracket" aria-hidden="true"></i> Log Out'; 5 $link .= '</a></li>'; 6 } else { 7 $link = '<li class="menu-item menu-item-login">'; 8 $link .= '<a href="' . wp_login_url( get_permalink() ) . '">'; 9 $link .= '<i class="fa-solid fa-user" aria-hidden="true"></i> Log In'; 10 $link .= '</a></li>'; 11 }
Le classi fa-solid fa-user e fa-solid fa-right-from-bracket sono la sintassi attuale di Font Awesome 6. Le vecchie fa fa-user / fa fa-sign-out funzionano ancora per inerzia, ma su installazioni nuove potrebbero non essere renderizzate.
Se non vuoi installare un plugin separato per le icone, includi FA con una riga in functions.php:
1 add_action( 'wp_enqueue_scripts', function() { 2 wp_enqueue_style( 3 'font-awesome', 4 'https://cdnjs.cloudflare.com/ajax/libs/font-awesome/6.7.0/css/all.min.css' 5 ); 6 });
Configurare i redirect dopo login e logout
Entrambi i metodi, per impostazione predefinita, riportano l'utente dov'era. Ma a volte serve qualcosa di diverso: dopo il login, alla dashboard; dopo il logout, alla homepage.

Nel plugin Login Logout Menu, i campi per il redirect sono direttamente nelle impostazioni della voce di menu: espandi la voce aggiunta e inserisci l'URL.
Per il metodo con codice, wp_login_url() accetta un parametro $redirect: l'URL a cui inviare gli utenti dopo il login. wp_logout_url() funziona allo stesso modo:
1 $login_url = wp_login_url( home_url( '/my-account/' ) ); 2 $logout_url = wp_logout_url( home_url( '/' ) );
Se la tua logica di redirect è più complessa (pagine diverse per ruoli diversi, tracciamento dei referral), installa Redirection. Due milioni di installazioni, valutazione 4.5, praticamente uno standard di settore per WordPress. Il plugin non riguarda il pulsante di login, ma la gestione di tutti i redirect: 301/302, tracciamento dei 404, importazione CSV.

⁉️🤔 Domande frequenti
Posso creare il pulsante senza plugin e senza modificare codice?
Sì, ma solo nei temi in cui il menu permette di selezionare «Log In» da un elenco predefinito. Controlla Aspetto → Menu nella scheda «Link personalizzati»: in Astra, GeneratePress e Kadence questa opzione esiste. Se non c'è un menu a tendina, usa il metodo 2 con il filtro. Non è più difficile che sostituire un link.
Perché il vecchio plugin baw-login-logout-menu è sparito dalla directory?
L'autore ne ha richiesto la chiusura a giugno 2025. Il plugin non veniva aggiornato da 9 anni, usava la funzione
create_functionrimossa da PHP 8 e conteneva una vulnerabilità XSS. Se è ancora sul tuo sito, rimuovilo e sostituiscilo con lo stesso Login Logout Menu: le impostazioni non verranno trasferite, ma il pulsante stesso si può riconfigurare in un minuto.
Come creo un pulsante con icona senza un plugin separato per le icone?
Includi Font Awesome tramite
wp_enqueue_style(la riga nella sezione bonus qui sopra) e aggiungi un tag<i>con la classe appropriata dentro il link nel filtro. L'iconafa-userper il login,fa-right-from-bracketper il logout. Personalizza lo stile tramite le classi CSSmenu-item-loginemenu-item-logout.
Cosa fare se il menu è costruito nell’editor a blocchi (FSE)?
Nei temi a blocchi (Twenty Twenty-Four, Ollie), il menu si costruisce tramite l’editor del sito, non attraverso il classico Aspetto → Menu. Il plugin Login Logout Menu al momento non funziona con i menu a blocchi. Usa il metodo 2 con il filtro:
wp_nav_menu_itemsviene chiamato anche nei temi a blocchi, se il menu è renderizzato tramite il blocco di navigazione.
È sicuro caricare Font Awesome da una CDN su un sito in produzione?
La CDN Cloudflare per Font Awesome è una delle CDN pubbliche più affidabili, serve miliardi di richieste al giorno. Se hai bisogno del pieno controllo, scarica solo le icone che ti servono (
user,right-from-bracket) e caricarle localmente nel tuo tema. Per la maggior parte dei siti, l’opzione CDN è più semplice e non crea problemi.
Cosa scegliere per il tuo caso?
Se il tuo sito ha registrazione, un forum, uno store, un LMS o un portale per membri, un pulsante di login e logout nel menu fa risparmiare clic agli utenti e riduce i rimbalzi dovuti a «non trovavo come accedere».
La scelta tra i metodi è semplice:
- Ti serve subito e senza codice? Installa questo plugin. È mantenuto attivamente, leggero e non crea conflitti con i temi.
- Vuoi ridurre al minimo i plugin o hai bisogno di un markup non standard? Usa il filtro
wp_nav_menu_items. Cinque righe di PHP e il pulsante appare esattamente come lo desideri.
Per le icone, Better Font Awesome copre la maggior parte degli scenari. Se non installi il plugin, una riga con wp_enqueue_style risolve il problema. Collega Redirection quando la logica di redirect va oltre «dopo il login alla dashboard, dopo il logout alla homepage»: per il caso semplice, wp_login_url( $redirect ) è sufficiente.
Entrambi i metodi sono stati testati su Astra, GeneratePress, Kadence e i temi predefiniti di WordPress. Quindici minuti e il pulsante nel tuo menu vive di vita propria: «Accedi» per i visitatori, «Esci» per gli utenti.



