В современных службах поддержки и сервисах обратной связи на WordPress автоматизация обработки тикетов значительно повышает эффективность работы команды и улучшает опыт пользователей. В этой статье мы подробно рассмотрим, как можно автоматизировать расширенную обработку тикетов в WordPress, используя кастомные решения и популярные плагины, а также приведем примеры кода для реализации.
Что такое расширенная обработка тикетов и зачем она нужна
Расширенная обработка тикетов — это не просто получение и ответ на запрос пользователя, а комплекс действий, включающий:
- Автоматическую классификацию тикетов по категориям и приоритетам;
- Назначение ответственных сотрудников;
- Интеграцию с внешними сервисами (например, CRM или почтовыми рассылками);
- Автоматическое уведомление клиентов и сотрудников;
- Контроль SLA и сроков обработки;
- Сбор статистики и отчетов.
Реализация такой системы в WordPress требует понимания как внутреннего устройства CMS, так и навыков работы с PHP и JavaScript.
Использование плагинов для автоматизации обработки тикетов
WP Support Ticket и его расширения
Плагин WP Support Ticket позволяет создать простую систему тикетов на сайте. Для расширения функционала стоит использовать:
- Auto Assign — автоматическое назначение исполнителей по категории тикета;
- Priority Manager — управление приоритетами;
- Notifications Pro — кастомные уведомления для клиентов и сотрудников.
Эти расширения интегрируются с WP Support Ticket, упрощая автоматизацию без глубоких знаний программирования.
Clearfy Pro для оптимизации и автоматизации
Плагин Clearfy Pro помогает оптимизировать работу сайта и может использоваться для отключения лишних скриптов в административной части, что ускоряет обработку тикетов и снижает нагрузку.
Как реализовать автоматическое назначение исполнителя тикета на примере кода
Для примера реализуем функцию автоматического назначения ответственного сотрудника в зависимости от категории тикета. Предположим, что категории задаются мета-полем ticket_category, а исполнители — пользователи с ролью support_agent.
function wpticket_assign_support_agent($ticket_id) {
$category = get_post_meta($ticket_id, 'ticket_category', true);
$agents = get_users(array(
'role' => 'support_agent',
'meta_key' => 'specialization',
'meta_value' => $category
));
if (!empty($agents)) {
// Назначаем первого агента из списка
update_post_meta($ticket_id, 'assigned_agent', $agents[0]->ID);
}
}
add_action('save_post_ticket', 'wpticket_assign_support_agent', 10, 1);
В этом примере при сохранении тикета вызывается функция, которая смотрит категорию тикета и назначает первого агента, который специализируется на этой категории.
Автоматические уведомления о статусе тикета
Уведомления можно реализовать с помощью хука изменения статуса записи. Пример отправки письма клиенту при изменении статуса тикета:
function wpticket_notify_client_on_status_change($post_ID, $post_after, $post_before) {
if ($post_after->post_type != 'ticket') return;
$old_status = get_post_meta($post_ID, 'ticket_status', true);
$new_status = $_POST['ticket_status'] ?? '';
if ($new_status && $new_status !== $old_status) {
$client_email = get_post_meta($post_ID, 'client_email', true);
wp_mail($client_email, 'Статус вашего тикета изменен', 'Статус вашего тикета теперь: ' . esc_html($new_status));
update_post_meta($post_ID, 'ticket_status', $new_status);
}
}
add_action('post_updated', 'wpticket_notify_client_on_status_change', 10, 3);
Этот код отслеживает изменение статуса и отправляет уведомление клиенту. Для более удобного управления можно использовать плагин WP Support Ticket с модулем уведомлений.
Интеграция с CRM и внешними сервисами
Для автоматизации важно связать тикет-систему с CRM, например, Bitrix24, AmoCRM или другими. Это можно сделать через REST API. В WordPress удобно использовать wp_remote_post() для отправки данных.
function wpticket_send_ticket_to_crm($ticket_id) {
$ticket = get_post($ticket_id);
$client_email = get_post_meta($ticket_id, 'client_email', true);
$message = $ticket->post_content;
$response = wp_remote_post('https://crm.example.com/api/tickets', array(
'body' => json_encode(array(
'email' => $client_email,
'message' => $message
)),
'headers' => array('Content-Type' => 'application/json'),
));
if (is_wp_error($response)) {
error_log('Ошибка отправки тикета в CRM: ' . $response->get_error_message());
}
}
add_action('save_post_ticket', 'wpticket_send_ticket_to_crm', 20, 1);
Такой подход позволит автоматически создавать сделки или обращения в CRM при создании тикета.
Обработка вложений и автоматическое сохранение файлов
Для расширенной обработки тикетов важна работа с вложениями. Рассмотрим пример автоматического сохранения прикрепленных файлов в медиатеку WordPress и привязки их к тикету.
function wpticket_handle_attachments($ticket_id) {
if (empty($_FILES['ticket_attachments'])) return;
require_once(ABSPATH . 'wp-admin/includes/file.php');
require_once(ABSPATH . 'wp-admin/includes/media.php');
require_once(ABSPATH . 'wp-admin/includes/image.php');
$files = $_FILES['ticket_attachments'];
foreach ($files['name'] as $key => $value) {
if ($files['error'][$key] == 0) {
$file = array(
'name' => $files['name'][$key],
'type' => $files['type'][$key],
'tmp_name' => $files['tmp_name'][$key],
'error' => $files['error'][$key],
'size' => $files['size'][$key]
);
$_FILES = array('upload_attachment' => $file);
$attachment_id = media_handle_upload('upload_attachment', $ticket_id);
if (!is_wp_error($attachment_id)) {
add_post_meta($ticket_id, 'ticket_attachment', $attachment_id);
}
}
}
}
add_action('save_post_ticket', 'wpticket_handle_attachments');
Данный код позволяет загружать несколько файлов с формы тикета, автоматически добавлять их в медиатеку и сохранять связь с тикетом.
Вывод статистики и отчетов для поддержки
Для контроля работы службы поддержки полезно выводить отчеты по количеству тикетов, времени обработки и другим метрикам. Это можно сделать с помощью кастомных запросов к базе данных WordPress.
function wpticket_get_tickets_stats() {
global $wpdb;
$total = $wpdb->get_var("SELECT COUNT(*) FROM {$wpdb->posts} WHERE post_type = 'ticket'");
$open = $wpdb->get_var("SELECT COUNT(*) FROM {$wpdb->posts} p
JOIN {$wpdb->postmeta} pm ON p.ID = pm.post_id
WHERE p.post_type = 'ticket' AND pm.meta_key = 'ticket_status' AND pm.meta_value = 'open'");
return array('total' => $total, 'open' => $open);
}
Эти данные можно вывести на отдельной странице в админке или в виде виджета.
Итоги
Автоматизация расширенной обработки тикетов в WordPress — задача комплексная, включающая в себя настройку плагинов, написание кастомных функций и интеграцию с внешними сервисами. Используя приведенные в статье примеры и рекомендации, вы сможете существенно упростить и ускорить работу службы поддержки на вашем сайте.
Для готовых решений рекомендуем ознакомиться с плагином WP Support Ticket и его расширениями на WPSHOP.ru – они помогут быстро запустить полноценную систему тикетов с возможностями автоматизации.