Ajout du lien «Déconnexion» au menu de navigation.

14

Comment puis-je ajouter un lien au menu de navigation principal avec l'attribut class="right" ?

J'ai essayé d'ajouter un lien statique à example.com/wp-logout.php?action=logout mais cela mène à une page de confirmation de déconnexion. Est-il possible d'en faire un lien de déconnexion?

    
posée Zach Russell 29.07.2014 - 20:54

4 réponses

34

Vous pouvez y parvenir en utilisant le crochet wp_nav_menu_items . Jetons un coup d’œil au morceau de code suivant qui montre le lien de connexion / déconnexion à l’emplacement du 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;
}

C’est ce que nous avons mis en œuvre dans l’exemple ci-dessus.

  1. D'abord ajouté un filtre pour wp_nav_menu_items hook et attaché un fonctionner à elle.
  2. Après avoir vérifié l'emplacement du thème primary , nous avons vérifié si l'utilisateur est connecté ou non.
  3. Si vous êtes connecté, nous avons affiché le lien Log Out sinon le Log In lien.
  4. Nous avons transmis le lien permanent de la page en cours de visualisation au URL de connexion afin que l'utilisateur sera redirigé vers la page en cours après connexion réussie.
  5. Nous avons utilisé le class="right" du code ci-dessus pour répondre à vos besoins. exigence.

Vous trouverez une explication détaillée sur ce blog .

    
réponse donnée Chittaranjan 30.07.2014 - 09:19
2

Essayez d'ajouter un lien personnalisé avec enlace . Cela a fonctionné pour moi!

    
réponse donnée Marcelo Oliveira 13.11.2016 - 20:12
0

Mon menu de bas de page est un widget . J'ai donc eu du mal à utiliser le code de Chittaranjan. La version modifiée suivante fonctionne pour moi. J'ai également changé les liens et les ai rendus "dynamiques": la connexion mène à une page de votre choix, la déconnexion reste sur la page actuelle ou est envoyée à la maison si la page actuelle est votre page de connexion (privée). Idéalement, il vérifierait si votre page de connexion est réellement privée, mais je ne sais pas comment faire cela, désolée.

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) .'">'. __("Log Out") .'</a></li>';
        } else {
            $items .= '<li class="right"><a href="'. wp_login_url($loginlink) .'">'. __("Log In") .'</a></li>';
        }
    }
    return $items;
}
    
réponse donnée Ralf 03.09.2018 - 15:17
-2
add_filter( 'wp_nav_menu_items', 'add_loginout_link', 15, 5 );

function add_loginout_link( $menus, $args ) {

  if (is_user_logged_in() && $args->theme_location == 'primary') {

   $menus .= '<li><a href="'. wp_logout_url( get_permalink( woocommerce_get_page_id( 'myaccount' ) ) ) .'">Log Out</a></li>';
    }

  elseif (!is_user_logged_in() && $args->theme_location == 'primary') {

   $menus .= '<li><a href="' . get_permalink( woocommerce_get_page_id( 'myaccount' ) ) . '">Log In</a></li>';
  }

  return $menus;
}
    
réponse donnée Ankush Samyal 30.08.2018 - 12:00

Lire d'autres questions sur les étiquettes