Как создать пользовательские свойства для тикетов в WordPress с WPtickets

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

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

Стандартные поля тикетов в WPtickets включают заголовок, описание, статус, приоритет и категорию. Однако задачи поддержки зачастую требуют более тонкой настройки. Например, можно добавить поле «Источник обращения» (телефон, email, соцсети), «Тип продукта», к которому относится тикет, или «Срочность» с дополнительными параметрами.

Пользовательские свойства облегчают:

  • Фильтрацию и сортировку тикетов для операторов.
  • Автоматическое распределение по специалистам.
  • Создание отчетов с новыми метриками.
  • Интеграцию с внешними системами на основе уникальных данных.

WPtickets не имеет встроенного графического интерфейса для добавления кастомных полей. Поэтому на помощь приходит собственный код на PHP с использованием хуков WordPress и WPtickets.

Добавление пользовательских свойств: подготовка и выбор типа данных

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

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

  1. Источник обращения — список с вариантами: Email, Телефон, Соцсети.
  2. Номер заказа — текстовое поле для ввода номера заказа, связанного с тикетом.

Также нужно определить, где показывать эти поля — на форме создания тикета, в админке и в письмах.

Реализация: добавляем поля к форме создания тикета

Для вывода дополнительных полей используем хук 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 для расширения форм, сохранения и отображения данных. Продумывайте типы полей и автоматизацию на базе этих данных для повышения эффективности работы.

Не забывайте тестировать изменения в безопасной среде и делать резервные копии сайта.

Как создать автоматический экспорт тикетов из WPtickets в CSV
30.04.2026
Как использовать хуки для передачи данных между виджетами в WordPress
05.12.2025
Автоматическое расширение функционала WPtickets через хуки: настройка и примеры
15.05.2026
Отладка ошибок оплаты и обновление статуса заказов в WooCommerce
24.06.2026
Как использовать WooCommerce для продажи подписок и автоплатежей в WordPress
04.07.2026