Как автоматизировать создание и обновление календаря мероприятий в WordPress

|

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

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

Ручное добавление событий в календарь — процесс трудоёмкий и подверженный ошибкам. При большом количестве мероприятий легко запутаться, забыть обновить дату или время, а также неактуальные события могут оставаться на сайте, ухудшая пользовательский опыт.

Автоматизация календаря помогает:

Выбор плагина для календаря мероприятий

Для начала рассмотрим популярные плагины, которые поддерживают автоматизацию и расширяемы через код.

The Events Calendar

Один из самых популярных плагинов с большим функционалом: поддерживает интеграцию с Google Calendar, автоматическую публикацию событий, фильтры и виджеты. Плагин имеет расширения для автоматизации и API для разработчиков.

Event Organiser

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

WP Event Manager

Лёгкий и гибкий плагин с поддержкой REST API, что позволяет создавать автоматические импорты и обновления событий из внешних систем.

Автоматизация создания и обновления событий через код

Рассмотрим пример, как программно добавить событие и обновить его с помощью собственного кода. В этом примере используем кастомный тип записи wpbusiness_event.

function wpbusiness_register_event_post_type() {
    $labels = array(
        'name'               => 'События',
        'singular_name'      => 'Событие',
        'add_new'            => 'Добавить событие',
        'add_new_item'       => 'Добавить новое событие',
        'edit_item'          => 'Редактировать событие',
        'new_item'           => 'Новое событие',
        'view_item'          => 'Просмотреть событие',
        'search_items'       => 'Поиск событий',
        'not_found'          => 'События не найдены',
        'not_found_in_trash' => 'События не найдены в корзине',
    );

    $args = array(
        'labels'             => $labels,
        'public'             => true,
        'has_archive'        => true,
        'rewrite'            => array('slug' => 'events'),
        'supports'           => array('title', 'editor', 'custom-fields'),
        'show_in_rest'       => true,
    );

    register_post_type('wpbusiness_event', $args);
}
add_action('init', 'wpbusiness_register_event_post_type');

// Функция создания события
function wpbusiness_create_event($title, $content, $start_date, $end_date) {
    $event_id = wp_insert_post(array(
        'post_type'   => 'wpbusiness_event',
        'post_title'  => $title,
        'post_content' => $content,
        'post_status' => 'publish',
    ));

    if ($event_id) {
        update_post_meta($event_id, 'start_date', $start_date);
        update_post_meta($event_id, 'end_date', $end_date);
    }
    return $event_id;
}

// Пример использования
$event_id = wpbusiness_create_event(
    'Вебинар по SEO',
    'Подробный вебинар о продвижении сайта',
    '2024-07-01 10:00:00',
    '2024-07-01 12:00:00'
);

Таким образом вы можете программно создавать события и задавать для них даты начала и окончания. Чтобы обновить событие, достаточно использовать функцию wp_update_post и update_post_meta.

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

Для поддержания актуальности календаря удобно автоматически удалять или менять статус событий после их окончания. Вот пример функции, которую можно запускать через Cron и которая меняет статус прошедших событий на «архив».

function wpbusiness_archive_past_events() {
    $today = date('Y-m-d H:i:s');
    $args = array(
        'post_type' => 'wpbusiness_event',
        'posts_per_page' => -1,
        'meta_query' => array(
            array(
                'key' => 'end_date',
                'value' => $today,
                'compare' => '<',
                'type' => 'DATETIME',
            ),
        ),
        'post_status' => 'publish',
    );

    $query = new WP_Query($args);

    if ($query->have_posts()) {
        while ($query->have_posts()) {
            $query->the_post();
            wp_update_post(array(
                'ID' => get_the_ID(),
                'post_status' => 'draft', // или 'private' для скрытия
            ));
        }
    }
    wp_reset_postdata();
}

// Добавьте в wp_cron для регулярного запуска
add_action('wpbusiness_daily_event_archive', 'wpbusiness_archive_past_events');
// Для теста можно вызвать напрямую
// wpbusiness_archive_past_events();

Для активации этого крона можно использовать:

if (!wp_next_scheduled('wpbusiness_daily_event_archive')) {
    wp_schedule_event(time(), 'daily', 'wpbusiness_daily_event_archive');
}

Интеграция с внешними календарями и CRM

Если ваши мероприятия хранятся в Google Calendar или CRM, можно автоматизировать импорт событий через REST API. Например, плагин WP Event Manager поддерживает REST API, с помощью которого можно написать скрипт импорта.

Пример импорта событий из Google Calendar можно сделать через PHP и Google API Client. Основные шаги:

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

Советы по улучшению UX календаря

Чтобы пользователи легко ориентировались в календаре, добавьте:

Для этих целей удобно использовать готовые решения из тем Reboot или Root, которые уже оптимизированы под бизнес-сайты и поддерживают расширения календарей.

Как автоматизировать удаление старых черновиков в WordPress: практическое руководство с примерами кода
19.03.2026
Как создать динамические таблицы в WordPress с помощью шорткодов
29.11.2025
Как реализовать автоматическое создание контентных блоков в WordPress для бизнес-сайтов
14.04.2026
Как отладить проблемы со загрузкой изображений в WordPress: практическое руководство
19.01.2026
Как использовать WP-Cron для автоматического удаления старых отзывов WooCommerce
27.05.2026
×
WPShop
партнерка без «но»!

До 3225₽ за каждую продажу

Подключиться к игре