Зачем нужно расписание публикаций в WordPress
Расписание публикаций — мощный инструмент для блогеров, редакторов и маркетологов. Оно позволяет автоматически публиковать записи в заданное время, что удобно для планирования контента и поддержания активности сайта. В WordPress встроена базовая функция планирования публикаций, но часто её возможностей недостаточно для сложных сценариев, например, повторяющихся постов, отложенных обновлений или публикаций по определённым условиям.
В этой статье мы рассмотрим, как расширить стандартные возможности WordPress, чтобы создавать гибкие расписания публикаций с помощью кода и плагинов. Это поможет вам автоматизировать работу и сделать контент-план более эффективным.
Также мы покажем примеры кода, которые можно использовать в вашей теме или плагине, чтобы внедрить кастомное расписание публикаций.
Основные функции планирования публикаций в WordPress
По умолчанию WordPress позволяет задать дату и время публикации записи через редактор. Для этого нужно в редакторе справа выбрать «Опубликовать», затем нажать на дату и указать нужное время. Если время в будущем — запись попадёт в очередь и опубликуется автоматически.
Это работает хорошо для единичных статей, но не подходит для сложных задач:
- Повторяющиеся публикации
- Публикация нескольких постов по расписанию
- Публикация с условиями или по событию
- Массовое управление отложенными публикациями
Для решения этих задач можно использовать плагины или писать собственный код.
Плагины для расширенного расписания публикаций
1. SchedulePress (ранее WP Scheduled Posts)
Очень популярный плагин с визуальным календарём публикаций. Позволяет легко планировать, управлять и изменять расписание. Имеет функции автоматического репостинга и массовой корректировки.
Преимущества:
- Удобный drag-and-drop интерфейс
- Автоматическое расписание для множества постов
- Уведомления о запланированных публикациях
Недостаток — часть функционала доступна только в PRO-версии.
2. PublishPress
Этот плагин не только расширяет возможности расписания публикаций, но и предлагает полный редакционный календарь и управление рабочими процессами. Удобен для командной работы.
Поддерживает кастомные типы записей, уведомления и ревью контента.
Создание собственного расписания публикаций с помощью кода
Использование WP-Cron для запуска задач по расписанию
WordPress использует систему wp-cron для выполнения запланированных задач. Мы можем создавать свои задачи, которые будут запускаться по расписанию и публиковать посты.
Пример: создадим функцию, которая будет публиковать отложенные записи с определённым мета-полем.
function wppolls_publish_scheduled_posts() {
$args = array(
'post_status' => 'future',
'meta_key' => 'wppolls_schedule',
'meta_value' => 'auto',
'posts_per_page' => 5
);
$query = new WP_Query($args);
if ($query->have_posts()) {
while ($query->have_posts()) {
$query->the_post();
$post_id = get_the_ID();
wp_publish_post($post_id);
}
}
wp_reset_postdata();
}
if (!wp_next_scheduled('wppolls_cron_publish_hook')) {
wp_schedule_event(time(), 'hourly', 'wppolls_cron_publish_hook');
}
add_action('wppolls_cron_publish_hook', 'wppolls_publish_scheduled_posts');В этом примере мы создаём задачу, которая каждый час проверяет наличие отложенных постов с мета-полем wppolls_schedule = auto и публикует их.
Это пример простой автоматизации, которую можно расширять, добавляя условия, уведомления и логи.
Программное создание отложенной записи с мета-данными
Чтобы создать запись, которая будет опубликована позже, можно использовать следующий код:
$post_data = array(
'post_title' => 'Отложенный пост от wppolls',
'post_content' => 'Содержание поста...',
'post_status' => 'future',
'post_author' => 1,
'post_date' => date('Y-m-d H:i:s', strtotime('+2 hours'))
);
$post_id = wp_insert_post($post_data);
if (!is_wp_error($post_id)) {
update_post_meta($post_id, 'wppolls_schedule', 'auto');
}Этот код создаёт пост, который автоматически опубликуется через 2 часа благодаря стандартному механизму WordPress и нашему кастомному планировщику.
Как отследить и управлять расписанием публикаций через админку
Для удобства можно добавить в админ-панель свой экран с расписанием публикаций, чтобы видеть, какие посты запланированы, их статус и возможность редактировать даты.
Пример добавления страницы меню в админке с таблицей запланированных записей:
function wppolls_add_schedule_page() {
add_menu_page('Расписание публикаций', 'Расписание', 'manage_options', 'wppolls-schedule', 'wppolls_render_schedule_page');
}
add_action('admin_menu', 'wppolls_add_schedule_page');
function wppolls_render_schedule_page() {
$args = array('post_status' => 'future', 'posts_per_page' => 20);
$posts = get_posts($args);
echo '<h1>Запланированные публикации</h1>';
echo '<table border="1" cellpadding="5">';
echo '<tr><th>ID</th><th>Заголовок</th><th>Дата публикации</th></tr>';
foreach ($posts as $post) {
echo '<tr><td>' . $post->ID . '</td><td>' . esc_html($post->post_title) . '</td><td>' . $post->post_date . '</td></tr>';
}
echo '</table>';
}Такой экран поможет редакторам и администраторам быстро ориентироваться в запланированных публикациях и управлять ими.
Практические советы и рекомендации
Учитывайте работу WP-Cron
WP-Cron запускается при заходе на сайт, поэтому если трафик низкий, задачи могут запускаться с задержкой. Для важных задач лучше настроить системный cron на сервере, чтобы запускать wp-cron.php регулярно.
Тестируйте расписание на тестовом сайте
Перед внедрением автоматизации на живой сайт обязательно проверяйте логику, чтобы не опубликовать посты раньше времени или не пропустить публикацию.
Используйте мета-поля для гибкости
Мета-поля позволяют добавлять дополнительные параметры к публикациям — например, тип расписания, приоритет, повторяемость. Это даёт возможность создавать сложные сценарии.
Комбинируйте плагины и код
Если стандартных плагинов недостаточно, дополняйте их собственными функциями, чтобы получить идеальный инструмент под ваши задачи.