В работе с WordPress часто возникает необходимость массового удаления публикаций — будь то устаревший контент, тестовые записи или дубли. В этой статье разберём, как быстро и безопасно удалить множественные посты в WordPress с помощью кода и специализированных плагинов. Также рассмотрим, как фильтровать записи по различным параметрам перед удалением.
Почему массовое удаление постов полезно и когда оно необходимо
Большое количество ненужных записей замедляет работу сайта, увеличивает базу данных и затрудняет управление контентом. К тому же, при миграциях, обновлениях или смене концепции сайта может потребоваться чистка. Вручную удалять посты долго и неудобно, особенно если их сотни или тысячи. Автоматизация процесса при помощи кода или плагинов — оптимальный путь.
Удаление множественных постов с помощью пользовательской функции
Если у вас есть базовые навыки PHP и доступ к коду сайта (через functions.php или собственный плагин), вы можете создать функцию для массового удаления записей по определённым критериям.
Пример функции для удаления постов по категории
function wpstock_delete_posts_by_category($category_slug) {
$args = [
'category_name' => $category_slug,
'posts_per_page' => -1,
'post_status' => 'any',
'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 wpstock_delete_posts_by_category('news');Она удалит все записи из категории «news» без возможности восстановления из корзины. Будьте осторожны с параметром $force_delete = true.
Удаление записей по дате
Чтобы удалить записи, опубликованные до определённой даты, используйте следующий пример:
function wpstock_delete_posts_before_date($date) {
$args = [
'date_query' => [
[
'before' => $date,
'inclusive' => true,
]
],
'posts_per_page' => -1,
'post_status' => 'any',
'fields' => 'ids',
];
$posts = get_posts($args);
if (empty($posts)) {
return 'Посты для удаления не найдены';
}
foreach ($posts as $post_id) {
wp_delete_post($post_id, true);
}
return count($posts) . ' постов удалены';
}Вызов:
echo wpstock_delete_posts_before_date('2023-01-01');Массовое удаление постов через плагины
Для тех, кто не хочет работать с кодом, существуют удобные плагины с графическим интерфейсом, позволяющие фильтровать и удалять записи.
1. Bulk Delete
Очень популярный и мощный плагин для массового удаления постов, страниц, пользовательских типов записей. Позволяет удалять записи по категориям, тегам, статусам, дате, мета-полям и другим параметрам.
Основные преимущества:
- Фильтрация по множеству условий
- Удаление запланированных публикаций
- Возможность настроить автоматическую очистку с расписанием
Скачать и узнать подробности можно на официальной странице плагина.
2. WP Bulk Delete
Альтернатива с похожим функционалом. Поддерживает удаление по таксономиям, мета-полям, статусам и типам записей. Подходит для сайтов с большим количеством контента.
Особенности и рекомендации при массовом удалении
Перед удалением обязательно сделайте полную резервную копию сайта и базы данных. Это позволит восстановиться в случае ошибки.
При использовании кода избегайте вызова массового удаления на страницах с фронтенда без проверки прав пользователя и nonce, чтобы не допустить случайное или вредоносное удаление.
Если база данных очень большая, удаляйте записи частями, чтобы не привести к тайм-аутам и перегрузке сервера.
Как интегрировать массовое удаление с WPShop и плагинами
Если вы используете на сайте WPShop или его продукты — например, плагин Clearfy Pro, то можете дополнительно оптимизировать работу с контентом. Clearfy Pro, например, помогает отключить неиспользуемые функции и плагины, что снижает нагрузку при массовых операциях.
Для создания пользовательских решений массового удаления можно использовать хук wpstock_delete_posts_by_category в собственных плагинах WPShop или добавить кастомные кнопки в админке через API плагинов.
Итоги и советы
Массовое удаление постов — задача, требующая аккуратности. Применяйте код с проверками, делайте бэкапы и тестируйте на копии сайта. Плагины Bulk Delete и WP Bulk Delete — отличные помощники для быстрого и удобного управления большим количеством записей.
Используйте предложенные функции, адаптируя их под свои нужды, а также комбинируйте с инструментами WPShop для лучшей производительности и удобства.