Ci sono diversi plugin che aiutano a mostrare, nascondere o modificare dinamicamente elementi all’interno del menu di WordPress.

Ma per il massimo controllo, come sempre, possiamo utilizzare la programmazione.

Il filtro wp_nav_menu_items

Questo filtro da la possibilità di filtrare la stringa che contiene l’HTML del menu. Quindi per aggiungere un elemento basterà aggiungere a questa stringa il nostro HTML, come per esempio un’altra voce

<li><a href="'. $miaUrl .'">'.$miaAnchor.'</a></li>

Ecco un esempio per mostrare Login / Logout a seconda se l’utente è autenticato o meno.

add_filter( 'wp_nav_menu_items', 'add_loginout_link', 10, 2 );
function add_loginout_link( $items, $args ) {
    if (is_user_logged_in() && $args->theme_location == 'top_nav') {
        global $current_user;
        wp_get_current_user();
        $items .= '<li><a href="'. wp_logout_url() .'">LogOut '.$current_user->display_name.'</a></li>';
    }
    elseif (!is_user_logged_in() && $args->theme_location == 'top_nav') {
        $items .= '<li><a href="'. site_url('wp-login.php') .'">Log In</a></li>';
    }
    return $items;
}

Il primo controllo è per vedere se l’utente è autenticato e per controllare la posizione del menu (ovvio non vogliamo modificare tutti i menu, ma uno in preciso).

Quindi se l’utente è autenticato recupero info sul suo User e le utilizzo insieme alla funzione wp_logout_url() che mi restituisce il link per il logout.

Aggiungo la mia stringa ad $items che restituisco con return.

0 commenti

Lascia un Commento

Vuoi partecipare alla discussione?
Sentitevi liberi di contribuire!

Lascia un commento

Il tuo indirizzo email non sarà pubblicato. I campi obbligatori sono contrassegnati *