В системах поддержки клиентов, построенных на WordPress с использованием плагина WPtickets, часто возникает необходимость добавить уникальные поля или свойства к тикетам. Это помогает точнее классифицировать запросы, автоматизировать обработку и улучшать аналитику. В этой статье разберем, как расширить стандартную функциональность WPtickets, создав собственные свойства тикетов с помощью кастомного кода и практических примеров.
Почему нужны пользовательские свойства для тикетов
Стандартные поля тикетов в WPtickets включают заголовок, описание, статус, приоритет и категорию. Однако задачи поддержки зачастую требуют более тонкой настройки. Например, можно добавить поле «Источник обращения» (телефон, email, соцсети), «Тип продукта», к которому относится тикет, или «Срочность» с дополнительными параметрами.
Пользовательские свойства облегчают:
- Фильтрацию и сортировку тикетов для операторов.
- Автоматическое распределение по специалистам.
- Создание отчетов с новыми метриками.
- Интеграцию с внешними системами на основе уникальных данных.
WPtickets не имеет встроенного графического интерфейса для добавления кастомных полей. Поэтому на помощь приходит собственный код на PHP с использованием хуков WordPress и WPtickets.
Добавление пользовательских свойств: подготовка и выбор типа данных
Перед реализацией важно определить тип поля: текст, выбор из списка, число, дата, флаг и т.д. Это влияет на удобство заполнения и последующую обработку данных.
Для примера реализуем два свойства:
- Источник обращения — список с вариантами: Email, Телефон, Соцсети.
- Номер заказа — текстовое поле для ввода номера заказа, связанного с тикетом.
Также нужно определить, где показывать эти поля — на форме создания тикета, в админке и в письмах.
Реализация: добавляем поля к форме создания тикета
Для вывода дополнительных полей используем хук wptickets_ticket_form_after, который позволяет вставить свой HTML после стандартной формы.
function wpticketsru_add_custom_fields_to_ticket_form() {
?>
<p>
<label for="wpticketsru_source">Источник обращения:</label><br>
<select name="wpticketsru_source" id="wpticketsru_source" required>
<option value="">Выберите источник</option>
<option value="email">Email</option>
<option value="phone">Телефон</option>
<option value="social">Соцсети</option>
</select>
</p>
<p>
<label for="wpticketsru_order_number">Номер заказа:</label><br>
<input type="text" name="wpticketsru_order_number" id="wpticketsru_order_number" maxlength="30" />
</p>
<?php
}
add_action('wptickets_ticket_form_after', 'wpticketsru_add_custom_fields_to_ticket_form');
Этот код добавит два поля на пользовательскую форму подачи тикета.
Обработка и сохранение пользовательских свойств
После отправки формы нужно обработать и записать новые данные в метаданные тикета. Для этого используем фильтр wptickets_save_ticket, который вызывается при сохранении тикета.
function wpticketsru_save_custom_fields($ticket_id, $data) {
if (isset($_POST['wpticketsru_source']) && !empty($_POST['wpticketsru_source'])) {
update_post_meta($ticket_id, 'wpticketsru_source', sanitize_text_field($_POST['wpticketsru_source']));
}
if (isset($_POST['wpticketsru_order_number'])) {
update_post_meta($ticket_id, 'wpticketsru_order_number', sanitize_text_field($_POST['wpticketsru_order_number']));
}
}
add_action('wptickets_save_ticket', 'wpticketsru_save_custom_fields', 10, 2);
Метаданные сохраняются в базу и будут связаны с конкретным тикетом.
Отображение пользовательских свойств в админке
Для удобства операторов важно видеть эти данные при просмотре тикета. Можно добавить блок с пользовательскими полями в метабоксе тикета.
function wpticketsru_show_custom_fields_in_admin($ticket) {
$source = get_post_meta($ticket->ID, 'wpticketsru_source', true);
$order_number = get_post_meta($ticket->ID, 'wpticketsru_order_number', true);
?>
<div style="margin-top:10px; padding:10px; border:1px solid #ddd; background:#f9f9f9;">
<strong>Источник обращения:</strong> <?php echo esc_html($source); ?><br>
<strong>Номер заказа:</strong> <?php echo esc_html($order_number); ?>
</div>
<?php
}
add_action('wptickets_ticket_meta_after', 'wpticketsru_show_custom_fields_in_admin');
Такое отображение поможет операторам быстро понять контекст обращения.
Использование пользовательских свойств для автоматизации
Сохранив пользовательские свойства, можно на их основе строить автоматические правила. Например, если источник обращения — «Соцсети», перенаправить тикет определенному менеджеру, или если номер заказа пуст, отправлять запрос на уточнение.
Для этого применим хук wptickets_ticket_assign для автоматического назначения:
function wpticketsru_auto_assign_by_source($ticket_id) {
$source = get_post_meta($ticket_id, 'wpticketsru_source', true);
if ($source === 'social') {
// Пример: назначаем пользователя с ID 5
wp_set_object_terms($ticket_id, 5, 'wptickets_assigned');
}
}
add_action('wptickets_ticket_assign', 'wpticketsru_auto_assign_by_source');
Также можно создавать фильтры и отчеты с пользовательскими полями, используя WP_Query и метазапросы.
Обзор плагинов для удобной работы с пользовательскими полями
Если хочется избежать ручного кодирования, можно использовать плагины для создания пользовательских полей, совместимые с WPtickets:
- Clearfy Pro — расширяет возможности метаполей и безопасности.
- Expert Review — для отзывов и пользовательских данных.
Однако для полной интеграции с WPtickets зачастую требуется кастомный код, описанный выше.
Выводы и рекомендации
Добавление пользовательских свойств к тикетам — мощный инструмент для адаптации системы поддержки под конкретные бизнес-процессы. Используйте хуки WPtickets для расширения форм, сохранения и отображения данных. Продумывайте типы полей и автоматизацию на базе этих данных для повышения эффективности работы.
Не забывайте тестировать изменения в безопасной среде и делать резервные копии сайта.