Как подключиться к системе входа в Wordpress, чтобы программно остановить некоторых пользователей? - PullRequest
9 голосов
/ 26 ноября 2009

Я работаю на портале на основе Wordpress, который интегрируется с заказной электронной коммерцией. Электронная коммерция также служит «панелью управления»: все роли установлены там. Некоторые пользователи зарегистрированы, но «неактивны»; они не должны быть в состоянии войти в Wordpress. По этой причине мне нужно подключиться к системе входа в Wordpress.

Если пользователь, скажем, «bad_james», он не сможет войти, даже если у него есть действительный логин WP и PWD. Административная панель WP не предоставляет флаг для блокировки пользователей.

Есть ли способ реализовать фильтр входа?

Приветствия
Davide

Ответы [ 3 ]

9 голосов
/ 27 ноября 2009

Вы можете перегрузить функцию wp_authenticate (см. Функцию в коде здесь: http://core.trac.wordpress.org/browser/trunk/wp-includes/pluggable.php) и вернуть ошибку WP_, если вы не хотите, чтобы пользователь мог войти в систему.

Или лучше, используйте фильтр authenticate и верните ноль, если вы не хотите, чтобы пользователь входил в систему, например,

add_filter('authenticate', 'check_login', 10, 3);
function check_login($user, $username, $password) {
    $user = get_userdatabylogin($username); 

    if( /* check to see if user is allowed */ ) {
        return null;
    }
    return $user;
}
9 голосов
/ 06 декабря 2011

Было несколько проблем с ответом mjangda, поэтому я выкладываю версию, которая работает с WordPress 3.2

Основные проблемы были с оператором возврата. Он должен возвращать объект WP_User. Другая проблема была связана с недостаточным приоритетом.

add_filter('authenticate', 'check_login', 100, 3);
function check_login($user, $username, $password) {
    // this filter is called on the log in page
    // make sure we have a username before we move forward
    if (!empty($username)) {
        $user_data = $user->data;

        if (/* check to see if user is allowed */) {
          // stop login
          return null;
        }
        else {
            return $user;
        }
    }

    return $user;
}
1 голос
/ 27 ноября 2009

Может быть идея или код для заимствования и реализации: WordPress ›Внешняя аутентификация БД« Плагины WordPress

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...