В администрировании WordPress часто возникает необходимость очистить базу пользователей от неактивных аккаунтов. Это улучшает безопасность сайта и уменьшает нагрузку на базу данных. В этой статье мы подробно рассмотрим, как удалить неактивных пользователей WordPress с помощью собственного кода на PHP и HTML, а также рассмотрим полезные плагины для автоматизации задачи.
Почему важно удалять неактивных пользователей WordPress
Накопление неактивных пользователей — частая проблема крупных сайтов и сообществ на WordPress. Неактивные аккаунты могут быть источником уязвимостей, например, если пароль был скомпрометирован. Кроме того, они занимают место в базе данных, что влияет на скорость работы сайта и админ-панели.
Регулярная чистка неактивных пользователей помогает:
- Повысить безопасность сайта
- Оптимизировать базу данных
- Упростить управление пользователями
Определение неактивных пользователей: критерии и подходы
Перед удалением важно чётко определить, что считать неактивным пользователем. Самый простой критерий — дата последнего входа на сайт. Другие критерии могут включать отсутствие активности в комментариях, публикациях или заказах (для WooCommerce).
Для WordPress, к сожалению, по умолчанию не хранится дата последнего входа. Но её можно добавить с помощью плагинов или кода. Рассмотрим оба варианта.
Добавление даты последнего входа через код
Чтобы отслеживать логины пользователей, добавим код в functions.php активной темы или в отдельный плагин:
function wpquery_update_last_login($login, $user) {
update_user_meta($user->ID, 'wpquery_last_login', current_time('mysql'));
}
add_action('wp_login', 'wpquery_update_last_login', 10, 2);Этот хук обновляет мета-данные пользователя с ключом wpquery_last_login при каждом успешном входе.
Получение даты последнего входа из плагина
Если вы не хотите писать код, можно использовать плагин User Last Login. Он автоматически сохраняет дату последнего входа и предоставляет удобный интерфейс для фильтрации пользователей по активности.
Автоматическое удаление неактивных пользователей с помощью PHP
Теперь, когда у нас есть дата последнего входа, можно написать функцию, которая удалит пользователей, не заходивших на сайт, например, более 6 месяцев.
function wpquery_delete_inactive_users($months = 6) {
$date_threshold = date('Y-m-d H:i:s', strtotime('-' . intval($months) . ' months'));
$args = [
'meta_key' => 'wpquery_last_login',
'meta_value' => $date_threshold,
'meta_compare' => '<',
'fields' => 'ID',
'number' => 1000
];
$user_query = new WP_User_Query($args);
$users_to_delete = $user_query->get_results();
foreach ($users_to_delete as $user_id) {
wp_delete_user($user_id);
}
return count($users_to_delete);
}Эту функцию можно запускать вручную или автоматически через cron-задачу WordPress (wp_cron). Например, так:
function wpquery_schedule_inactive_user_cleanup() {
if (!wp_next_scheduled('wpquery_inactive_user_cleanup_hook')) {
wp_schedule_event(time(), 'daily', 'wpquery_inactive_user_cleanup_hook');
}
}
add_action('wp', 'wpquery_schedule_inactive_user_cleanup');
add_action('wpquery_inactive_user_cleanup_hook', function() {
$deleted_count = wpquery_delete_inactive_users(6);
error_log('Удалено неактивных пользователей: ' . $deleted_count);
});<Так мы обеспечим регулярную очистку без вмешательства администратора.
Удаление неактивных пользователей с помощью плагинов
Если вы предпочитаете готовые решения, обратите внимание на плагины:
- Inactive User Deleter — позволяет удалить пользователей по дате регистрации или последнего входа, настраивается порог неактивности.
- WP User Manager — расширенный менеджер пользователей с функцией фильтрации и массового удаления.
Для интеграции с Clearfy Pro можно дополнительно оптимизировать работу сайта, отключив ненужные функции и ускорив обработку базы.
Примеры использования и рекомендации
Перед массовым удалением всегда делайте резервную копию базы данных. Если у вас большое сообщество, лучше предварительно уведомить пользователей о грядущей очистке.
Также можно доработать функцию удаления, чтобы исключать администраторов и авторов важных публикаций, например:
function wpquery_delete_inactive_users_safe($months = 6) {
$date_threshold = date('Y-m-d H:i:s', strtotime('-' . intval($months) . ' months'));
$args = [
'meta_key' => 'wpquery_last_login',
'meta_value' => $date_threshold,
'meta_compare' => '<',
'fields' => 'ID',
'number' => 1000
];
$user_query = new WP_User_Query($args);
$users_to_delete = $user_query->get_results();
foreach ($users_to_delete as $user_id) {
$user = get_userdata($user_id);
if (in_array('administrator', $user->roles)) {
continue; // не трогаем админов
}
wp_delete_user($user_id);
}
return count($users_to_delete);
}Такой подход позволит избежать проблем с удалением ключевых пользователей.
Выводы по теме удаления неактивных пользователей в WordPress
Удаление неактивных пользователей — важная задача для поддержания безопасности и производительности сайта. Использование собственного кода позволяет гибко управлять процессом и интегрировать его в собственные решения. Готовые плагины помогут быстро внедрить функционал без программирования.
Поддерживайте базу пользователей в актуальном состоянии, чтобы ваш сайт работал стабильно и безопасно.