В администрировании сайтов на WordPress часто возникает задача — массовое удаление заблокированных пользователей. Это может быть необходимо для поддержания чистоты базы данных, повышения безопасности или освобождения ресурсов. В стандартной админке WordPress нет удобного инструмента для такой операции, особенно если заблокированных пользователей много. В этой статье разберём, как программно удалить пользователей с заблокированным доступом с помощью собственного кода.
Определение заблокированных пользователей в WordPress
В WordPress нет встроенного статуса «заблокирован» для пользователей. Чаще всего блокировка реализуется через изменение роли пользователя, добавление специального мета-поля или изменение поля user_status в базе данных. В зависимости от способа блокировки — меняется и подход к удалению.
Например, популярный способ блокировки — установка роли пользователя на blocked или disabled. Другой вариант — добавление мета-поля wpbe_blocked со значением true. В этой статье рассмотрим оба варианта для наглядности.
Удаление пользователей с ролью «blocked»
Если в вашем сайте заблокированные пользователи имеют роль blocked, то можно удалить их по этой роли. Для этого используем WP_User_Query и функцию wp_delete_user().
function wpbe_delete_blocked_users_by_role() {
$blocked_users = new WP_User_Query(array(
'role' => 'blocked',
'fields' => 'ID'
));
if ( ! empty( $blocked_users->results ) ) {
foreach ( $blocked_users->results as $user_id ) {
wp_delete_user( $user_id );
}
}
}Вы можете вызвать эту функцию в нужном месте, например, по крону или вручную через админку.
Пример вызова функции по крону
Чтобы автоматизировать удаление заблокированных пользователей, зарегистрируем событие WP-Cron:
if ( ! wp_next_scheduled( 'wpbe_delete_blocked_users_cron' ) ) {
wp_schedule_event( time(), 'daily', 'wpbe_delete_blocked_users_cron' );
}
add_action( 'wpbe_delete_blocked_users_cron', 'wpbe_delete_blocked_users_by_role' );Так функция будет запускаться ежедневно и удалять пользователей с ролью «blocked».
Удаление пользователей по мета-полю «wpbe_blocked»
Если блокировка реализована через мета-поле, нужно использовать WP_User_Query с параметром meta_query. Рассмотрим пример:
function wpbe_delete_blocked_users_by_meta() {
$blocked_users = new WP_User_Query(array(
'meta_key' => 'wpbe_blocked',
'meta_value' => 'true',
'fields' => 'ID'
));
if ( ! empty( $blocked_users->results ) ) {
foreach ( $blocked_users->results as $user_id ) {
wp_delete_user( $user_id );
}
}
}Принцип тот же — получаем ID пользователей с нужным мета-полем и удаляем их.
Советы по безопасности и бэкапу
Перед массовым удалением пользователей настоятельно рекомендуется сделать резервную копию базы данных. Ошибочное удаление сложно восстановить.
Для безопасности можно сначала выводить список пользователей, которые будут удалены, и только после подтверждения выполнять удаление.
Использование плагинов для управления заблокированными пользователями
Если вы предпочитаете не писать код, существуют плагины, которые помогают управлять пользователями:
- User Blocker — позволяет блокировать и разблокировать пользователей без удаления, а также массово управлять ими.
- Bulk Delete — мощный инструмент для массового удаления пользователей по различным условиям, включая роли и мета-поля.
Для интеграции с данными плагинами вы можете использовать их API или расширять функционал своими скриптами.
Интеграция с плагином Clearfy Pro для управления пользователями
Плагин Clearfy Pro предоставляет множество инструментов для оптимизации и безопасности сайта, включая управление пользователями. В сочетании с вашим собственным кодом, Clearfy поможет контролировать доступ и очищать базу от ненужных аккаунтов.
Заключение
Удаление заблокированных пользователей в WordPress — частая и полезная задача для администраторов. Выбор метода зависит от того, как именно реализована блокировка. Использование кастомных функций на основе WP_User_Query и wp_delete_user() позволяет эффективно и безопасно решать эту задачу, а автоматизация через WP-Cron освобождает вас от рутинных операций.
Если вы хотите получить готовые решения и дополнительные инструменты для управления пользователями и безопасности сайта, обратите внимание на Clearfy Pro.