В процессе эксплуатации сайта на WordPress со временем накапливается большое количество пользователей, которые перестали заходить на сайт или неактивны длительное время. Это может негативно влиять на производительность базы данных, увеличивать нагрузку и усложнять управление пользователями. В этой статье мы разберём, как эффективно найти и удалить неактивных пользователей из базы данных WordPress, используя как готовые плагины, так и собственные решения на PHP с примерами кода.
Почему важно удалять неактивных пользователей WordPress
С течением времени в базе данных могут накапливаться тысячи пользователей, которые зарегистрировались, но не заходили на сайт месяцами или годами. Это приводит к:
- Увеличению размера таблицы
wp_usersи связанной мета-информации (wp_usermeta), что замедляет запросы. - Росту нагрузки на сервер при выполнении операций с пользователями.
- Потенциальным рискам безопасности — неактивные аккаунты могут быть заброшенными и уязвимыми.
Регулярное удаление таких пользователей помогает держать базу в порядке и ускоряет работу сайта.
Как определить неактивных пользователей
Для определения неактивных пользователей используем разные подходы. В WordPress стандартно нет поля с датой последнего входа, поэтому часто приходится полагаться на плагины или собственный код, который будет отслеживать активность.
Использование плагина WP Activity Log
Плагин WP Activity Log сохраняет информацию о входах пользователей. После установки и настройки можно экспортировать список пользователей, которые не заходили в админку более X месяцев.
Добавление записи последнего входа пользователя вручную
Если вы хотите самостоятельно отслеживать дату последнего входа, добавьте следующий код в файл functions.php вашей темы или в отдельный плагин:
function wordpressa_update_last_login($login, $user) {
update_user_meta($user->ID, 'wordpressa_last_login', current_time('mysql'));
}
add_action('wp_login', 'wordpressa_update_last_login', 10, 2);
Этот код создаст мета-поле wordpressa_last_login с датой последнего входа пользователя.
Удаление неактивных пользователей с помощью SQL-запроса
Если вы уже отслеживаете дату последнего входа, можно удалить пользователей, не заходивших, например, более 6 месяцев, с помощью SQL-запроса. Важно сделать резервную копию базы перед выполнением.
DELETE u, um FROM wp_users u
LEFT JOIN wp_usermeta um ON u.ID = um.user_id
WHERE u.ID IN (
SELECT ID FROM (
SELECT ID FROM wp_users u
LEFT JOIN wp_usermeta um ON u.ID = um.user_id AND um.meta_key = 'wordpressa_last_login'
WHERE um.meta_value < DATE_SUB(NOW(), INTERVAL 6 MONTH) OR um.meta_value IS NULL
) AS temp
);
Этот запрос удалит пользователей, у которых дата последнего входа отсутствует или старше 6 месяцев, вместе с их метаданными.
Автоматизация удаления с помощью PHP-кода и WP-Cron
Для регулярного удаления неактивных пользователей можно настроить WP-Cron задачу, которая будет запускать очистку по расписанию. Пример кода для такого решения:
function wordpressa_delete_inactive_users() {
$args = array(
'meta_key' => 'wordpressa_last_login',
'meta_value' => date('Y-m-d H:i:s', strtotime('-6 months')),
'meta_compare' => '<',
'fields' => 'ID',
'number' => -1,
);
$user_query = new WP_User_Query($args);
$user_ids = $user_query->get_results();
foreach ($user_ids as $user_id) {
require_once(ABSPATH.'wp-admin/includes/user.php');
wp_delete_user($user_id);
}
}
if (!wp_next_scheduled('wordpressa_cron_delete_inactive_users')) {
wp_schedule_event(time(), 'daily', 'wordpressa_cron_delete_inactive_users');
}
add_action('wordpressa_cron_delete_inactive_users', 'wordpressa_delete_inactive_users');
Этот код будет каждый день удалять пользователей, которые не заходили более 6 месяцев.
Использование плагина Clearfy Pro для управления пользователями
Плагин Clearfy Pro позволяет оптимизировать сайт и управлять пользователями, включая отключение или удаление неактивных аккаунтов. В интерфейсе плагина можно настроить фильтры по дате последнего входа и выполнить массовые операции с пользователями без необходимости писать код.
Советы по безопасности при удалении пользователей
Перед удалением пользователей стоит учитывать несколько важных моментов:
- Создайте резервную копию базы данных.
- Проверьте, что не удаляются администраторы или важные аккаунты.
- Возможно, стоит сначала деактивировать пользователей, а затем уже удалять.
- Оповестите пользователей о возможном удалении, если это применимо.
Выводы
Удаление неактивных пользователей — важная задача для поддержания производительности и безопасности сайта на WordPress. Комбинируя отслеживание последнего входа, SQL-запросы и автоматизацию через WP-Cron, вы можете эффективно управлять пользователями. При необходимости используйте готовые плагины, такие как Clearfy Pro, для упрощения процесса.