Зачем нужно автоматически удалять старый контент в WordPress
Ведение сайта на WordPress часто сопровождается накоплением большого количества устаревших публикаций, которые уже не актуальны или приносят мало трафика. Старый контент может замедлять работу сайта, увеличивать нагрузку на базу данных и портить SEO, если информация устарела.
Автоматическое удаление такого контента помогает поддерживать сайт в актуальном состоянии без необходимости ручной проверки и удаления. Особенно это полезно для сайтов с большим объемом публикаций, новостных порталов и блогов, где информация быстро устаревает.
В этой статье разберем, как можно реализовать автоматическое удаление старых записей в WordPress разными способами — через плагины и код.
Использование плагинов для автоматического удаления старого контента
Плагин "Auto Delete Posts" — простой способ очистки
Одним из популярных решений является плагин Auto Delete Posts. Он позволяет настроить автоматическое удаление постов, старше заданного количества дней.
Основные возможности плагина:
- Настройка возраста постов для удаления.
- Фильтрация по типу записи (пост, страница, пользовательские типы).
- Исключение определённых категорий или тегов.
- Регулярное выполнение через WP-Cron.
После установки и активации достаточно перейти в настройки плагина и задать параметры, например, удалять все записи старше 180 дней.
Плагин "WP Cleanup" — комплексная очистка сайта
Если нужно не только удалять старый контент, но и оптимизировать базу данных, рекомендуем плагин WP Cleanup. Он предлагает удаление ревизий, спам-комментариев и старых постов по расписанию.
Этот плагин подходит для комплексного обслуживания сайта, но для конкретной задачи удаления именно старых записей также отлично справляется.
Реализация автоматического удаления старого контента через код в functions.php
Создание пользовательской функции для удаления старых постов
Если хочется избежать установки плагинов и контролировать процесс вручную, можно добавить небольшой код в файл functions.php вашей темы или в собственный плагин.
Вот пример функции, которая удаляет все записи старше 90 дней:
function wpclass_auto_delete_old_posts() {
$args = array(
'date_query' => array(
array(
'column' => 'post_date',
'before' => '90 days ago',
),
),
'post_type' => 'post',
'post_status' => 'publish',
'fields' => 'ids',
'nopaging' => true,
);
$old_posts = get_posts( $args );
if ( !empty( $old_posts ) ) {
foreach ( $old_posts as $post_id ) {
wp_delete_post( $post_id, true );
}
}
}
add_action( 'wpclass_daily_cleanup_event', 'wpclass_auto_delete_old_posts' );Эта функция ищет все опубликованные посты старше 90 дней и удаляет их без возможности восстановления.
Настройка регулярного запуска функции через WP-Cron
Чтобы функция выполнялась автоматически, необходимо зарегистрировать собственное событие в WP-Cron и настроить его вызов раз в день.
function wpclass_schedule_daily_cleanup() {
if ( ! wp_next_scheduled( 'wpclass_daily_cleanup_event' ) ) {
wp_schedule_event( time(), 'daily', 'wpclass_daily_cleanup_event' );
}
}
add_action( 'wp', 'wpclass_schedule_daily_cleanup' );Этот код проверяет, запланировано ли событие, и если нет — ставит его в расписание.
Чтобы отменить задачу, можно использовать:
function wpclass_clear_daily_cleanup() {
$timestamp = wp_next_scheduled( 'wpclass_daily_cleanup_event' );
if ( $timestamp ) {
wp_unschedule_event( $timestamp, 'wpclass_daily_cleanup_event' );
}
}Как безопасно удалять контент и что учитывать
Резервное копирование данных
Прежде чем автоматизировать удаление записей, обязательно настройте регулярное резервное копирование сайта. Это поможет избежать потери важной информации из-за ошибок в коде или некорректной настройки.
Исключение важных записей
В коде можно добавить условия для исключения из удаления определённых категорий, тегов или отдельных записей. Например, если хотите сохранить все посты категории "Новости", измените аргументы запроса:
$args = array(
'date_query' => array(
array(
'column' => 'post_date',
'before' => '90 days ago',
),
),
'post_type' => 'post',
'post_status' => 'publish',
'category__not_in' => array( get_cat_ID('Новости') ),
'fields' => 'ids',
'nopaging' => true,
);Удаление с учетом пользовательских типов записей
Если на сайте используются пользовательские типы записей (custom post types), их тоже можно включить в процесс удаления, расширив параметр post_type до массива:
$args['post_type'] = array( 'post', 'custom_type' );Заключение по теме автоматического удаления старого контента в WordPress
Автоматизация удаления устаревших записей помогает поддерживать чистоту и производительность сайта без лишних усилий. Можно использовать готовые плагины для быстрой настройки или внедрять собственные решения через код, что дает максимальную гибкость.
Главное — внимательно тестировать такие изменения на тестовой среде и не забывать про резервное копирование, чтобы избежать потери важных данных.
Если нужна помощь с реализацией автоматического удаления или адаптацией к вашим задачам — обращайтесь, разберёмся вместе.