Если вы ведёте сайт на WordPress и предлагаете пользователям записываться на мероприятия, то автоматизация этой задачи значительно упростит вашу работу и улучшит опыт посетителей. В этой статье мы подробно разберём, как реализовать автоматическую систему записи на мероприятия, используя возможности WordPress и популярные плагины, а также рассмотрим примеры кода для кастомизации.
Почему стоит автоматизировать запись на мероприятия в WordPress
Ручной сбор заявок на участие в мероприятиях через обычные формы или комментарии требует постоянного внимания и может приводить к ошибкам в учёте заявок. Автоматизация позволяет:
- Сохранять данные участников в базе данных WordPress с возможностью последующего анализа.
- Отправлять автоматические уведомления участникам и организаторам.
- Интегрироваться с календарями и другими сервисами.
- Уменьшить количество ошибок и пропущенных заявок.
Теперь перейдём к конкретным решениям.
Использование плагина для событий и записи
Плагин The Events Calendar
Одним из самых популярных решений является The Events Calendar. Он позволяет создавать мероприятия с возможностью регистрации участников.
Для автоматической записи можно использовать дополнение Event Tickets, которое интегрируется с Events Calendar и добавляет функционал продажи билетов и регистрации.
После установки и активации этих плагинов, в админке появится возможность создавать новые события с опцией включения формы регистрации.
Настройка автоматических уведомлений
Для отправки автоматических писем участникам и организаторам можно воспользоваться плагином Clearfy Pro, который оптимизирует работу сайта и расширяет возможности уведомлений. Также можно подключить SMTP-плагины, например WP Mail SMTP, чтобы повысить надёжность доставки писем.
Пример кастомного кода для автоматической записи
Если вам нужно сделать более точечное решение без использования тяжелых плагинов, можно создать свой обработчик формы с записью участников в отдельную таблицу или метаполя кастомного типа записи.
Создание кастомного эндпоинта для записи на мероприятие
add_action('rest_api_init', function () {
register_rest_route('wpedu/v1', '/register_event', array(
'methods' => 'POST',
'callback' => 'wpedu_register_event_callback',
'permission_callback' => '__return_true',
));
});
function wpedu_register_event_callback($request) {
$params = $request->get_json_params();
$event_id = intval($params['event_id']);
$user_name = sanitize_text_field($params['user_name']);
$user_email = sanitize_email($params['user_email']);
if (empty($event_id) || empty($user_name) || empty($user_email)) {
return new WP_Error('missing_data', 'Необходимые данные не переданы', array('status' => 400));
}
// Проверяем существует ли событие
$event = get_post($event_id);
if (!$event || $event->post_type !== 'event') {
return new WP_Error('invalid_event', 'Мероприятие не найдено', array('status' => 404));
}
// Добавляем метаданные - запись участника
add_post_meta($event_id, 'wpedu_event_participant', array(
'name' => $user_name,
'email' => $user_email,
'registered_at' => current_time('mysql')
));
// Отправляем уведомление организатору
$admin_email = get_option('admin_email');
wp_mail($admin_email, 'Новая запись на мероприятие', "Пользователь $user_name ($user_email) записался на мероприятие '{$event->post_title}'.");
return array('success' => true, 'message' => 'Вы успешно записаны на мероприятие');
}
Данный код создаёт REST API эндпоинт /wpedu/v1/register_event, который принимает POST-запрос с параметрами event_id, user_name и user_email. После проверки данных происходит запись участника в метаполя мероприятия и отправка уведомления администратору.
Интеграция с формами Contact Form 7 и WPForms
Если вы используете популярные конструкторы форм, такие как Contact Form 7 или WPForms, можно расширить их функционал добавлением пользовательских хуков для автоматической записи участников.
Добавление записи из Contact Form 7
Пример кода для добавления записи после отправки формы:
add_action('wpcf7_mail_sent', 'wpedu_cf7_event_registration');
function wpedu_cf7_event_registration($contact_form) {
$submission = WPCF7_Submission::get_instance();
if (!$submission) return;
$data = $submission->get_posted_data();
if (isset($data['event_id'], $data['your-name'], $data['your-email'])) {
$event_id = intval($data['event_id']);
$user_name = sanitize_text_field($data['your-name']);
$user_email = sanitize_email($data['your-email']);
add_post_meta($event_id, 'wpedu_event_participant', array(
'name' => $user_name,
'email' => $user_email,
'registered_at' => current_time('mysql')
));
}
}
Этот код автоматически добавит запись участника в метаполя указанного мероприятия после успешной отправки формы.
Как удобнее работать с записями участников
Для удобного управления списком участников можно использовать кастомный тип записи или таксономию, либо же таблицы в базе данных. Если вы хотите быстро вывести список участников на странице мероприятия, можно использовать следующий код:
function wpedu_show_event_participants($event_id) {
$participants = get_post_meta($event_id, 'wpedu_event_participant');
if (empty($participants)) {
return '<p>Пока нет записей на мероприятие.</p>';
}
$output = '<ul>';
foreach ($participants as $participant) {
$output .= '<li>' . esc_html($participant['name']) . ' (' . esc_html($participant['email']) . '), записан: ' . esc_html($participant['registered_at']) . '</li>';
}
$output .= '</ul>';
return $output;
}
Выводите этот список в шаблоне мероприятия или с помощью шорткода по вашему желанию.
Заключение по теме автоматической записи на мероприятия
Автоматизация записи на мероприятия в WordPress — это не только удобство для организаторов, но и повышение лояльности пользователей. Используйте готовые плагины для быстрого старта, а при необходимости добавляйте кастомные решения с помощью REST API и хуков форм. Для расширения функционала рекомендуем обратить внимание на WPCommunity — плагин для создания сообщества с возможностью управления мероприятиями и участниками.