wp-lessons.ru wordpress WP-Lessons

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

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

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

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

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

Какие типы контента можно удалять автоматически

Обычно под старым контентом понимают:

  • Посты и страницы старше определённого срока (например, 2 года);
  • Черновики и неопубликованные записи, которые давно не редактировались;
  • Автоматические ревизии и автосохранения, засоряющие базу данных;
  • Комментарии со статусом спам или ожидающие модерации, которые не обрабатываются долгое время.

Важно настроить фильтры и критерии удаления так, чтобы не потерять ценный контент.

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

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

Пример кода для удаления постов старше 1 года (365 дней):

function wp_lessons_delete_old_posts() {
    $args = array(
        'post_type'      => 'post',
        'post_status'    => 'publish',
        'date_query'     => array(
            array(
                'before' => date('Y-m-d', strtotime('-365 days')),
            ),
        ),
        '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 для полного удаления без попадания в корзину
        }
    }
}

// Регистрация события при активации темы или плагина
if (!wp_next_scheduled('wp_lessons_daily_delete_old_posts')) {
    wp_schedule_event(time(), 'daily', 'wp_lessons_daily_delete_old_posts');
}

// Привязка функции к событию
add_action('wp_lessons_daily_delete_old_posts', 'wp_lessons_delete_old_posts');

Этот код можно добавить в файл functions.php вашей темы или в отдельный плагин. Он ежедневно будет удалять все публикации старше года.

Удаление старых ревизий и автосохранений для оптимизации базы данных

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

Пример функции для удаления ревизий:

function wp_lessons_delete_post_revisions() {
    global $wpdb;
    $wpdb->query("DELETE FROM {$wpdb->posts} WHERE post_type = 'revision'");
}

// Можно запускать вручную или по расписанию через WP-Cron
add_action('wp_lessons_delete_revisions_event', 'wp_lessons_delete_post_revisions');

if (!wp_next_scheduled('wp_lessons_delete_revisions_event')) {
    wp_schedule_event(time(), 'weekly', 'wp_lessons_delete_revisions_event');
}

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

Автоматическое удаление спама и неактивных комментариев

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

Пример кода для удаления спам-комментариев старше 30 дней:

function wp_lessons_delete_old_spam_comments() {
    global $wpdb;
    $date = date('Y-m-d H:i:s', strtotime('-30 days'));
    $wpdb->query($wpdb->prepare(
        "DELETE FROM {$wpdb->comments} WHERE comment_approved = 'spam' AND comment_date < %s",
        $date
    ));
}

// Запускаем еженедельно
if (!wp_next_scheduled('wp_lessons_weekly_delete_spam_comments')) {
    wp_schedule_event(time(), 'weekly', 'wp_lessons_weekly_delete_spam_comments');
}
add_action('wp_lessons_weekly_delete_spam_comments', 'wp_lessons_delete_old_spam_comments');

Плагины для автоматизации очистки и оптимизации контента

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

  • Clearfy Pro — плагин для оптимизации и очистки WordPress с функцией удаления ревизий, спама и устаревших данных;
  • WPRemark — инструмент для управления комментариями и их очистки;
  • ABC Pagination — помогает оптимизировать пагинацию и работу с большим количеством записей.

Как избежать ошибок при автоматическом удалении контента

Автоматическое удаление требует аккуратности. Вот основные рекомендации:

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

Если использовать WP-Cron, помните, что он запускается при посещении сайта, поэтому при низкой посещаемости могут быть задержки. В таких случаях лучше настроить системный cron на сервере.

Выводы и рекомендации по автоматизации удаления старого контента

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

Использование готовых плагинов, таких как Clearfy Pro, дополнительно упрощает задачу и даёт дополнительные инструменты для оптимизации.

Главное — соблюдать осторожность, протестировать решения и регулярно делать резервные копии.

×
WordPress
прокачай свой сайт!

Скидка на премиум темы и плагины

Успей забрать скидку ⋙