wplearn.ru wordpress WP Learn

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

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

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

Старые посты, черновики или устаревшие страницы могут негативно влиять на производительность сайта. База данных растёт, запросы к ней становятся дольше, что сказывается на скорости загрузки страниц. Кроме того, неактуальный контент может сбивать с толку пользователей и ухудшать SEO. Автоматическое удаление позволяет поддерживать чистоту и актуальность сайта без постоянного ручного контроля.

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

Удаление старого контента с помощью WP-Cron и пользовательской функции

Создание функции удаления старых постов

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

function wplearn_delete_old_posts() {
    global $wpdb;
    $days = 180; // количество дней
    $date = date('Y-m-d H:i:s', strtotime('-' . $days . ' days'));

    $posts = get_posts(array(
        'date_query' => array(
            array(
                'before' => $date,
                'inclusive' => true,
            ),
        ),
        'post_type' => 'post',
        'post_status' => 'publish',
        'numberposts' => -1,
        'fields' => 'ids',
    ));

    if (!empty($posts)) {
        foreach ($posts as $post_id) {
            wp_delete_post($post_id, true); // true - удалить без возможности восстановления
        }
    }
}

Регистрация задачи в WP-Cron

Теперь нужно зарегистрировать периодическую задачу, чтобы функция запускалась, например, раз в сутки:

function wplearn_schedule_old_post_deletion() {
    if (!wp_next_scheduled('wplearn_daily_old_post_deletion')) {
        wp_schedule_event(time(), 'daily', 'wplearn_daily_old_post_deletion');
    }
}
add_action('wp', 'wplearn_schedule_old_post_deletion');
add_action('wplearn_daily_old_post_deletion', 'wplearn_delete_old_posts');

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

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

Плагин Auto Post Delete

Один из популярных плагинов — Auto Post Delete. Он позволяет настроить удаление постов по возрасту, категории, статусу и другим параметрам через удобный интерфейс.

Преимущества:

  • Простая настройка без кода
  • Фильтрация по типам постов и таксономиям
  • Возможность сохранения важных постов

Минусы — дополнительная нагрузка на сайт и зависимость от обновлений плагина.

Плагин Clearfy Pro для оптимизации базы данных

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

Дополнительные советы по безопасному удалению контента

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

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

Для большей безопасности можно реализовать предварительный этап — перевод старого поста в статус «черновик» или «архив», а затем удаление через определённое время.

Пример расширения функции: удаление старых записей по категории

Иногда нужно удалять не все старые посты, а только из определённых категорий. Вот пример кода для такой задачи:

function wplearn_delete_old_posts_by_category($category_slug, $days = 180) {
    $date = date('Y-m-d H:i:s', strtotime('-' . $days . ' days'));

    $posts = get_posts(array(
        'category_name' => $category_slug,
        'date_query' => array(
            array(
                'before' => $date,
                'inclusive' => true,
            ),
        ),
        'post_status' => 'publish',
        'numberposts' => -1,
        'fields' => 'ids',
    ));

    if (!empty($posts)) {
        foreach ($posts as $post_id) {
            wp_delete_post($post_id, true);
        }
    }
}

// Пример вызова функции для категории 'news'
add_action('wplearn_daily_old_post_deletion', function() {
    wplearn_delete_old_posts_by_category('news', 90);
});

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

Выводы и рекомендации по автоматическому удалению контента

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

Если вы предпочитаете готовые решения, обратите внимание на плагины Auto Post Delete и Clearfy Pro, которые помогут настроить процесс без сложного кода.

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

×

AI-плагин от WPShop.ru

анализирует конкурентов

пишет статьи

готовит SEO

генерирует изображения

и еще кое-что...
WPGPT
Плагин, который наполняет ваш сайт WordPress
Узнать больше