В администрировании сайтов на 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:
- Установите и активируйте плагин.
- Перейдите в меню Bulk WP → Bulk Delete Posts.
- В разделе "Delete Posts By Author" выберите нужного автора.
- Подтвердите удаление.
Особенности и ограничения плагинов
Плагины удобны для пользователей без навыков программирования, но могут создавать нагрузку на сервер при большом количестве записей. Для крупных сайтов лучше использовать 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 для оптимизации и очистки базы данных.