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

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

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

Диагностика: как определить, какой контент подлежит удалению

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

  • Используйте SQL-запрос для подсчёта старых записей:
SELECT ID, post_title, post_date FROM wp_posts WHERE post_type = 'post' AND post_date < NOW() - INTERVAL 2 YEAR AND post_status = 'publish';
  • С помощью плагина Query Monitor можно отследить, какие запросы к базе данных занимают много времени, чтобы не нагружать сайт лишней выборкой.

Практический чек-лист диагностики

  • Определите критерии старости контента (дата публикации, отсутствие обновлений).
  • Проверьте трафик на страницы с помощью Google Analytics или Matomo.
  • Сделайте резервную копию базы данных перед удалением.
  • Оцените необходимость хранения контента для SEO или архивных целей.

Пошаговое решение: автоматизация удаления старых постов через WP-CLI и Cron

Для удаления по расписанию используем WP-CLI и стандартный cron Linux, либо WP-Cron в WordPress.

1. Создаём PHP-функцию для удаления старых постов

function hueman_delete_old_posts() {
    global $wpdb;
    $date_limit = date('Y-m-d H:i:s', strtotime('-2 years'));
    $old_posts = $wpdb->get_col($wpdb->prepare(
        "SELECT ID FROM {$wpdb->posts} WHERE post_type = 'post' AND post_status = 'publish' AND post_date < %s",
        $date_limit
    ));

    foreach ($old_posts as $post_id) {
        wp_delete_post($post_id, true); // true - удалять без корзины
    }
}

2. Создаем WP-CLI команду

if (defined('WP_CLI') && WP_CLI) {
    WP_CLI::add_command('hueman delete_old_posts', function() {
        hueman_delete_old_posts();
        WP_CLI::success('Старые посты удалены');
    });
}

3. Добавляем задание в системный cron (пример для Linux)

# Открыть crontab
crontab -e

# Добавить задачу на еженедельный запуск в понедельник в 3:00
0 3 * * 1 /usr/bin/wp hueman delete_old_posts --path=/var/www/html/wordpress >> /var/log/wp_delete_old_posts.log 2>&1

4. Альтернативный метод: WP-Cron с хуком

add_action('hueman_delete_old_posts_event', 'hueman_delete_old_posts');

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

Добавьте этот код в functions.php темы или в собственный плагин.

Проверка результата после внедрения

  • Запустите WP-CLI команду вручную: wp hueman delete_old_posts и убедитесь в отсутствии ошибок.
  • Проверьте в админке WordPress, что посты старше 2 лет удалены.
  • Просмотрите логи задачи cron для подтверждения выполнения.
  • Проверьте размер базы данных до и после удаления, уменьшение значит, что удаление сработало.

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

  • Удаление не того контента: Неправильный SQL-запрос или логика функции. Проверьте критерии выборки, используйте безопасный wp_delete_post().
  • Пропуск заданий cron: Системный cron не настроен или WP-Cron отключен. Проверьте статус cron через crontab -l и включите WP-Cron, если используете его.
  • Потеря данных без резервной копии: Всегда делайте бэкап базы перед массовым удалением.
  • Проблемы с правами доступа: Убедитесь, что пользователь, под которым запускается cron, имеет нужные права для выполнения WP-CLI и доступа к файлам.

Практические советы по безопасности и производительности

  • Удаление большого количества постов за один запуск может вызвать таймауты. Разбейте удаление на батчи по 50-100 записей.
  • Используйте транзакции базы данных, если вы пишете сложные SQL-запросы.
  • Отключайте WP-Cron и используйте системный cron для стабильности на больших сайтах.
  • Логируйте все операции удаления с указанием даты и количества удалённых постов.
  • Перед удалением проверяйте ссылки на удаляемый контент, чтобы избежать 404 ошибок на сайте.

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

МетодПлюсыМинусыПример использования
WP-CLI + системный cronВысокая производительность, надежность, не зависит от трафикаТребует доступа к серверу и знания командной строкиСкрипт для удаления и cron-задание
WP-Cron с хукамиПростота настройки, не требует сервераЗависит от посещаемости сайта, менее надеженКод в functions.php с wp_schedule_event
Плагины для очистки контентаУдобный интерфейс, дополнительные фильтрыНагрузка на сайт, ограниченная гибкостьПлагины типа WP Bulk Delete

Добавь в закладки и поделись с друзьями:

⭐⭐⭐⭐⭐
Как автоматизировать удаление старого контента в WordPress: практическое руководство
02.08.2026
Как добавить обратную связь с привязкой к пользователю в WordPress
13.03.2026
Как автоматизировать управление категориями в WordPress с помощью кода
16.02.2026
Как запретить индексацию старых страниц в WordPress через robots.txt и meta robots
18.08.2026
Как создать автозаполняемые поля в формах WordPress с использованием AJAX
07.04.2026
×

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

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

пишет статьи

готовит SEO

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

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