Ведение сайта на WordPress часто сопровождается накоплением большого объема устаревшего или неактуального контента. Это может негативно влиять на производительность сайта, SEO и удобство пользователей. В этой статье мы подробно разберём, как автоматизировать процесс удаления старого контента на WordPress, чтобы поддерживать сайт в актуальном состоянии без лишних усилий.
Почему важно автоматически удалять старый контент
Старый контент, который давно не обновлялся и не приносит трафик, способен замедлять работу сайта, занимать место в базе данных и ухудшать пользовательский опыт. Кроме того, поисковые системы могут снижать рейтинг сайта из-за большого количества нерелевантных или устаревших страниц.
Ручное удаление постов и страниц занимает много времени и требует постоянного контроля. Автоматизация этого процесса позволяет экономить ресурсы и поддерживать сайт в оптимальном состоянии.
Как выбрать контент для удаления: критерии и фильтры
Для автоматического удаления важно правильно определить, какой контент считать устаревшим. Рассмотрим основные критерии:
- Возраст записи: например, посты старше 1 года, которые не обновлялись.
- Отсутствие активности: отсутствие просмотров, комментариев или взаимодействий за определённый период.
- Статус публикации: черновики, запланированные записи или посты со статусом «в ожидании» можно удалять автоматически.
- Категории или теги: можно ограничить удаление записями из определённых категорий.
Комбинируя эти фильтры, вы можете настроить гибкий процесс автоматического удаления.
Реализация автоматического удаления с помощью кода
Ниже представлен пример функции для автоматического удаления постов старше 1 года, которые не обновлялись и имеют статус «опубликовано». Добавьте этот код в файл functions.php вашей темы или в кастомный плагин.
function wptest_autodelete_old_posts() {
$args = array(
'post_type' => 'post',
'post_status' => 'publish',
'date_query' => array(
array(
'column' => 'post_modified_gmt',
'before' => '1 year ago',
),
),
'fields' => 'ids',
'posts_per_page' => -1,
);
$old_posts = get_posts($args);
if (!empty($old_posts)) {
foreach ($old_posts as $post_id) {
wp_delete_post($post_id, true); // true — удаление без перемещения в корзину
}
}
}
// Запускаем функцию раз в сутки через WP-Cron
if (!wp_next_scheduled('wptest_daily_autodelete_hook')) {
wp_schedule_event(time(), 'daily', 'wptest_daily_autodelete_hook');
}
add_action('wptest_daily_autodelete_hook', 'wptest_autodelete_old_posts');
Этот код создаёт ежедневное событие, которое удаляет все опубликованные посты, не обновлявшиеся более года.
Использование плагинов для автоматизации удаления контента
Если не хотите писать код, можно использовать готовые плагины. Вот несколько полезных для автоматизации:
- Bulk Delete — позволяет массово удалять посты по различным критериям: возраст, категория, метки, статус и т.д. Можно настроить автоматические задания.
- Auto Delete Posts — плагин для автоматического удаления записей по расписанию с гибкими настройками фильтрации.
- WP Crontrol — дает полный контроль над заданиями WP-Cron, можно настроить интервал и запуск кастомных функций, подобных нашей выше.
Для примера, Bulk Delete имеет удобный интерфейс и позволяет создавать расписания удаления, что подходит для большинства сайтов.
Как избежать ошибок и потерю важных данных
Автоматическое удаление несёт риск случайной потери важных материалов. Чтобы этого избежать:
- Перед настройкой сделайте полную резервную копию сайта.
- Используйте тестовый режим плагина или выводите список записей для удаления перед их удалением.
- Исключайте из удаления категории и теги с важным контентом.
- Оптимально использовать удаление с перемещением в корзину, чтобы иметь возможность восстановить удалённые записи.
Также можно добавить логирование удалённых постов, чтобы отслеживать действия бэкенда.
Оптимизация базы данных после удаления
После удаления большого количества записей полезно оптимизировать базу данных. Это можно сделать плагинами, например Clearfy Pro, который умеет очищать неиспользуемые данные и оптимизировать таблицы.
Также можно выполнить SQL-команду вручную или через плагин WP-DBManager:
OPTIMIZE TABLE wp_posts, wp_postmeta;
Это освободит место и улучшит скорость запросов.
Советы по интеграции с WPShop и другими инструментами
Если вы используете на сайте плагины из WPShop, например, Clearfy Pro для оптимизации, комбинируйте их с автоматическим удалением, чтобы поддерживать максимальную производительность.
Также можно применять WP Remote Post для синхронизации данных и удаления контента на нескольких сайтах.
Автоматизация удаления старого контента — важный шаг к поддержке вашего WordPress-сайта в актуальном состоянии без лишних усилий. Используйте код, плагины и правильные настройки, чтобы сделать этот процесс безопасным и эффективным.