Как удалить записи определённого автора в WordPress с помощью кода

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

Почему важно корректно удалять записи автора

Простое удаление пользователя из админки WordPress не удаляет автоматически его записи, если не выставлен параметр удаления контента. Если контент остался, он будет иметь статус автора "Без автора". Иногда это нежелательно — особенно если записи устарели или неактуальны.

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

Удаление записей автора через WP_Query и wp_delete_post

Самый безопасный способ — использовать стандартные функции WordPress. Ниже пример функции, которая удаляет все посты автора по его ID.

function wpcource_delete_posts_by_author($author_id) {
    // Запрашиваем все посты автора
    $args = array(
        'author' => $author_id,
        'post_type' => 'post',
        'posts_per_page' => -1,
        'post_status' => 'any'
    );
    $query = new WP_Query($args);
    if ($query->have_posts()) {
        while ($query->have_posts()) {
            $query->the_post();
            // Удаляем пост с перемещением в корзину
            wp_delete_post(get_the_ID(), true); // true — для безвозвратного удаления
        }
        wp_reset_postdata();
    }
}

Используйте эту функцию, передав ID нужного автора. Например:

wpcource_delete_posts_by_author(5);

Этот код можно добавить в файл functions.php вашей темы или в отдельный плагин для однократного запуска.

Удаление записей автора через прямой SQL-запрос

Если на сайте очень много записей, то использование WP_Query может быть медленным. Тогда можно сделать удаление через SQL, но это требует осторожности и резервного копирования базы данных.

Пример запроса на удаление записей и связанных мета-данных:

global $wpdb;
$author_id = 5;

// Получаем ID постов автора
$post_ids = $wpdb->get_col($wpdb->prepare(
    "SELECT ID FROM {$wpdb->posts} WHERE post_author = %d",
    $author_id
));

if (!empty($post_ids)) {
    $post_ids_in = implode(',', array_map('intval', $post_ids));

    // Удаляем мета данные постов
    $wpdb->query("DELETE FROM {$wpdb->postmeta} WHERE post_id IN ($post_ids_in)");

    // Удаляем комментарии к этим постам
    $wpdb->query("DELETE FROM {$wpdb->comments} WHERE comment_post_ID IN ($post_ids_in)");

    // Удаляем сами посты
    $wpdb->query("DELETE FROM {$wpdb->posts} WHERE ID IN ($post_ids_in)");
}

Этот метод очень быстрый, но не вызывает хуки WordPress, поэтому плагины и темы не смогут отследить удаление, и может остаться мусор в связанных таблицах. Рекомендуется применять только при уверенности и резервных копиях.

Плагины для управления контентом автора

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

  • Bulk Delete — плагин для массового удаления постов, пользователей, комментариев с различными фильтрами, в том числе по автору. Позволяет задавать условия и удалять контент безопасно.
  • WP Bulk Delete — похожий инструмент с расширенными опциями.
  • WPRemark — плагин для отзывов, но в связке с WP можно удалять отзывы и контент, если они связаны с автором.

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

Рекомендации по безопасности и резервному копированию

Перед массовым удалением записей всегда делайте полную резервную копию сайта и базы данных. Если вы используете код, тестируйте на локальном окружении или тестовом сайте.

При использовании SQL-запросов будьте особенно внимательны — неправильный запрос может повредить базу данных.

Если вы хотите автоматизировать процесс удаления по расписанию, можно использовать WP Cron и функцию, приведённую выше. Например:

function wpcource_schedule_delete_author_posts() {
    if (!wp_next_scheduled('wpcource_delete_author_posts_hook')) {
        wp_schedule_event(time(), 'daily', 'wpcource_delete_author_posts_hook');
    }
}
add_action('wp', 'wpcource_schedule_delete_author_posts');

add_action('wpcource_delete_author_posts_hook', function() {
    $author_id = 5; // Укажите нужный ID
    wpcource_delete_posts_by_author($author_id);
});

Это позволит регулярно чистить записи определённого автора.

Автоматические записи в WordPress: создание и настройка по расписанию
01.02.2026
Отслеживание изменений в сообщениях комментариев WordPress
05.02.2026
Как удалить старые изображения в WordPress без плагинов
22.03.2026
Как настроить автоматическое сохранение черновиков в WordPress
12.11.2025
Как удалить разные виды кеша в WordPress
15.02.2026

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