В процессе ведения сайта на WordPress часто возникает необходимость автоматически удалять устаревший контент. Это может быть связано с поддержанием актуальности информации, оптимизацией базы данных и улучшением производительности сайта. В этой статье мы подробно рассмотрим, как настроить автоматическое удаление старых записей в WordPress с учетом даты публикации и категории, а также приведем примеры кода и полезные рекомендации.
Почему важно удалять старый контент в WordPress
Удаление старого контента помогает поддерживать сайт в актуальном состоянии и уменьшает нагрузку на базу данных. Особенно это актуально для новостных сайтов, блогов с часто обновляемым контентом, а также для сайтов с ограничениями по объему хранилища.
Кроме того, удаление устаревших записей положительно влияет на SEO, так как поисковые системы ценят свежий и релевантный контент. Удаляя старые и неактуальные посты, вы снижаете риск появления дублей и устаревших сведений в выдаче.
Важно при этом корректно настроить процесс, чтобы не удалять важный контент и не навредить структуре сайта.
Как реализовать автоматическое удаление записей по дате и категории
Основная идея — создать функцию, которая будет запускаться по расписанию (cron), искать записи старше определенного срока и удалять их. Для гибкости можно добавить фильтрацию по категориям.
Для примера рассмотрим удаление записей старше 180 дней из категории с ID 5.
Регистрация cron задачи
Добавим в functions.php или в собственный плагин следующий код для регистрации события, которое будет срабатывать ежедневно:
function wpstart_register_delete_old_posts_event() {
if (!wp_next_scheduled('wpstart_delete_old_posts_hook')) {
wp_schedule_event(time(), 'daily', 'wpstart_delete_old_posts_hook');
}
}
add_action('wp', 'wpstart_register_delete_old_posts_event');
Функция удаления старых записей
Далее создадим обработчик события, который найдет и удалит нужные записи:
function wpstart_delete_old_posts() {
$days = 180; // количество дней
$category_id = 5; // ID категории для удаления
$date_query = array(
array(
'before' => date('Y-m-d', strtotime("-{$days} days")),
'inclusive' => true,
),
);
$args = array(
'post_type' => 'post',
'posts_per_page' => -1,
'date_query' => $date_query,
'category' => $category_id,
'fields' => 'ids',
'post_status' => 'any',
);
$old_posts = get_posts($args);
if (!empty($old_posts)) {
foreach ($old_posts as $post_id) {
wp_delete_post($post_id, true); // true для полного удаления без отправки в корзину
}
}
}
add_action('wpstart_delete_old_posts_hook', 'wpstart_delete_old_posts');
Объяснение кода
wp_schedule_eventставит задачу в расписание — в нашем случае ежедневную.get_postsс параметрамиdate_queryиcategoryнаходит записи, опубликованные более 180 дней назад в нужной категории.wp_delete_postудаляет найденные записи без возможности восстановления (без перехода в корзину).
Дополнительные настройки и рекомендации
Удаление по нескольким категориям
Если нужно удалять записи из нескольких категорий, замените параметр 'category' на 'category__in' => array(5,7,9), где массив содержит ID нужных категорий.
Безопасность и резервное копирование
Перед внедрением автоматического удаления обязательно настройте регулярное резервное копирование базы данных и файлов сайта. Это позволит восстановить данные, если удаление пройдет некорректно.
Логирование удалений
Для контроля процесса можно добавить запись в лог при каждом удалении:
function wpstart_delete_old_posts() {
// ...
if (!empty($old_posts)) {
foreach ($old_posts as $post_id) {
wp_delete_post($post_id, true);
error_log("WPStart: Удалена запись ID {$post_id} по истечении {$days} дней");
}
}
}
Логи можно просматривать в файле wp-content/debug.log при включенном режиме отладки WordPress.
Использование плагинов для управления автозадачами
Если вы не хотите писать код, существуют плагины, которые помогают автоматизировать удаление старого контента:
- Auto Post Delete — позволяет настроить удаление записей по времени и категориям через удобный интерфейс.
- WP Clear Posts — еще один инструмент для массового удаления устаревшего контента.
Для расширенной автоматизации и оптимизации сайта рекомендуем обратить внимание на Clearfy Pro — мощный плагин для оптимизации и очистки базы данных WordPress.
Заключение по теме удаления старого контента
Автоматическое удаление старого контента — важный аспект поддержания сайта в актуальном и оптимизированном состоянии. С помощью небольшого кода и планировщика задач можно настроить гибкое удаление записей по дате и категории без участия администратора. Такой подход помогает экономить ресурсы, улучшать SEO и повышать качество сайта.
Если вы хотите более глубоко автоматизировать процессы управления контентом, рекомендуем изучить возможности плагинов, в частности Clearfy Pro, который дополнительно поможет очистить базу от мусора и старых данных.