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

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

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

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

Основные преимущества WP-Cron:

  • Не требует настройки на уровне сервера.
  • Позволяет запускать задачи с нужной периодичностью.
  • Интегрирован с системой WordPress и её хуками.

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

Создание функции для автоматической публикации постов

Для начала создадим функцию, которая найдет все записи со статусом future (запланированные на будущее) и опубликует их, если наступило время публикации.

function wpstandart_publish_scheduled_posts() {
    $args = [
        'post_status' => 'future',
        'post_type' => 'post',
        'posts_per_page' => -1,
        'date_query' => [
            [
                'before' => current_time('mysql'),
                'inclusive' => true,
            ],
        ],
    ];
    $scheduled_posts = get_posts($args);

    foreach ($scheduled_posts as $post) {
        wp_publish_post($post->ID);
    }
}

Эта функция получает все отложенные записи, у которых дата публикации уже наступила, и публикует их с помощью функции wp_publish_post. Важно использовать current_time('mysql'), чтобы учитывать часовой пояс сайта.

Регистрация события WP-Cron для автоматической публикации

Теперь нужно создать событие, которое будет запускать нашу функцию по расписанию. Например, пусть это будет каждые 15 минут.

function wpstandart_schedule_cron_event() {
    if (!wp_next_scheduled('wpstandart_publish_cron_hook')) {
        wp_schedule_event(time(), 'fifteen_minutes', 'wpstandart_publish_cron_hook');
    }
}
add_action('wp', 'wpstandart_schedule_cron_event');

add_action('wpstandart_publish_cron_hook', 'wpstandart_publish_scheduled_posts');

// Регистрируем интервал 15 минут
function wpstandart_cron_schedules($schedules) {
    if (!isset($schedules['fifteen_minutes'])) {
        $schedules['fifteen_minutes'] = [
            'interval' => 15 * 60,
            'display' => 'Каждые 15 минут'
        ];
    }
    return $schedules;
}
add_filter('cron_schedules', 'wpstandart_cron_schedules');

В этом коде мы добавляем новый интервал для WP-Cron — 15 минут, регистрируем событие wpstandart_publish_cron_hook и подключаем к нему нашу функцию публикации. Хук wp проверяет, запланировано ли событие, и если нет — создает его.

Рекомендации по отладке и контролю работы WP-Cron

WP-Cron зависит от посещаемости сайта, и если трафик низкий, задачи могут запускаться с задержкой. Для критичных задач можно настроить системный cron на сервере, вызывающий WP-Cron по URL, например:

wget -q -O - https://your-site.ru/wp-cron.php?doing_wp_cron >/dev/null 2>&1

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

Автоматическая публикация с импортом контента: пример с плагином WPRemark

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

Пример интеграции с WPRemark:

1. Импортируйте отзывы с датой публикации в будущем.

2. Используйте функцию wpstandart_publish_scheduled_posts() в событии WP-Cron для их автоматической публикации.

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

Заключение

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

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

Как автоматически удалять неактивных пользователей WordPress с помощью кода
09.06.2026
Как отключить AJAX в WooCommerce: практические способы
21.04.2026
Как создать автоматические резервные копии WordPress с помощью PHP и плагинов
01.01.2026
Как удалить PHP ошибки в WordPress: практические советы и примеры
05.11.2025
Как удалить или скрыть адреса постов в WordPress
02.02.2026