Управление пользователями — важная задача для любого сайта на WordPress. Особенно актуальна она для проектов с большим количеством зарегистрированных пользователей, где среди них могут оказаться неактивные аккаунты, которые не используются, но занимают место в базе данных и могут создавать потенциальные риски безопасности. В этой статье подробно рассмотрим, как отфильтровать и удалить неактивных пользователей WordPress с помощью собственного кода и специализированных плагинов.
Почему важно удалять неактивных пользователей WordPress
Время от времени в базе сайта накапливаются пользователи, которые давно не заходили в систему. Они могут:
- Занимать место в базе данных, замедляя работу сайта.
- Создавать потенциальные угрозы безопасности — например, если их учетные записи скомпрометированы.
- Затруднять администрирование — мешают точному анализу активности и вовлеченности.
Поэтому регулярное удаление или деактивация таких аккаунтов — хорошая практика.
Как определить неактивных пользователей: критерии и подходы
Основной критерий — дата последнего входа. WordPress по умолчанию не хранит дату последнего посещения, но мы можем добавить эту функциональность самостоятельно или использовать плагины.
Примеры критериев неактивности:
- Пользователь не заходил на сайт более 6 месяцев.
- Пользователь не публиковал или не комментировал контент за последний год.
- Учетная запись зарегистрирована, но никогда не использовалась.
Для сбора этих данных можно использовать разные подходы, рассмотрим их ниже.
Добавление хранения даты последнего входа в WordPress
Для реализации фильтра по дате последнего посещения нужно сохранять эту дату в метаполе пользователя. Добавим код, который будет обновлять мета при каждом входе пользователя:
function premiumwp_update_last_login( $login ) {
$user = get_user_by( 'login', $login );
if ( $user ) {
update_user_meta( $user->ID, 'premiumwp_last_login', current_time('mysql') );
}
}
add_action( 'wp_login', 'premiumwp_update_last_login' );
Этот код сохраняет дату и время последнего входа в метаполе premiumwp_last_login.
Получение списка неактивных пользователей по дате последнего входа
Теперь, когда у нас есть дата последнего входа, можем получить список пользователей, которые не заходили, например, более 180 дней:
function premiumwp_get_inactive_users( $days = 180 ) {
$date_threshold = date( 'Y-m-d H:i:s', strtotime( "-{$days} days" ) );
$args = array(
'meta_key' => 'premiumwp_last_login',
'meta_value' => $date_threshold,
'meta_compare' => '<',
'fields' => 'ID',
'number' => -1,
);
$users = get_users( $args );
return $users;
}
Этот код вернёт массив ID пользователей, которые не входили более 180 дней.
Автоматическое удаление неактивных пользователей по расписанию
Можно настроить WP-Cron задачу, которая будет удалять таких пользователей автоматически, например, раз в месяц.
function premiumwp_schedule_inactive_user_cleanup() {
if ( ! wp_next_scheduled( 'premiumwp_cleanup_inactive_users' ) ) {
wp_schedule_event( time(), 'monthly', 'premiumwp_cleanup_inactive_users' );
}
}
add_action( 'wp', 'premiumwp_schedule_inactive_user_cleanup' );
function premiumwp_cleanup_inactive_users_callback() {
$inactive_users = premiumwp_get_inactive_users( 180 );
foreach ( $inactive_users as $user_id ) {
require_once( ABSPATH . 'wp-admin/includes/user.php' );
wp_delete_user( $user_id );
}
}
add_action( 'premiumwp_cleanup_inactive_users', 'premiumwp_cleanup_inactive_users_callback' );
Такой подход позволит поддерживать базу пользователей в актуальном состоянии без вашего участия.
Использование плагинов для управления неактивными пользователями
Если вы не хотите писать код, есть готовые решения:
- Inactive User Deleter — плагин для автоматического удаления пользователей, которые не заходили на сайт определённое время.
- WP Last Login — фиксирует дату последнего входа и позволяет фильтровать пользователей по активности.
- Clearfy Pro (https://wpshop.ru/clearfy-pro?utm_source=premiumwp.ru&utm_medium=article&utm_campaign=premiumwp-kak-otfiltrovat-i-udalit-neaktivnyh-polzovatelej-v-wordpress-s-pomoshhyu-koda-i-pluginov) — универсальный оптимизатор, в том числе помогает очищать неактивных пользователей и оптимизировать базу данных.
Пример использования плагина Inactive User Deleter: после установки и активации перейдите в настройки плагина, задайте период неактивности (например, 180 дней) и запустите удаление. Плагин также поддерживает автоматический запуск по расписанию.
Как обезопасить процесс удаления пользователей
Удаление пользователей — серьёзная операция, поэтому необходимо соблюдать меры предосторожности:
- Создавайте резервные копии базы данных перед массовым удалением.
- Убедитесь, что удаляются только действительно неактивные аккаунты, чтобы не потерять важных пользователей.
- Рассмотрите возможность сначала деактивировать или пометить пользователей, а уже потом удалять.
- Для сайтов с ролями редакторов, администраторов или авторов убедитесь, что их аккаунты не попадут под удаление.
Для резервного копирования можно использовать плагин PremiumWP Backup (https://wpshop.ru/premiumwp-backup?utm_source=premiumwp.ru&utm_medium=article&utm_campaign=premiumwp-kak-otfiltrovat-i-udalit-neaktivnyh-polzovatelej-v-wordpress-s-pomoshhyu-koda-i-pluginov), который автоматизирует создание бэкапов.
Выводы и рекомендации по работе с неактивными пользователями WordPress
Регулярное управление пользователями — залог безопасности и производительности сайта. Реализовать фильтрацию и удаление неактивных аккаунтов можно двумя основными способами:
- С помощью собственного кода, добавляющего хранение даты последнего входа, выборку неактивных пользователей и автоматическое удаление через WP-Cron.
- Используя специализированные плагины, которые упрощают эту задачу и предоставляют удобный интерфейс.
Комбинируйте оба подхода, например, внедрите функцию хранения даты входа через код, а удаление сделайте через плагин или наоборот. Обязательно делайте резервные копии перед удалением и тщательно проверяйте критерии выбора пользователей.