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
.
Lascia un Commento
Vuoi partecipare alla discussione?Sentitevi liberi di contribuire!