Mon wp_logout_url()
fonctionne dès le début.
Mais lorsque je modifie le nouveau mot de passe depuis le début, puis, sur la page de modification du mot de passe, lorsque je clique sur déconnexion, les sorties wp_logout_url()
Vous essayez de vous déconnecter de (nom du site)
Voulez-vous vraiment vous déconnecter?
Voici un extrait de capture d'écran
Aucune suggestion?
Quel est le code qui change le mot de passe?
J'ai eu un problème similaire qui était reproductible à 100%. Le problème pour moi était que je me connectais automatiquement à un utilisateur WP si je détectais un cookie provenant d'un serveur d'authentification externe.
Mon code pour la connexion automatique appelait wp_set_auth_cookie()
. Cela place le cookie WP logged_in
dans la réponse HTTP actuelle, qui devient ensuite disponible dans la requête next HTTP, mais pas dans la requête actuelle. Ainsi, la variable nonce
générée pour l'URL de déconnexion dans la demande en cours n'est pas correcte car elle ne trouve pas le jeton logged_in
de la session qui devrait figurer dans les cookies.
Pour moi, j'ai trouvé la solution dans cette réponse de Jörn Lund: https://wordpress.stackexchange.com/a/184055/69247
J'ai ajouté le code suggéré par cette réponse à mon plug-in qui effectuait la connexion automatique et la page d'échec de la déconnexion s'est supprimée, car le nonce est correctement généré à l'aide du jeton contenu dans le cookie logged_in
.
function my_update_cookie( $logged_in_cookie ){
$_COOKIE[LOGGED_IN_COOKIE] = $logged_in_cookie;
}
add_action( 'set_logged_in_cookie', 'my_update_cookie' );
J'ai exactement le même problème et je peux reproduire le comportement. Cela ne se produit que lorsqu'un mot de passe a été modifié avec succès. Si, après un changement de mot de passe, vous accédez à une autre page, tout va bien à nouveau. Mais en cliquant sur le lien de déconnexion, on appelle alors wp_logout_url()
et j'obtiens systématiquement cette erreur.
L'erreur est également déclenchée si vous fournissez un faux nonce. Donc, cela peut être un indice. On dirait que c'est un bogue principal de WP.
Dans mon cas, la solution la moins élégante a été de forcer une redirection vers une page indiquant "Votre mot de passe a été modifié" après un changement de mot de passe réussi. Le lien de déconnexion se comportera bien à nouveau. Ceci est une solution de contournement, pas une solution pour le bogue.