web-dev-qa-db-ja.com

他の場所からログアウトし、すべてのセッションを「すべての他のデバイス」で破棄する方法は?

WordPressパネルサービスの「どこからでもログアウト」はいい仕事をしています。これをパネル外の機能として使いたい。

スクリーンショット

enter image description here 

3
lllllllllllll

そのボタンは wp_ajax_destroy_sessions() を実行するAJAXリクエストを送信します。

AJAXの外部で再利用できるように抽象化されているわけではありませんが、ソースをJSON部分を除いて独自の関数にコピーすれば、自分で同じアクションを実行できます。

重要な部分はこのビットです、これは与えられたユーザーIDのためのすべてのセッションを破壊します:

$sessions = WP_Session_Tokens::get_instance( $user_id );
$sessions->destroy_all();

関数の残りの部分は、ユーザーの存在を確認し、権限を確認し、そしてJSON応答を送信するだけです。それらはあなたのユースケースには関係ないかもしれないので、上記で十分かもしれません。

3
Jacob Peattie