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

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

Что такое WP-Cron и зачем его использовать для автоматизации

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

Использование WP-Cron позволяет:

  • Автоматически создавать новые записи по расписанию (например, новости, акции, отзывы).
  • Удалять устаревший или неактуальный контент без ручного вмешательства.
  • Оптимизировать работу сайта, снизив нагрузку на администраторов.

Обратите внимание, что WP-Cron зависит от посещаемости сайта — если трафик низкий, задачи могут запускаться с задержкой. Для критичных задач рекомендуется настроить системный cron и выключить WP-Cron (через define('DISABLE_WP_CRON', true); в wp-config.php).

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

Рассмотрим пример, как автоматически создавать новую запись типа post раз в день.

Регистрация расписания и задачи

Сначала добавим кастомный интервал в расписание WP-Cron, если нужно, или используем стандартные. В нашем случае используем стандартный интервал 'daily'.

Далее регистрируем событие при активации темы или плагина:

function wpteam_activate_cron() {
    if ( ! wp_next_scheduled( 'wpteam_daily_create_post' ) ) {
        wp_schedule_event( time(), 'daily', 'wpteam_daily_create_post' );
    }
}
register_activation_hook( __FILE__, 'wpteam_activate_cron' );

function wpteam_deactivate_cron() {
    wp_clear_scheduled_hook( 'wpteam_daily_create_post' );
}
register_deactivation_hook( __FILE__, 'wpteam_deactivate_cron' );

Этот код гарантирует, что задача будет запущена ежедневно и отменена при деактивации плагина.

Реализация функции создания записи

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

add_action( 'wpteam_daily_create_post', 'wpteam_create_daily_post' );
function wpteam_create_daily_post() {
    $new_post = array(
        'post_title'    => 'Автоматически созданная запись ' . date('Y-m-d'),
        'post_content'  => 'Это содержание создано автоматически через WP-Cron.',
        'post_status'   => 'publish',
        'post_author'   => 1,
        'post_category' => array(1),
    );
    wp_insert_post( $new_post );
}

Как видите, функция формирует массив с параметрами записи и вставляет её в базу через wp_insert_post.

Автоматическое удаление записей по условию

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

Создание задачи удаления

Аналогично создаём cron-задачу при активации:

function wpteam_activate_delete_cron() {
    if ( ! wp_next_scheduled( 'wpteam_daily_delete_old_posts' ) ) {
        wp_schedule_event( time(), 'daily', 'wpteam_daily_delete_old_posts' );
    }
}
register_activation_hook( __FILE__, 'wpteam_activate_delete_cron' );

function wpteam_deactivate_delete_cron() {
    wp_clear_scheduled_hook( 'wpteam_daily_delete_old_posts' );
}
register_deactivation_hook( __FILE__, 'wpteam_deactivate_delete_cron' );

Реализация функции удаления

Функция для удаления записей старше 30 дней может выглядеть так:

add_action( 'wpteam_daily_delete_old_posts', 'wpteam_delete_old_posts' );
function wpteam_delete_old_posts() {
    $args = array(
        'date_query' => array(
            array(
                'before' => '30 days ago',
            ),
        ),
        'post_type'      => 'post',
        'post_status'    => 'publish',
        'posts_per_page' => -1,
        'fields'         => 'ids',
    );
    $query = new WP_Query( $args );
    if ( $query->have_posts() ) {
        foreach ( $query->posts as $post_id ) {
            wp_delete_post( $post_id, true ); // true — удаление без корзины
        }
    }
}

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

Рекомендации по использованию плагинов для WP-Cron

Хотя код выше поможет реализовать нужный функционал, для управления расписанием и отладки WP-Cron можно использовать плагины:

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

Использование таких инструментов помогает избежать ошибок и контролировать автоматизацию.

Советы по отладке и производительности WP-Cron

Если задачи не выполняются вовремя, проверьте:

  • Посещаемость сайта — WP-Cron срабатывает при заходе на сайт.
  • Не конфликтуют ли другие плагины с WP-Cron.
  • Логируйте выполнение задач, добавляя в функции запись в файл через error_log или собственный лог.

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

Как изменить регистрацию пользователей в WordPress без плагинов
20.02.2026
Как отключить плагины на отдельных страницах WordPress для ускорения сайта
11.01.2026
Как автоматизировать удаление старого контента в WordPress с помощью WP-Cron и кода
21.03.2026
Как изменить размер и оптимизировать изображения в WordPress без плагинов
05.12.2025
Оптимизация базы данных WordPress: практические советы
06.11.2025

Возникли задачи по WP? Вы можете задать свой вопрос на FAQwp.com Либо обратиться к специалистам поддержки.