Comment vérifier si un ou plusieurs utilisateurs sont connectés à l’aide d’un cookie dans WordPress ?
WordPress fournit une API is_user_logged_in() pour vérifier si un utilisateur est connecté, mais malheureusement, elle n’est pas directement disponible lorsque vous écrivez des plugins, par exemple les plugins sont chargés avant pluggable.php, où is_user_logged_in() est défini.
À partir de l’implémentation de is_user_logged_in(), vous pouvez voir que c’est :
function is_user_logged_in() {
$user = wp_get_current_user();
return $user->exists();
}
Ainsi, nous pouvons modifier la fonction pour vérifier si un utilisateur spécifié s’est connecté.
function is_username_logged_in($username) {
$user = wp_get_current_user();
return $user->user_login == $username;
}
Cependant, la fonction principale wp_get_current_user est toujours définie dans pluggable.php. Ce qui suit implémente une fonction qui prend un tableau de noms d’utilisateur autorisés et renvoie true si un nom d’utilisateur autorisé s’est connecté.
function allowedUsersLoggedIn($allowd_users) {
if (count($_COOKIE)) {
foreach ($_COOKIE as $key => $val) {
if (substr($key, 0, 19) === "wordpress_logged_in") {
if (preg_match('/^('. implode('|', $allowed_users). ')/', $val, $matches)) {
return true;
}
}
}
}
return false;
}
Vous pouvez utiliser cette fonction en toute sécurité n’importe où, même sans l’environnement WP. L’exemple d’utilisation serait :
if (allowedUsersLoggedIn(array("helloacm", "steakovercooked")) {
// code that only allowed users run
}
Le principe de cette fonction est de vérifier le COOKIE pour la chaîne spécifiée lorsque les utilisateurs autorisés se sont connectés.