Ajouter le lien "Déconnexion" au menu de navigation
-
-
Avez-vous vu des questionset réponsesexistantes comme [celle-ci] (http://wordpress.stackexchange.com/questions/46547/how-to-use-logout-function-on-custom-menu-link)?Have you seen existing questions and answers like [this one](http://wordpress.stackexchange.com/questions/46547/how-to-use-logout-function-on-custom-menu-link)?
- 1
- 2014-07-29
- fuxia
-
Avez-vous vu [`wp_loginout ()`] (http://queryposts.com/function/wp_loginout/)?Have you seen [`wp_loginout()`](http://queryposts.com/function/wp_loginout/)?
- 0
- 2014-07-30
- kaiser
-
J'ai supprimé la réponse acceptée,carelle a étéplagiée de [ce site] (http://premium.wpmudev.org/blog/how-to-add-a-loginlogout-link-to-your-wordpress-menu/)sans attribution.I have removed the accepted answer, because it was plagiarized from [this site](http://premium.wpmudev.org/blog/how-to-add-a-loginlogout-link-to-your-wordpress-menu/) without attribution.
- 2
- 2014-07-30
- fuxia
-
J'aifini par utiliser quelque chose de similaire;aumoinsen utilisant lafonction loginout ().Jeposteraiexactement ce quej'aifait laprochainefois queje suis devantmon ordinateur.Merci @toschoI ended up using something similar; at least using the loginout() function. I'll post exactly what I did next time I'm in front of my computer. Thanks @toscho
- 0
- 2014-07-31
- Zach Russell
-
Vouspouvez utiliser ceplugingratuit https://wordpress.org/plugins/login-logout-register-menu/pour yparvenirfacilement.You can use this free plugin https://wordpress.org/plugins/login-logout-register-menu/ to achieve the same easily.
- 0
- 2017-04-16
- Vinod Dalvi
-
6 réponses
- votes
-
- 2014-07-30
Vouspouvez yparveniren utilisant le hook
wp_nav_menu_items
. Jetons un coup d'œil aumorceau de code suivant quimontre le lien de connexion/déconnexion à l'emplacement dumenuprimary
.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 quenous avonsimplémenté dans l'exemple ci-dessus.
- J'ai d'abord ajouté unfiltrepour le hook
wp_nav_menu_items
et joint un fonction à lui. - Après avoir vérifié l'emplacement duthème
primary
,nous avons vérifié si l'utilisateurest connecté ounon. - Si vous êtes connecté,nous avonsmontré le lien
Log Out
sinon le lienLog In
lien. - Nous avonstransmis lepermalien de lapage actuellement consultée à la URL de connexion afin que l'utilisateur soit redirigé vers lapage actuelle après connexion réussie.
- Nous avons utilisé le
class="right"
associé au code ci-dessuspour répondre à votre exigence.
Vouspouveztrouver uneexplication détaillée sur ce blog .
You can achieve this using the
wp_nav_menu_items
hook. Let's have a look at the following piece of code which shows the login/logout link on theprimary
menu location.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; }
This is what we have implemented in the above example.
- First added a filter for
wp_nav_menu_items
hook and attached a function to it. - After checking for
primary
theme location, we have checked whether user is logged in or not. - If logged in, we have showed the
Log Out
link otherwise theLog In
link. - We have passed the permalink of the currently viewing page to the login url so that user will be redirected to the current page after successful login.
- We have used the
class="right"
to the above code to meet your requirement.
You can find a detailed explanation on this blog.
-
@timo-s Dans lethème Twenty Seventeen (enfant),celane fonctionnera qu'avec unemplacement demenu `top`:`if ($ args->theme_location=='top') `.@timo-s In the Twenty Seventeen (child) theme this will work only with a `top` menu location: `if ($args->theme_location == 'top')`.
- 0
- 2017-09-02
- Iurie Malai
-
l'emplacement devait êtrepourmoi `menu-principal`location needed to be for me `primary-menu`
- 0
- 2017-09-03
- Toskan
-
- 2016-11-13
Essayez d'ajouter un lienpersonnalisé avec http://example.com/wp-login.php? action=déconnexion Cela afonctionnépourmoi!
Try adding a custom link with http://example.com/wp-login.php?action=logout It worked for me!
-
Celaprésente à l'utilisateur lemessage "Êtes-vous sûr de vouloir vous déconnecter?"prompt,en raison dufait que lenonceestmanquant.This presents the user with the "Are you sure you want to log out?" prompt, due to the fact that the nonce is missing.
- 2
- 2017-07-10
- random_user_name
-
- 2020-07-16
Si vous êtesflexible sur l'ajout d'unpluginpour obtenir cettefonctionnalité,vouspouvez utiliser: https://wordpress.org/plugins/login-logout-register-menu/
Il ajoute simplement une sectiontrèspratique dans legénérateur demenu.Vouspouvez le combiner avec un autrepluginpour restreindre les éléments demenu affichés aux utilisateurs connectés,ceux dont les utilisateurs sont déconnectéset ceux àtout lemonde.
If you're flexible about adding a plugin to get this functionality, you could use: https://wordpress.org/plugins/login-logout-register-menu/
It simply adds a very convenient section in the menu builder. You can combine it with another plugin to restrict what menu items are shown to logged in users, which ones to logged out users, and which ones to everyone.
-
- 2018-09-03
Monmenu depied depageest un widget ,j'ai donceu des difficultés à utiliser le code de Chittaranjan. La versionmodifiée suivantefonctionnepourmoi. J'ai également changé les lienset les ai rendus "dynamiques": la connexionmène à unepage de votre choix,la déconnexion restera soit sur lapage courante,soitenvoyée à l'accueil,si lapage couranteest votrepage de connexion (privée). Idéalement,il vérifierait si votrepage de connexionest réellementprivée,maisje ne saispas commentfaire cela,désolé.
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; }
My footer menu is a widget, therefore I had difficulties using the code by Chittaranjan. The following edited version works for me. I also changed the links and made them "dynamic": login leads to a page of your choice, logout will either stay on the current page, or send to home, if the current page is your (private) login page. Ideally it would check if your login page is actually private, but I don't know how to do that, sorry.
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; }
-
- 2020-05-27
Vouspouvez également utiliser un simpleplugin: https://wordpress.org/plugins/login-or-logout-menu-item/
Celane vous amènepas à lapage de confirmation de déconnexion.
You can also make use of a simple plugin: https://wordpress.org/plugins/login-or-logout-menu-item/
It does not take you to the logout confirmation page.
-
- 2018-08-30
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; }
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; }
-
Vous devezformater votre codeen utilisant 4espaces au début de chaque ligne (voir l'aide).You need to format your code using 4 spaces at the start of each line (see the help).
- 0
- 2018-08-30
- Peter HvD
-
Veuillezne pas annoncer votre site Web.Veuillezmodifier votre réponseen expliquant comment cebloc de code répond à la questionen cours,où l'ajouteret ce qu'ilfait spécifiquement.Please do not advertise your website. Please do edit your answer with an explanation on how this code block answers the question at hand, where to add it, and what specifically it does.
- 0
- 2018-08-30
- Howdy_McGee
Commentpuis-je ajouter un lien vers lemenu denavigationprincipal avec l'attribut
class="right"
?J'aiessayé d'ajouter un lien statique vers
example.com/wp-logout.php?action=logout
mais celamène à unepage de confirmation de déconnexion.Existe-t-il unmoyen d'enfaire un lien de déconnexion?