В процессе работы сайта на WordPress часто накапливается множество пользователей, которые давно не заходили на сайт. Это может негативно влиять на безопасность, производительность и управляемость сайта. В этой статье мы подробно рассмотрим, как удалить неактивных пользователей WordPress с помощью кода, а также с использованием плагинов, что поможет поддерживать вашу базу данных в чистоте.
Почему важно удалять неактивных пользователей WordPress
Неактивные пользователи — это те, кто зарегистрировался на вашем сайте, но не входил в систему длительное время. Причины удаления таких пользователей:
- Безопасность: неиспользуемые аккаунты могут быть взломаны и использованы для вредоносных действий;
- Оптимизация базы данных: удаление старых записей снижает нагрузку и улучшает скорость запросов;
- Управляемость: легче работать с актуальной аудиторией и отправлять релевантные уведомления.
Удалять пользователей вручную долго и неудобно, поэтому автоматизация через код или плагины — оптимальный вариант.
Как определить неактивных пользователей: критерии и подходы
Перед удалением пользователей важно определить, кто считается «неактивным». Обычно это пользователи, которые не заходили на сайт более определенного срока, например 6 или 12 месяцев.
WordPress хранит дату последнего входа в метаданных пользователя, но по умолчанию эта информация не сохраняется автоматически. Нужно либо использовать плагины, либо добавить код для отслеживания последнего входа.
Добавляем отслеживание последнего входа пользователя
Для начала добавим функцию, которая будет сохранять дату последнего входа пользователя:
function wpmail_update_last_login( $login, $user ) {
update_user_meta( $user->ID, 'wpmail_last_login', current_time( 'timestamp' ) );
}
add_action( 'wp_login', 'wpmail_update_last_login', 10, 2 );Этот код нужно добавить в файл functions.php вашей темы или в пользовательский плагин. Теперь при каждом входе пользователя будет обновляться мета-ключ wpmail_last_login с текущим временем.
Удаление неактивных пользователей с помощью кода
Теперь можно написать функцию, которая будет искать и удалять пользователей, не заходивших на сайт дольше заданного срока (например, 180 дней):
function wpmail_delete_inactive_users( $days = 180 ) {
$cutoff = strtotime( "-{$days} days" );
$args = array(
'meta_key' => 'wpmail_last_login',
'meta_value' => $cutoff,
'meta_compare' => '<',
'fields' => 'ID',
'number' => -1
);
$user_query = new WP_User_Query( $args );
$users_to_delete = $user_query->get_results();
if ( empty( $users_to_delete ) ) {
return 'Нет неактивных пользователей для удаления.';
}
foreach ( $users_to_delete as $user_id ) {
wp_delete_user( $user_id );
}
return count( $users_to_delete ) . ' неактивных пользователей удалено.';
}Вы можете вызвать функцию wpmail_delete_inactive_users()
Добавление кнопки для удаления в админ-панели
Чтобы упростить процесс, добавим страницу в админку с кнопкой для удаления неактивных пользователей:
function wpmail_add_admin_page() {
add_users_page(
'Удаление неактивных пользователей',
'Удаление неактивных',
'manage_options',
'wpmail-delete-inactive',
'wpmail_render_admin_page'
);
}
add_action( 'admin_menu', 'wpmail_add_admin_page' );
function wpmail_render_admin_page() {
if ( isset( $_POST['wpmail_delete_inactive'] ) ) {
check_admin_referer( 'wpmail_delete_inactive_nonce' );
$result = wpmail_delete_inactive_users();
echo '<div class="updated"><p>' . esc_html( $result ) . '</p></div>';
}
?>
<h2>Удаление неактивных пользователей</h2>
<form method="post">
<input type="hidden" name="wpmail_delete_inactive" value="1" />
<?php wp_nonce_field( 'wpmail_delete_inactive_nonce' ); ?>
<input type="submit" class="button button-primary" value="Удалить неактивных пользователей" />
</form>
<?php
}После добавления этого кода в functions.php в разделе «Пользователи» появится новая страница с кнопкой удаления.
Использование плагинов для удаления неактивных пользователей
Если вы не хотите писать код, существуют плагины, которые автоматически помогают выявлять и удалять неактивных пользователей. Рекомендуемые плагины:
- Inactive User Deleter — позволяет настраивать срок неактивности и автоматически удалять такие аккаунты.
- User Cleanup — плагин для массового удаления пользователей с фильтрами по дате регистрации и последнему входу.
Плагины удобны и подходят для тех, кто не хочет самостоятельно внедрять код, но они могут иметь ограничения по кастомизации.
Рекомендации и меры предосторожности
Перед массовым удалением пользователей всегда:
- Создавайте резервную копию базы данных;
- Проверяйте критерии отбора, чтобы случайно не удалить активных пользователей;
- Рассмотрите возможность сначала отключать пользователей вместо удаления;
- Информируйте пользователей о планируемом удалении, если это возможно.
Удаление неактивных пользователей — важная задача в поддержании безопасности и производительности сайта на WordPress. Используя приведенный код и рекомендации, вы сможете легко и безопасно очистить базу.