web-dev-qa-db-ja.com

ログインしているすべての管理者を検出する

WordPressにログインしているすべてのユーザーを見つけようとしています。

私は自分自身を検出できますが、他の管理者を見つけられるようにしたいです。これが私自身を見つけるための私の現在のコードです。

if (user_can( $current_user, 'administrator' )) {
      echo '<div class="admin"> User currently logged in "' 
          . $current_user->user_login . '"</div>';
} 
1
user88140

Wordpressには「ログイン」という本当の概念はありません。あちこちにラベルが使用されていますが、コード内で最も近いものは「認証済みユーザー」と呼ばれるものです。違いは、認証されたユーザーが自分のブラウザを閉じているユーザーである可能性があるため、「ログイン」されていないことです。

あなたがやりたいことをするためには、あなたが最初にあなたが「ログインしている」ことが何を意味するのかを定義し、それを検出するためのロジックを実装する必要があります。たとえば、ajaxを使用して、ユーザーがまだ接続されていることを更新し、更新されなかった場合、そのユーザーを "ログイン"リストから削除します(5分など)。

簡単なことではありませんが、実装するのはそれほど複雑ではありません。

2
Mark Kaplun

Initでは、現在のユーザー(この場合は任意の管理者)が問題を回避している限り更新を続ける、たとえば5分間のトランジェントを設定します。これらのアクティブな一時的なもののリストをショートコードからページにダンプします。それはそれをするべきです。

0
LukeWarm

Mark Kaplunが言ったことに加えて、あなたはおそらく ユーザーメタセッショントークン を見ることができるでしょう。特定のユーザーのためのアクティブなセッションがある場合、彼らはあなたに言うことができます。しかし、それは、ユーザーがそのサイトでアクティブになって何かをしているという意味ではありません。単に彼が正常にログインしたということです。

とにかく、あなたがis_user_logged_in()を使うように言う誰かを信用しないでください!それはその機能がどのように機能するかではありません。

0
flomei