✅ Новости WEB и WordPress, темы, плагины. Здесь мы делимся советами и лучшими решениями для веб-сайтов.

Как проверить, вошли ли один или несколько пользователей в систему с помощью файлов cookie в WordPress?

34

WordPress предоставляет API is_user_logged_in() для проверки входа пользователя в систему, но, к сожалению, он недоступен напрямую, когда вы пишете плагины, например, плагины загружаются до pluggable.php, где определяется is_user_logged_in().

Из реализации is_user_logged_in() видно, что это:

function is_user_logged_in() {
    $user = wp_get_current_user(); 
    return $user->exists();
}

Таким образом, мы можем изменить функцию, чтобы проверить, вошел ли указанный пользователь в систему.

function is_username_logged_in($username) {
    $user = wp_get_current_user(); 
    return $user->user_login == $username;  
}

Однако основная функция wp_get_current_user по-прежнему определена в pluggable.php. В следующем примере реализована функция, которая принимает массив разрешенных имен пользователей и возвращает значение true, если в систему вошел какой-либо разрешенный пользователь.

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;
}

Вы можете смело использовать эту функцию где угодно, даже без среды WP. Пример использования будет следующим:

if (allowedUsersLoggedIn(array("helloacm", "steakovercooked")) {
  // code that only allowed users run
}

Принцип этой функции заключается в проверке COOKIE на наличие указанной строки, когда разрешенные пользователи вошли в систему.

Источник записи: helloacm.com

Этот веб-сайт использует файлы cookie для улучшения вашего опыта. Мы предполагаем, что вы согласны с этим, но вы можете отказаться, если хотите. Принимаю Подробнее