WP Tickets: как использовать хук для добавления поля в форму создания тикета

Диагностика задачи: зачем добавлять кастомное поле в форму тикета

Стандартная форма создания тикета в WP Tickets часто не покрывает все требования конкретного бизнеса. Например, нужно собрать дополнительную информацию от пользователя, такую как номер заказа, тип проблемы или предпочтительный способ связи. Добавление собственного поля повысит качество обработки обращений и скорость решения проблем.

Выбор подходящего хука для расширения формы

WP Tickets позволяет расширять форму создания тикета через фильтр wptickets_ticket_form_fields. Этот фильтр возвращает массив полей формы, который можно модифицировать, добавляя новые элементы.

Пример добавления текстового поля "Номер заказа"

add_filter('wptickets_ticket_form_fields', 'add_custom_order_number_field', 10, 1); function add_custom_order_number_field($fields) {     $fields['order_number'] = array(         'label' => 'Номер заказа',         'type' => 'text',         'required' => false,         'priority' => 20,     );     return $fields; }

Этот код добавит дополнительное поле с меткой «Номер заказа» в форму. Параметр priority задает порядок вывода поля.

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

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

add_action('wptickets_ticket_save', 'save_order_number_field', 10, 2); function save_order_number_field($ticket_id, $data) {     if (!empty($data['order_number'])) {         update_post_meta($ticket_id, '_order_number', sanitize_text_field($data['order_number']));     } else {         delete_post_meta($ticket_id, '_order_number');     } }

В массиве $data содержатся все поля из формы, включая новое.

Отображение кастомного поля в админке WP Tickets

Чтобы видеть значение дополнительного поля при просмотре тикета в админке, используйте хук wptickets_ticket_custom_fields_display:

add_filter('wptickets_ticket_custom_fields_display', 'display_order_number_admin', 10, 2); function display_order_number_admin($custom_fields, $ticket_id) {     $order_number = get_post_meta($ticket_id, '_order_number', true);     if ($order_number) {         $custom_fields['order_number'] = array(             'label' => 'Номер заказа',             'value' => esc_html($order_number),         );     }     return $custom_fields; }

Проверка результата после внедрения

  • Перейдите на страницу создания нового тикета на фронтенде сайта — проверьте, что поле «Номер заказа» отображается и принимает ввод.
  • Создайте тикет, заполнив это поле.
  • В админке откройте созданный тикет и убедитесь, что значение поля отображается в блоке с пользовательскими полями.
  • Проверьте, что при редактировании тикета поле также доступно для изменения.

Частые ошибки и их устранение

  • Поле не отображается в форме: проверьте правильность названия фильтра wptickets_ticket_form_fields и приоритет добавления функции. Убедитесь, что код подключен в functions.php или в кастомном плагине.
  • Данные не сохраняются: убедитесь, что в функции сохранения вы используете корректный хук wptickets_ticket_save и правильно обрабатываете массив $data. Проверьте, что ключ поля совпадает с названием в форме.
  • Код вызывает ошибки PHP: проверьте синтаксис, отсутствие опечаток и конфликтов с другими плагинами.

Практические советы по безопасности и производительности

  • Санитизация данных: всегда очищайте пользовательский ввод функцией sanitize_text_field() или аналогичными, прежде чем сохранять в базу.
  • Правильное подключение кода: добавляйте код в дочернюю тему или отдельный плагин, чтобы избежать потери при обновлениях WP Tickets.
  • Минимизация нагрузки: не перегружайте форму избыточным количеством полей, чтобы не ухудшать UX и не увеличивать время загрузки.

Сравнение подходов: плагин vs кастомный код

ПодходПреимуществаНедостатки
Использование плагина для кастомных полейБыстрая настройка без кода, визуальный интерфейсЧаще всего не интегрируется напрямую с WP Tickets, может создавать избыточность и конфликты
Добавление поля через код (хуки WP Tickets)Глубокая интеграция, гибкость, лёгкость поддержки, точечное изменениеТребует базовых знаний PHP и WP API, немного времени на разработку
Как создать автоприкрепление файлов к тикетам в WPtickets
03.01.2026
Как добавить Privacy Policy и Terms в форму тикета WPtickets для соответствия требованиям
03.05.2026
Как создать автоматические ответы в WPtickets для ускоренной поддержки
21.01.2026
Как использовать шорткод WooCommerce для отображения статуса заказов на странице пользователя
01.07.2026
Создание распределения тикетов по агентам в WPtickets для WordPress
20.03.2026