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

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

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

Ручное добавление и обновление событий занимает много времени и чревато ошибками. Автоматизация позволяет:

  • Сократить время на управление событиями.
  • Обеспечить актуальность данных.
  • Сделать вывод событий удобным и интерактивным для посетителей.
Автоматический календарь можно связать с внешними источниками, импортировать события из файла, или создавать их динамически из пользовательских записей.

Выбор подходящего плагина для календаря

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

1. The Events Calendar

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

Для автоматического импорта можно использовать его дополнения или REST API.

2. Event Organiser

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

3. My Calendar

Простой в использовании, с возможностями импорта и экспорта событий, гибкой настройкой отображения и виджетами для размещения на сайте.

Автоматическое создание событий с помощью кода

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

<?php
// Регистрируем кастомный тип записи для событий
function wpfreecourses_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' => 'В корзине мероприятий не найдено',
        'menu_name'          => 'Мероприятия'
    );
    $args = array(
        'labels'             => $labels,
        'public'             => true,
        'has_archive'        => true,
        'supports'           => array('title', 'editor', 'custom-fields'),
        'menu_icon'          => 'dashicons-calendar-alt',
    );
    register_post_type('wpfreecourses_event', $args);
}
add_action('init', 'wpfreecourses_register_event_post_type');

// Функция для автоматического создания события
function wpfreecourses_create_event($title, $description, $date) {
    $new_event = array(
        'post_title'    => $title,
        'post_content'  => $description,
        'post_status'   => 'publish',
        'post_type'     => 'wpfreecourses_event'
    );
    $post_id = wp_insert_post($new_event);
    if(!is_wp_error($post_id)) {
        update_post_meta($post_id, 'event_date', $date);
    }
    return $post_id;
}
// Пример создания события
wpfreecourses_create_event('Вебинар по WordPress', 'Подробный разбор автоматизации в WP', '2024-07-15');
?>

Отображение календаря с событиями

Чтобы вывести календарь с событиями, можно использовать JavaScript-библиотеки, например FullCalendar, и подтягивать события через REST API WordPress.

Пример запроса событий через WP REST API:

fetch('/wp-json/wp/v2/wpfreecourses_event?per_page=100')
    .then(response => response.json())
    .then(events => {
        // Логика отображения событий в календаре
        console.log(events);
    });

Импорт событий из CSV для автоматизации наполнения

Если у вас есть список событий в CSV, можно автоматизировать импорт с помощью WP CLI или плагинов.

Пример простого импорта из CSV с помощью PHP:

function wpfreecourses_import_events_from_csv($file_path) {
    if (!file_exists($file_path)) return;
    $handle = fopen($file_path, 'r');
    while (($data = fgetcsv($handle, 1000, ',')) !== FALSE) {
        $title = sanitize_text_field($data[0]);
        $description = sanitize_textarea_field($data[1]);
        $date = sanitize_text_field($data[2]);
        wpfreecourses_create_event($title, $description, $date);
    }
    fclose($handle);
}
// Вызов функции с путем к CSV
// wpfreecourses_import_events_from_csv(__DIR__ . '/events.csv');

Использование плагина Clearfy Pro для оптимизации календаря

Если вы используете сложные решения и хотите повысить производительность, обратите внимание на Clearfy Pro. Он помогает отключать ненужные скрипты и стили, оптимизировать запросы к базе, что улучшит работу вашего календаря.

Советы по улучшению пользовательского опыта календаря

Для удобства посетителей и администраторов стоит сделать:

  • Фильтры по датам и категориям событий.
  • Интеграцию с почтовыми уведомлениями о предстоящих событиях.
  • Отображение событий в разных форматах: список, сетка, классический календарь.
  • Адаптивность для мобильных устройств.

Например, добавить пользовательский фильтр можно так:

add_action('pre_get_posts', 'wpfreecourses_filter_events_by_date');
function wpfreecourses_filter_events_by_date($query) {
    if (!is_admin() && $query->is_main_query() && is_post_type_archive('wpfreecourses_event')) {
        $meta_query = array(
            array(
                'key'     => 'event_date',
                'value'   => date('Y-m-d'),
                'compare' => '>=',
                'type'    => 'DATE'
            )
        );
        $query->set('meta_query', $meta_query);
        $query->set('orderby', 'meta_value');
        $query->set('meta_key', 'event_date');
        $query->set('order', 'ASC');
    }
}
Как автоматизировать обновление контента в WordPress
11.01.2026
Как удалить все метаданные из изображений WordPress
05.12.2025
WooCommerce: как автоматически создавать купоны при оформлении заказа
19.06.2026
Как защитить WordPress от bruteforce-атак с помощью плагинов и кода
22.02.2026
Как создать автоматическое отображение отзывов в WordPress
17.12.2025