Как удалить все посты определённого автора в WordPress

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

Почему может понадобиться удалить все посты автора в WordPress

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

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

Удаление постов автора через WP-CLI

Самый быстрый и безопасный способ массового удаления — использование WP-CLI, командной строки для управления WordPress. Если у вас есть доступ к серверу, выполните следующую команду:

wp post delete $(wp post list --post_type=post --author=123 --format=ids) --force

Где 123 — ID автора. Команда сначала получает список всех ID постов автора, а затем удаляет их без возможности восстановления (параметр --force).

Преимущества метода: высокая скорость, отсутствие нагрузки на сайт, возможность автоматизации в скриптах.

Удаление постов автора с помощью кода в functions.php

Если доступа к WP-CLI нет, можно добавить временный PHP-код в файл functions.php активной темы или создать небольшой плагин. Вот пример функции, которая удалит все посты автора по ID:

function wpbe_delete_posts_by_author($author_id) {
    $args = [
        'author' => $author_id,
        'post_type' => 'post',
        'posts_per_page' => -1,
        'fields' => 'ids'
    ];

    $posts = get_posts($args);

    if (empty($posts)) {
        return 'Посты не найдены';
    }

    foreach ($posts as $post_id) {
        wp_delete_post($post_id, true); // true — удаление без перемещения в корзину
    }

    return count($posts) . ' постов автора удалено';
}

// Пример вызова функции
// echo wpbe_delete_posts_by_author(123);

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

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

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

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

Для удаления постов автора через Bulk Delete:

  1. Установите и активируйте плагин.
  2. Перейдите в меню Bulk WP → Bulk Delete Posts.
  3. В разделе "Delete Posts By Author" выберите нужного автора.
  4. Подтвердите удаление.

Особенности и ограничения плагинов

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

Как избежать проблем при удалении постов

При массовом удалении стоит учитывать:

  • Резервное копирование — всегда делайте бэкап перед удалением.
  • Удаление связанных данных — комментарии, метаданные и вложения могут остаться, если не настроено их удаление.
  • Кэширование и индексация — после удаления почистите кеш и обновите поисковый индекс.
  • Права доступа — убедитесь, что у пользователя, который выполняет удаление, есть соответствующие права.

Автоматизация удаления постов автора с помощью WP-Cron

Если нужно регулярно удалять посты определённого автора (например, спамера), можно настроить автоматический скрипт с помощью WP-Cron и нашей функции:

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

add_action('wpbe_delete_author_posts_hook', function() {
    $author_id = 123; // ID автора
    wpbe_delete_posts_by_author($author_id);
});

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

Заключение по теме удаления постов автора

Удаление всех постов автора — задача, с которой часто сталкиваются администраторы WordPress. Выбор метода зависит от объёма контента, навыков и возможностей доступа к серверу. WP-CLI — лучший вариант для больших сайтов и автоматизации, код в functions.php подходит для разовых действий, а плагины удобны для пользователей без технических навыков.

Если хотите расширить функциональность сайта и упростить управление контентом, рекомендую изучить плагины из WPShop, например, Clearfy Pro для оптимизации и очистки базы данных.

Как создать автоматическую отправку email в WordPress
25.11.2025
WooCommerce: автоматическое удаление заказов по срокам без плагинов
01.06.2026
Как создать собственный шорткод WordPress с поддержкой параметров
06.11.2025
WooCommerce: автоматическое удаление заказов по просроченным срокам
04.06.2026
Как автоматизировать управление пользователями WordPress по ролям
29.03.2026