Как автоматизировать обновление публикаций в WordPress с помощью WP-Cron

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

Что такое WP-Cron и почему он полезен для автоматизации

WP-Cron — это имитация системного планировщика задач cron из Unix, встроенная в WordPress. Основное отличие в том, что WP-Cron срабатывает при загрузке страниц сайта, а не по реальному времени. Это означает, что задача будет выполнена, только когда кто-то посетит ваш сайт, что обычно вполне достаточно для большинства случаев.

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

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

Пример задачи: обновление даты публикации у старых постов

Предположим, что мы хотим, чтобы дата публикации всех постов старше 30 дней обновлялась ежедневно, чтобы поддерживать их в топах выдачи за счёт свежей даты. Для этого создадим функцию, которая обновит поле post_date и вызовем её через WP-Cron.

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

function wpmentor_register_cron_event() {
    if ( ! wp_next_scheduled( 'wpmentor_update_old_posts_hook' ) ) {
        wp_schedule_event( time(), 'daily', 'wpmentor_update_old_posts_hook' );
    }
}
add_action( 'wp', 'wpmentor_register_cron_event' );

add_action( 'wpmentor_update_old_posts_hook', 'wpmentor_update_old_posts' );

Здесь мы проверяем, не запланирована ли уже наша задача, и если нет — добавляем её на ежедневный запуск. Далее привязываем функцию обновления публикаций к нашему хуку wpmentor_update_old_posts_hook.

Функция обновления даты публикации

function wpmentor_update_old_posts() {
    $args = array(
        'post_type'      => 'post',
        'post_status'    => 'publish',
        'date_query'     => array(
            array(
                'column' => 'post_date',
                'before' => '30 days ago',
            ),
        ),
        'posts_per_page' => -1,
    );

    $old_posts = get_posts( $args );

    foreach ( $old_posts as $post ) {
        $new_date = current_time( 'mysql' );
        $updated_post = array(
            'ID'        => $post->ID,
            'post_date' => $new_date,
            'post_date_gmt' => get_gmt_from_date( $new_date ),
        );
        wp_update_post( $updated_post );
    }
}

Функция получает все опубликованные посты старше 30 дней, затем обновляет дату публикации на текущую дату. Обратите внимание, что обновляется и локальное время, и время в формате GMT — это важно для корректной работы WordPress.

Как проверить и отладить задачи WP-Cron

WP-Cron иногда может не срабатывать как ожидалось, особенно на сайтах с низким трафиком. Для удобства отладки рекомендуем установить плагин WP Crontrol. Он позволяет просматривать, запускать и удалять запланированные задачи прямо из админки.

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

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

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

function wpmentor_update_last_reviewed_meta() {
    $args = array(
        'post_type'      => 'post',
        'post_status'    => 'publish',
        'posts_per_page' => -1,
    );
    $posts = get_posts( $args );

    foreach ( $posts as $post ) {
        update_post_meta( $post->ID, '_wpmentor_last_reviewed', current_time( 'mysql' ) );
    }
}

Такой подход позволяет сохранять дату последнего обновления отдельно и отображать её в шаблоне, например, с помощью:

echo 'Последнее обновление: ' . get_post_meta( get_the_ID(), '_wpmentor_last_reviewed', true );

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

function wpmentor_notify_admin_on_update() {
    $to = get_option( 'admin_email' );
    $subject = 'Автоматическое обновление публикаций выполнено';
    $message = 'Дата публикаций была обновлена автоматически в ' . current_time( 'mysql' );
    wp_mail( $to, $subject, $message );
}

Использование WP-Cron в связке с плагинами WPGPT и Clearfy Pro

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

Плагин Clearfy Pro поможет оптимизировать работу WP-Cron, отключая ненужные задачи и улучшая производительность сайта.

Выводы и рекомендации

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

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

WooCommerce: как исправить проблему с обновлением стоимости товара при добавлении в корзину
29.04.2026
Как автоматизировать обновление публикаций в WordPress с помощью WP-Cron
27.02.2026
Как установить ограничения на регистрацию в WordPress по домену и email
10.02.2026
Как создать автоматический импорт постов в WordPress из внешнего источника
10.04.2026
Как удалить ревизии записей в WordPress с помощью плагинов и кода
13.02.2026