Если у вас на сайте WordPress со временем накапливается много устаревшего контента — старых записей, страниц или кастомных типов постов, которые уже не актуальны, это может негативно влиять на производительность сайта и SEO. В этой статье расскажем, как настроить автоматическое удаление такого контента с помощью кода и плагинов. Это позволит поддерживать базу данных чистой и релевантной без лишних затрат времени.
Почему важно удалять старый контент в WordPress
Со временем на сайте накапливаются записи, которые теряют смысл: устаревшие новости, акции, устаревшие статьи. Их хранение:
- Занимает место в базе данных и замедляет запросы к ней.
- Может негативно влиять на SEO, если поисковики видят много устаревших страниц.
- Создаёт путаницу для пользователей и усложняет управление сайтом.
Регулярное удаление старого контента позволяет избежать этих проблем и сделать сайт быстрее и удобнее для посетителей.
Как определить старый контент для удаления
В первую очередь нужно определить критерии, по которым контент будет признан устаревшим. Часто используют такие параметры:
- Возраст записи — например, старше 1 года.
- Статус публикации — опубликовано или черновик.
- Категории или метки — например, устаревшие акции.
- Кастомные поля — например, дата окончания события.
В зависимости от специфики сайта можно комбинировать эти параметры. Важно, чтобы удаление не затронуло важный контент.
Автоматическое удаление старых записей с помощью кода
Самый гибкий способ — использовать WP Cron и собственный код в functions.php или в плагине для удаления записей по условию. Рассмотрим пример функции для удаления записей старше 365 дней.
function wp_kurs_delete_old_posts() {
$args = array(
'post_type' => 'post',
'post_status' => 'publish',
'date_query' => array(
array(
'before' => '365 days 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 — принудительное удаление без корзины
}
}
}
// Запускаем функцию еженедельно
add_action('wp_kurs_weekly_event', 'wp_kurs_delete_old_posts');
// Регистрируем cron событие при активации темы/плагина
function wp_kurs_activate_cron() {
if (!wp_next_scheduled('wp_kurs_weekly_event')) {
wp_schedule_event(time(), 'weekly', 'wp_kurs_weekly_event');
}
}
add_action('wp', 'wp_kurs_activate_cron');
// Отмена cron события при деактивации
function wp_kurs_deactivate_cron() {
$timestamp = wp_next_scheduled('wp_kurs_weekly_event');
wp_unschedule_event($timestamp, 'wp_kurs_weekly_event');
}
register_deactivation_hook(__FILE__, 'wp_kurs_deactivate_cron');В этом примере мы создаём событие WP Cron, которое еженедельно запускает функцию удаления всех опубликованных записей старше года. Обратите внимание на принудительное удаление wp_delete_post($post_id, true) — это удаляет пост без перемещения в корзину.
Настройка под кастомные типы записей и условия
Если у вас есть кастомные типы записей, например, «product» или «event», просто замените 'post_type' => 'post' на нужный тип. Также можно добавить дополнительные условия в date_query или использовать метаполя.
Плагины для автоматического удаления старого контента
Если вы не хотите писать код, можно использовать плагины с похожим функционалом. Ниже несколько проверенных решений.
1. WP Bulk Delete
Очень мощный плагин для массового удаления записей по разным условиям: по дате, категориям, меткам, статусу и т.д. Позволяет создавать расписания для регулярного удаления. Имеет удобный интерфейс.
Скачать: WP Bulk Delete на WPSHOP
2. Auto Post Scheduler
Плагин для автоматического управления постами, в том числе удаления или смены статуса по расписанию. Подходит для сайтов с регулярным обновлением контента.
Скачать: Auto Post Scheduler на WPSHOP
Практические советы по безопасному удалению контента
Удаление данных — операция необратимая, поэтому важно соблюдать меры предосторожности:
- Перед внедрением автоматического удаления сделайте полную резервную копию сайта и базы данных.
- На начальном этапе используйте режим тестирования — вместо удаления выводите список постов, которые попадут под удаление.
- Регулярно проверяйте логи и результаты работы скриптов.
- Если важен SEO, подумайте о настройке редиректов с удаляемых URL на актуальные страницы.
Пример тестовой функции для вывода списка удаляемых записей
function wp_kurs_test_old_posts() {
$args = array(
'post_type' => 'post',
'post_status' => 'publish',
'date_query' => array(
array('before' => '365 days ago'),
),
'fields' => 'ids',
'posts_per_page' => -1
);
$old_posts = get_posts($args);
echo '<pre>';
print_r($old_posts);
echo '</pre>';
}
// Используйте вызов этой функции на странице админки для проверкиОптимизация базы данных после удаления
После массового удаления записей желательно оптимизировать таблицы базы данных, чтобы уменьшить размер и повысить производительность. Это можно сделать вручную через phpMyAdmin или с помощью плагинов, например Clearfy Pro, который включает функции оптимизации и очистки.
Оптимизация помогает удалить «мертвые» записи в таблицах и ускорить работу сайта.
Выводы и рекомендации
Автоматическое удаление старого контента — важная задача для поддержания актуальности и производительности WordPress-сайта. Используйте WP Cron и кастомный код для гибкости или проверенные плагины для удобства. Обязательно тестируйте и делайте резервные копии перед внедрением.
Если нужно быстро и удобно управлять массовым удалением, рекомендуем WP Bulk Delete. Для продвинутых пользователей идеально подходит собственный код с cron и кастомными условиями.