web-dev-qa-db-fra.com

Détecter tous les administrateurs connectés

J'essaie de trouver tous les utilisateurs connectés à WordPress.

Je peux me détecter, mais je veux pouvoir trouver les autres administrateurs. Voici mon code actuel pour me retrouver.

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

Wordpress n'a pas un vrai concept de "connecté". Bien que les étiquettes tout autour utilisent le terme, dans le code le plus proche que vous obtenez est quelque chose qui pourrait s'appeler des "utilisateurs authentifiés". La différence est que l'utilisateur authentifié peut être un utilisateur dont le navigateur est fermé et pour lequel il n'est pas "connecté".

Pour faire ce que vous voulez, vous devez d’abord définir ce que cela signifie pour vous d’être "connecté" et mettre en œuvre une logique pour le détecter. Par exemple, vous pouvez utiliser ajax pour mettre à jour le fait qu'un utilisateur est toujours connecté et le supprimer de la liste des "connectés" s'il ne s'est pas mis à jour pendant 5 minutes.

Ce n'est pas anodin mais pas très complexe à mettre en œuvre.

2
Mark Kaplun

Sur init, définissez un transitoire pendant 5 minutes, par exemple, qui se met à jour tant que l'utilisateur actuel (dans ce cas, n'importe quel administrateur) fouille. Vide une liste de ces transitoires actifs d'un shortcode dans une page. Ça devrait le faire.

0
LukeWarm

En ajoutant à ce que Mark Kaplun a dit, vous pourriez probablement jeter un coup d'oeil aux jetons Meta Sessions des utilisateurs . Ils peuvent vous dire s'il existe une session active pour un utilisateur spécifique. Mais cela ne signifie pas que l'utilisateur est actif sur le site et qu'il fait quelque chose, mais simplement qu'il s'est connecté avec succès.

Quoi qu’il en soit, ne faites confiance à personne qui vous dise d’utiliser is_user_logged_in()! Ce n'est pas comme ça que ça fonctionne.

0
flomei