私のwp_logout_url()
はフロントエンドから正しく動作しています。
しかし、フロントエンドから新しいパスワードを変更すると、次にパスワード変更ページで、ログアウトをクリックするとwp_logout_url()
が出力されます。
(サイト名)からログアウトしようとしています
本当にログアウトしますか?
これがスクリーンショットのスニペットです
助言がありますか?
パスワードを変更するコードは何ですか?
私は100%再現性のある同様の問題を抱えていました。私にとっての問題は、外部認証サーバーからクッキーを検出した場合、WPユーザーに自動的にログインしていたことです。
自動ログインのための私のコードはwp_set_auth_cookie()
を呼び出していました。これはWP logged_in
クッキーを現在のHTTPレスポンスに入れ、それはnextHTTPリクエストで利用可能になりますが、現在のものでは利用できません。そのため、現在のリクエストでログアウトURLに対して生成されたnonce
は、cookieに含まれるべきセッションのlogged_in
トークンが見つからないため、正しくありません。
私にとっては、私はこの答えにJörnLundによる解決策を見つけました: https://wordpress.stackexchange.com/a/184055/69247
その答えによって提案されたコードを自動ログインをしていたログアウト失敗ページが消えた私のプラグインに追加したので、今度はnon__がlogged_in
cookieにあるトークンを使って正しく生成されているからです。
function my_update_cookie( $logged_in_cookie ){
$_COOKIE[LOGGED_IN_COOKIE] = $logged_in_cookie;
}
add_action( 'set_logged_in_cookie', 'my_update_cookie' );
私はまったく同じ問題を抱えており、その動作を再現することができます。パスワードが正常に変更された場合にのみ発生します。パスワードを変更した後に別のページに移動しても、すべてが順調です。しかし、ログアウトリンクをクリックするとwp_logout_url()
が呼び出され、一貫してそのエラーが発生します。
誤ったナンスを指定した場合も、エラーが発生します。だから、それは手がかりかもしれません。それはある種のWPコアなバグのようです。
私の場合、それほど洗練されていない回避策は、パスワードが正常に変更された後に、「あなたのパスワードは変更されました」というページへのリダイレクトを強制することです。ログアウトリンクは再び正常に動作します。これは回避策であり、バグの解決策ではありません。