Tout
J'utilise le menu personnalisé de wordpress et il y a un menu comme Déconnexion. Je connais la fonction de déconnexion de wordpress <?php echo wp_logout_url(); ?>
Mais comment puis-je l'utiliser dans un menu personnalisé?
Vous ne savez pas comment et où créer un bouton personnalisé, mais vous pouvez ajouter un tel lien par filtre: Ajoutez une fonction de filtre à 'wp_nav_menu_objects'
et insérez le lien là où vous en avez besoin.
Voici un exemple de base:
add_filter( 'wp_nav_menu_objects', 'wpse_46547_add_log_out_link', 10, 2 );
function wpse_46547_add_log_out_link( $sorted_menu_items, $args )
{
$link = array (
'title' => 'Log out',
'menu_item_parent' => 0,
'ID' => '',
'db_id' => '',
'url' => wp_logout_url()
);
$sorted_menu_items[] = (object) $link;
return $sorted_menu_items;
}
Vous devriez modifiez le code:
has_log_out_link
pour le paramètre menu_class
sur wp_nav_menu
et tester $args->menu_class
.menu_item_parent
sur un ID d'article autre que 0
si vous avez besoin du lien dans un sous-menu.Au cas où quelqu'un d'autre aurait des difficultés avec cela, le moyen le plus simple que j'ai trouvé était simplement d'ajouter l'élément de menu Déconnexion exactement où vous le souhaitez, à l'aide de l'option de lien personnalisé. Faites de l’URL quelque chose d’unique, comme logouturl, et ajoutez simplement ce code à votre fichier functions.php ou à l’endroit où vous préférez ajouter du code personnalisé.
add_filter( 'wp_nav_menu_items', 'wp123e_loginout_menu_link', 10, 2 );
function wp123e_loginout_menu_link( $items, $args ) {
if ($args->theme_location == 'primary') {
if (is_user_logged_in()) {
$items = str_replace('logouturl', wp_logout_url(), $items);
}
}
return $items;
}
N'oubliez pas de remplacer ce premier paramètre de str_replace par la chaîne utilisée dans le lien personnalisé des paramètres du menu. Vous devrez peut-être également changer l’emplacement_thème de l’emplacement principal à l’emplacement approprié.