wpconsult.ru wordpress WP Consult

Как удалить или заблокировать пользователей в WordPress с помощью кода и плагинов

Управление пользователями — важная задача для любого сайта на WordPress. Иногда нужно не просто удалить пользователя, но и заблокировать его, чтобы он не мог войти в админку или оставлять комментарии. В этой статье подробно рассмотрим, как удалить или заблокировать пользователей с помощью кастомного кода и с помощью плагинов, что поможет вам гибко настраивать права доступа и поддерживать безопасность сайта.

Удаление пользователей в WordPress через админку и программно

Самый простой способ удалить пользователя — через админку WordPress. Для этого перейдите в раздел «Пользователи» → «Все пользователи», выберите нужного человека и кликните «Удалить». При этом WordPress предложит перезаписать контент пользователя на другого или удалить вместе с ним.

Однако для массового удаления или интеграции в автоматические процессы удобнее использовать код. Вот пример функции, которая удаляет пользователя по ID:

function wpconsult_delete_user_by_id($user_id) {
    if ( ! current_user_can('delete_users') ) {
        return false; // проверяем права
    }
    require_once ABSPATH . 'wp-admin/includes/user.php';
    return wp_delete_user($user_id);
}

Вы можете вызвать эту функцию из плагина или файла functions.php, передав ID нужного пользователя. Важно использовать проверку прав, чтобы избежать ошибок.

Удаление пользователей по определённым критериям

Иногда нужно удалить сразу группу пользователей, например, с ролью подписчика, которые давно не активны. Для этого можно использовать WP_Query для пользователей и затем удалить каждого:

function wpconsult_bulk_delete_inactive_subscribers($days_inactive = 180) {
    $args = [
        'role' => 'subscriber',
        'meta_query' => [
            [
                'key' => 'last_login',
                'value' => date('Y-m-d', strtotime("-{$days_inactive} days")),
                'compare' => '<=',
                'type' => 'DATE'
            ]
        ],
        'fields' => 'ID'
    ];
    $user_query = new WP_User_Query($args);
    foreach ($user_query->get_results() as $user_id) {
        wpconsult_delete_user_by_id($user_id);
    }
}

Этот код требует, чтобы у вас был сохранён метаполе last_login. Его можно добавить, например, с помощью плагина WPCommunity или самостоятельно через хуки при авторизации.

Блокировка пользователей: зачем и как реализовать

Удаление — радикальная мера, которая полностью стирает пользователя. Но иногда нужно временно или постоянно заблокировать пользователя: запретить вход в кабинет, отключить комментарии, скрыть профиль.

Есть несколько способов блокировки, от простого отключения логина до более сложных решений с кастомным статусом.

Блокировка через изменение роли

Самый простой метод — сменить роль пользователя на роль с минимальными правами или без них. Например, создайте роль blocked и назначьте её:

function wpconsult_block_user($user_id) {
    $user = new WP_User($user_id);
    $user->set_role('blocked');
}

Для этого сначала зарегистрируйте роль blocked с помощью add_role, где не будет никаких прав. Тогда пользователь технически останется в базе, но не сможет ничего делать.

Блокировка входа по IP или имени

Если нужно запретить вход конкретному пользователю или IP, можно использовать хук authenticate и возвращать ошибку:

add_filter('authenticate', 'wpconsult_block_user_login', 30, 3);
function wpconsult_block_user_login($user, $username, $password) {
    $blocked_usernames = ['spammer1', 'baduser'];
    if (in_array($username, $blocked_usernames)) {
        return new WP_Error('blocked_user', __('Ваш аккаунт заблокирован. Обратитесь к администратору.'));
    }
    return $user;
}

Также можно проверить IP через $_SERVER['REMOTE_ADDR'] и блокировать нежелательные адреса.

Полезные плагины для управления пользователями и блокировкой

Если вы хотите не вникать в код, воспользуйтесь готовыми решениями. Вот несколько плагинов, которые помогут управлять удалением и блокировкой пользователей:

  • Clearfy Pro — содержит модуль для блокировки пользователей по IP, а также защиту от спама и ботов. Подробнее: https://wpshop.ru/plugins/clearfy-pro/
  • WPRemark — автоматическая модерация комментариев, в том числе блокировка пользователей по критериям спама. Подробнее: https://wpshop.ru/plugins/wpremark/
  • My Popup — можно использовать для уведомлений заблокированным пользователям при попытке входа. Подробнее: https://wpshop.ru/plugins/mypopup/

Эти плагины позволяют легко управлять пользователями и повышать безопасность сайта без глубоких технических знаний.

Пример комплексного решения: удаление и блокировка с уведомлением

Ниже пример функции, которая блокирует пользователя, отправляет ему уведомление по email и через 7 дней удаляет его, если блокировка не снята.

function wpconsult_block_and_schedule_deletion($user_id) {
    $user = new WP_User($user_id);
    // Меняем роль на blocked
    $user->set_role('blocked');

    // Отправляем email
    wp_mail($user->user_email, 'Ваш аккаунт заблокирован', 'Ваш аккаунт заблокирован. Если хотите восстановить доступ, свяжитесь с администратором.');

    // Планируем удаление через 7 дней
    if (!wp_next_scheduled('wpconsult_delete_blocked_user', [$user_id])) {
        wp_schedule_single_event(time() + 7 * DAY_IN_SECONDS, 'wpconsult_delete_blocked_user', [$user_id]);
    }
}

add_action('wpconsult_delete_blocked_user', function($user_id) {
    $user = new WP_User($user_id);
    if (in_array('blocked', $user->roles)) {
        wp_delete_user($user_id);
    }
});

Такой подход помогает автоматизировать процесс и держать базу пользователей в порядке.

Выводы и рекомендации по безопасности

Удаление пользователей нужно делать осознанно, особенно если у них есть публикации или комментарии. Блокировка — более гибкий способ управления доступом, который позволяет временно ограничить пользователя без потери данных.

Рекомендуем использовать кастомные роли для блокировки и уведомлять пользователей о статусе их аккаунта. Также регулярно проверяйте и очищайте базу от неактивных и подозрительных аккаунтов.

Используйте плагины, такие как Clearfy Pro и WPRemark, чтобы облегчить эти задачи и повысить безопасность вашего WordPress-сайта.

×

AI-плагин

WPGPT
Сам создает статьи для вашего сайта WordPress

SEO и мета-теги

Парсинг конкурентов

Изображения

Комментарии

Подробнее