web-dev-qa-db-ja.com

wp_logout_url() - ワードプレス失敗通知

私のwp_logout_url()はフロントエンドから正しく動作しています。

しかし、フロントエンドから新しいパスワードを変更すると、次にパスワード変更ページで、ログアウトをクリックするとwp_logout_url()が出力されます。

(サイト名)からログアウトしようとしています

本当にログアウトしますか?

これがスクリーンショットのスニペットです enter image description here

助言がありますか?

3
Durgesh

パスワードを変更するコードは何ですか?

私は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' );
1
Kirby

私はまったく同じ問題を抱えており、その動作を再現することができます。パスワードが正常に変更された場合にのみ発生します。パスワードを変更した後に別のページに移動しても、すべてが順調です。しかし、ログアウトリンクをクリックするとwp_logout_url()が呼び出され、一貫してそのエラーが発生します。

誤ったナンスを指定した場合も、エラーが発生します。だから、それは手がかりかもしれません。それはある種のWPコアなバグのようです。

私の場合、それほど洗練されていない回避策は、パスワードが正常に変更された後に、「あなたのパスワードは変更されました」というページへのリダイレクトを強制することです。ログアウトリンクは再び正常に動作します。これは回避策であり、バグの解決策ではありません。

1
DrMagu