Как добавить автоматическое удаление старого контента в WordPress

Почему важно удалять устаревший контент в WordPress

С течением времени на сайте накапливается множество записей, страниц и других типов контента, которые перестают быть актуальными. Это влияет не только на качество пользовательского опыта, но и на производительность сайта: база данных становится больше, увеличивается время отклика, а поисковые системы могут снижать рейтинг сайта из-за большого количества неактуальной информации.

Автоматическое удаление устаревших записей помогает держать сайт в порядке, облегчает администрирование и повышает скорость работы. В этой статье мы рассмотрим, как реализовать такую функцию в WordPress с помощью собственного кода и полезных плагинов.

Как настроить автоматическое удаление старых записей через WP Cron

WordPress имеет встроенный механизм планировщика задач — WP Cron. С его помощью можно запускать периодические задачи, например, для удаления записей старше определенного срока. Давайте создадим функцию wplessons_delete_old_posts, которая будет удалять записи старше 180 дней.

function wplessons_delete_old_posts() {
    $args = array(
        'post_type'      => 'post',
        'post_status'    => 'publish',
        'date_query'     => array(
            array(
                'before' => '180 days ago',
            ),
        ),
        'posts_per_page' => -1,
        'fields'         => 'ids',
    );

    $old_posts = get_posts($args);

    if (!empty($old_posts)) {
        foreach ($old_posts as $post_id) {
            wp_delete_post($post_id, true); // true — удаление без перемещения в корзину
        }
    }
}

// Регистрация задачи в WP Cron
function wplessons_schedule_old_posts_deletion() {
    if (!wp_next_scheduled('wplessons_delete_old_posts_hook')) {
        wp_schedule_event(time(), 'daily', 'wplessons_delete_old_posts_hook');
    }
}
add_action('wp', 'wplessons_schedule_old_posts_deletion');
add_action('wplessons_delete_old_posts_hook', 'wplessons_delete_old_posts');

Этот код выполняет следующие задачи:

  • Находит все опубликованные записи старше 180 дней.
  • Удаляет их без перемещения в корзину.
  • Запускает проверку и удаление ежедневно.

Такой подход помогает поддерживать базу данных в актуальном состоянии без вмешательства администратора.

Как автоматически удалять устаревшие страницы и пользовательский контент

Если на вашем сайте есть страницы или кастомные типы записей, которые тоже требуют очистки, можно расширить функцию, добавив их в параметры запроса. Например, для удаления страниц старше 365 дней:

function wplessons_delete_old_pages() {
    $args = array(
        'post_type'      => 'page',
        'post_status'    => 'publish',
        'date_query'     => array(
            array(
                'before' => '365 days ago',
            ),
        ),
        'posts_per_page' => -1,
        'fields'         => 'ids',
    );

    $old_pages = get_posts($args);

    if (!empty($old_pages)) {
        foreach ($old_pages as $page_id) {
            wp_delete_post($page_id, true);
        }
    }
}
add_action('wplessons_delete_old_pages_hook', 'wplessons_delete_old_pages');

// Запускаем задачу еженедельно
function wplessons_schedule_old_pages_deletion() {
    if (!wp_next_scheduled('wplessons_delete_old_pages_hook')) {
        wp_schedule_event(time(), 'weekly', 'wplessons_delete_old_pages_hook');
    }
}
add_action('wp', 'wplessons_schedule_old_pages_deletion');

Можно объединить удаление записей и страниц в одну функцию, добавив проверку пост-типа, либо делать отдельные задачи для разных типов контента.

Использование плагинов для автоматического удаления старого контента

Если вы не хотите писать код, существуют плагины, которые облегчают задачу:

  • Auto Delete Posts — позволяет настроить удаление записей по заданным условиям, например, по дате создания, категории или статусу.
  • WP Bulk Delete — мощный инструмент для массового удаления записей, страниц, пользовательских типов по фильтрам.
  • Clearfy Pro — комплексный плагин оптимизации сайта, который содержит функцию очистки базы данных и может помочь с удалением устаревшего контента.

Плагины обычно имеют удобный интерфейс и гибкие настройки, что идеально для пользователей без навыков программирования.

Рекомендации по безопасности и резервному копированию

Автоматическое удаление контента — операция, требующая осторожности. Рекомендуется:

  • Регулярно создавать резервные копии сайта и базы данных с помощью плагинов типа UpdraftPlus или WPBackItUp.
  • Тестировать код или плагины на тестовом сайте перед внедрением на рабочем ресурсе.
  • Использовать удаление с перемещением в корзину (параметр wp_delete_post вторым аргументом false), чтобы иметь возможность восстановить удалённые материалы при ошибке.

Выводы и полезные ссылки

Автоматизация удаления старого контента помогает поддерживать сайт чистым и быстрым. Используйте WP Cron для запуска регулярных задач, применяйте фильтры даты для выбора устаревших записей и учитывайте особенности вашего контента.

Для расширенной оптимизации рекомендую обратить внимание на Clearfy Pro — удобный инструмент для оптимизации и очистки WordPress.

Как удалить удалённые пользовательские аккаунты в WordPress и очистить базу данных
14.12.2025
Как создать собственный виджет в WordPress с примером кода
30.11.2025
Как использовать WPGPT для автоматизации создания контента в WordPress
02.02.2026
Как создать автоматическое удаление старых ревизий в WordPress для оптимизации базы данных
06.01.2026
Как отключить автовыделение и автозагрузку изображений в WordPress
02.02.2026