Для сайтов с мероприятиями, курсами или вебинарами календарь событий — ключевой элемент для удобства пользователей. В этой статье рассмотрим, как создать автоматический календарь мероприятий в 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');
}
}