wpcorp.ru wordpress WP Corp

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

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

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

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

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

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

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

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

Для начала нужно понять, как именно у вас обозначается «удалённый» пользователь. Это может быть статус пользователя, мета-данные или определённая роль.

Для примера возьмём пользователей с ролью pending_delete — так часто отмечают аккаунты, ожидающие окончательного удаления.

Получение списка пользователей с определённой ролью

Используем функцию get_users с параметром role:

$users_to_delete = wpcorp_get_users_by_role('pending_delete');

Реализуем функцию wpcorp_get_users_by_role для удобства:

function wpcorp_get_users_by_role($role) {
    return get_users(array(
        'role' => $role,
        'fields' => 'ID'
    ));
}

Удаление пользователей программно с учётом безопасности

Удалять пользователей нужно с осторожностью, чтобы не потерять важные данные. Стандартная функция WordPress для удаления пользователя — wp_delete_user(). Она позволяет удалить пользователя по ID и передать ID пользователя для переназначения контента.

Если вы хотите полностью удалить пользователя и все связанные данные, используйте:

foreach ($users_to_delete as $user_id) {
    // Переназначаем контент админу с ID 1
    wp_delete_user($user_id, 1);
}

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

Автоматизация удаления через крон-задачу

Для регулярного удаления «удалённых» пользователей можно настроить wp-cron событие, которое будет запускать функцию удаления автоматически.

function wpcorp_scheduled_user_cleanup() {
    $users = wpcorp_get_users_by_role('pending_delete');
    foreach ($users as $user_id) {
        wp_delete_user($user_id, 1);
    }
}

if (!wp_next_scheduled('wpcorp_user_cleanup_event')) {
    wp_schedule_event(time(), 'daily', 'wpcorp_user_cleanup_event');
}

add_action('wpcorp_user_cleanup_event', 'wpcorp_scheduled_user_cleanup');

Это обеспечит автоматическое выполнение очистки раз в день.

Дополнительные советы и плагины для управления пользователями

Если вы не хотите писать код, можно воспользоваться плагинами для управления пользователями и их удалением. Например, Clearfy Pro позволяет оптимизировать базу данных и управлять пользователями более эффективно.

Также полезен плагин WPCommunity, если на сайте большое сообщество — в нём есть инструменты для массового управления аккаунтами.

Расширение: удаление пользовательских мета-данных

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

function wpcorp_delete_user_meta_data($user_id) {
    global $wpdb;
    $wpdb->delete($wpdb->usermeta, array('user_id' => $user_id));
}

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

Итоги

Удаление «удалённых» пользователей WordPress программно — эффективный способ поддерживать чистоту и оптимизацию базы данных. Для этого важно правильно определить критерии, по которым пользователь считается удалённым, и использовать функцию wp_delete_user() с переназначением контента.

Автоматизация через wp-cron и использование специализированных плагинов помогут сделать процесс удобным и безопасным.

×
Оптимизируй свой сайт!

Скидка -15% на премиум плагин Clearfy Pro

Купить плагин сейчас ⋙