web-dev-qa-db-ja.com

ページがロードされる前にユーザーをWordpressからログアウトさせるにはどうすればよいですか?

?logoutがURLの末尾に追加された場合、ユーザーがログアウトされるように、私のワードプレスサイトでは以下のコードを使用します。これはうまく機能します - ユーザがmysite.com/?logoutmysite.com/test-page/?logoutなどのページ、あるいは$_GET['logout']変数が設定されているページにアクセスした場合、ログアウトされます。

if( isset($_GET['logout']) ){
    add_action('plugins_loaded', 'wp_logout',0);            
}

私が直面している問題は、このアクションをplugins_loadedに追加したとしても、それがアクションフックの リストの一番上にあるということです 。それ以降のロードでページが更新された場合は、ページの「ログアウト」バージョンが表示されますが、同じ要求は表示されません。

問題を再現する手順:

  1. このコードをプラグインまたはおそらくあなたのfunctions.phpファイルに追加してください。 mu-pluginsディレクトリのファイルに入れています。
  2. Wordpressサイトにログインします。
  3. あなたのサイトへのページまたは投稿、おそらくはコメントボックスのあるページにアクセスし、そのURLに?logoutを追加してください。
  4. ページは通常通りにロードされ、コメントボックスにはあなたの名前が表示され、あなたがログインしていることを示し、返信を残すことができます。
  5. ページをリロードします(URLに「?login」を追加して、または追加せずに)
  6. ページは現在ログアウトされています

希望する動作

Wordpressにログインした後、URLに?loginを追加したページにアクセスすると、ログアウトプロセスが完了し、ページを更新することなく、ロード時にログアウトしたかのように表示されます。

私は以前Wordpressに接続できるとは思わないので、これを回避する方法がわかりません。

4
cwd

これはそれをするはずです:

add_action('plugins_loaded', function(){
    wp_set_current_user(0);
},0);
7
Steve Brown

代わりにwpまたはinitフックを使用してみてください。

0
Joseph Leedy