Как удалить удалённых пользователей в WordPress без отказов и ошибок

Почему важно правильно удалять удалённых пользователей в WordPress

В WordPress со временем накапливаются пользователи, которые давно не активны или были удалены из внешних систем, но остались в базе данных. Если просто удалить таких пользователей через админку, могут возникнуть проблемы с зависимостями — например, у пользователя могли остаться записи, комментарии или медиафайлы. Неправильное удаление пользователей способно привести к ошибкам на сайте, потере контента или даже сбоям в работе плагинов.

Кроме того, при большом количестве пользователей ручное удаление становится утомительным и чреватым ошибками. В этой статье мы рассмотрим, как безопасно и эффективно удалять удалённых пользователей с помощью кода и плагинов, минимизируя риски и сохраняя целостность сайта.

Как определить удалённых пользователей и подготовить их к удалению

Первый шаг — понять, кого считать удалённым пользователем. Чаще всего это пользователи с длительным отсутствием активности, например, не заходившие на сайт больше года, или учётные записи с определённым статусом.

Можно использовать следующий SQL-запрос для поиска пользователей, которые не выполняли вход более 365 дней:

SELECT ID, user_login, user_email, user_registered FROM wp_users LEFT JOIN wp_usermeta ON wp_users.ID = wp_usermeta.user_id WHERE meta_key = 'last_login' AND meta_value < UNIX_TIMESTAMP(DATE_SUB(NOW(), INTERVAL 365 DAY));

Важно: WordPress по умолчанию не хранит дату последнего входа, поэтому для отслеживания логинов нужно заранее установить плагин или добавить собственный код, который будет записывать мета-поле last_login. Вот пример функции для записи времени входа пользователя:

function wplist_update_last_login($user_login, $user) {
    update_user_meta($user->ID, 'last_login', time());
}
add_action('wp_login', 'wplist_update_last_login', 10, 2);

После накопления данных вы сможете использовать их для фильтрации и удаления устаревших пользователей.

Дополнительные критерии для удаления пользователей

Кроме времени последнего входа, можно учитывать такие параметры, как статус пользователя (например, role = 'subscriber'), наличие заказов, комментариев или публикаций. Это поможет не удалить важные аккаунты.

Рекомендуется создавать резервную копию базы данных перед массовым удалением пользователей.

Как безопасно удалить пользователей через код: пример функции для массового удаления

Для автоматизации удаления можно написать функцию, которая будет удалять пользователей, соответствующих вашим критериям. Ниже пример функции, которая удаляет пользователей с ролью subscriber и не заходивших более года:

function wplist_delete_inactive_subscribers() {
    $args = array(
        'role'       => 'subscriber',
        'meta_key'   => 'last_login',
        'meta_value' => strtotime('-1 year'),
        'meta_compare' => '<',
        'fields'     => 'ID',
        'number'     => 100
    );

    $user_query = new WP_User_Query($args);
    $users = $user_query->get_results();

    if (!empty($users)) {
        foreach ($users as $user_id) {
            require_once ABSPATH . 'wp-admin/includes/user.php';
            wp_delete_user($user_id);
        }
    }
}

Вы можете запускать эту функцию раз в неделю через WP-Cron или вручную, чтобы регулярно очищать базу.

Что делает функция wplist_delete_inactive_subscribers

  • Ищет пользователей с ролью subscriber, у которых мета-поле last_login меньше чем год назад.
  • Удаляет найденных пользователей с помощью стандартной функции wp_delete_user, которая корректно удаляет все данные, связанные с пользователем.

Использование плагинов для удаления удалённых пользователей

Если вы предпочитаете готовые решения, обратите внимание на плагины, которые помогают управлять пользователями и их удалением:

  • Inactive User Deleter — плагин для автоматического удаления неактивных пользователей по заданным параметрам.
  • Bulk Delete — мощный инструмент для массового удаления пользователей, записей и метаданных с гибкими условиями.

Эти плагины позволяют настроить фильтры, например, по роли, дате последнего входа и активности, и запускать удаление по расписанию.

Пример настройки Bulk Delete для пользователей

В админке после установки и активации:

  1. Перейдите в Bulk Delete > Delete Users.
  2. Выберите фильтр по дате последнего входа, роли пользователя, или другим параметрам.
  3. Настройте расписание для регулярного запуска задачи.
  4. Нажмите кнопку «Delete Users» для удаления.

Плагин автоматически удалит пользователей, учитывая зависимости и корректно очистит связанные данные, минимизируя ошибки.

Как избежать ошибок и потери данных при удалении пользователей

Помните следующие рекомендации:

  • Перед удалением обязательно сделайте резервную копию базы данных.
  • Проверяйте, есть ли у пользователя связанные записи или комментарии, чтобы при необходимости переназначить их другому пользователю.
  • Используйте стандартные функции WordPress (wp_delete_user) — они корректно удаляют все связанные данные.
  • Тестируйте удаление на тестовом сайте, чтобы убедиться в безопасности процесса.

Также можно использовать дополнительный код для переназначения записей удаляемого пользователя. Пример:

function wplist_reassign_posts_before_delete($user_id, $reassign_id = 1) {
    global $wpdb;
    $wpdb->update($wpdb->posts, array('post_author' => $reassign_id), array('post_author' => $user_id));
}

function wplist_safe_delete_user($user_id) {
    $admin_user_id = 1; // ID администратора для переназначения
    wplist_reassign_posts_before_delete($user_id, $admin_user_id);
    wp_delete_user($user_id);
}

Этот код переназначит все записи пользователя с ID $user_id администратору с ID 1 перед удалением.

Как удалить кеш в WordPress: лучшие методы для разработчиков и администраторов
09.11.2025
Как удалить удалённых пользователей в WordPress без отказов и ошибок
08.12.2025
Как полностью удалить пользователя в WordPress вместе со всеми его данными
06.02.2026
Автоматический импорт продуктов в WooCommerce через WP REST API
28.12.2025
Как создать страницу настроек для плагина в WordPress
20.12.2025