Автоматизация процесса обработки тикетов — важный элемент эффективного управления службой поддержки на сайте WordPress. В этой статье мы подробно разберём, как можно организовать автоматическое присвоение статусов, отправку уведомлений и другие задачи по управлению тикетами с помощью кода и плагинов.
Почему важно автоматизировать обработку тикетов в WordPress
Ручная обработка обращений пользователей часто приводит к задержкам и ошибкам. Автоматизация позволяет:
- Сократить время реакции на запросы.
- Уменьшить нагрузку на сотрудников поддержки.
- Обеспечить последовательность и прозрачность процесса.
- Улучшить контроль и отчётность.
Рассмотрим конкретные примеры автоматизации на базе пользовательских типов записей (Custom Post Type) для тикетов и хуков WordPress.
Создание пользовательского статуса тикета и автоматическое его обновление
Для начала создадим дополнительный статус для тикетов — например, "В работе". Это позволит явно понимать, на каком этапе находится запрос клиента.
Добавим статус с помощью фильтра register_post_status и зарегистрируем его для типа записи тикета:
function wpticket_register_ticket_status() {
register_post_status('in_progress', array(
'label' => 'В работе',
'public' => true,
'exclude_from_search' => false,
'show_in_admin_all_list' => true,
'show_in_admin_status_list' => true,
'label_count' => _n_noop('В работе <span class="count">(%s)</span>', 'В работе <span class="count">(%s)</span>'),
));
}
add_action('init', 'wpticket_register_ticket_status');
function wpticket_add_ticket_status_to_post_type($post_types) {
$post_types[] = 'ticket'; // замените 'ticket' на ваш CPT
return $post_types;
}
add_filter('display_post_states', function($states, $post) {
if ('ticket' === $post->post_type && 'in_progress' === get_post_status($post->ID)) {
$states[] = 'В работе';
}
return $states;
}, 10, 2);Теперь реализуем функцию, которая автоматически меняет статус тикета на "В работе" при назначении сотрудника поддержки:
function wpticket_auto_set_status_on_assign($post_id, $post, $update) {
if ('ticket' !== $post->post_type) return;
// Проверяем, назначен ли агент поддержки (например, через мета поле 'assigned_agent')
$assigned_agent = get_post_meta($post_id, 'assigned_agent', true);
if ($assigned_agent && get_post_status($post_id) !== 'in_progress') {
wp_update_post(array(
'ID' => $post_id,
'post_status' => 'in_progress'
));
}
}
add_action('save_post', 'wpticket_auto_set_status_on_assign', 10, 3);Автоматические email-уведомления при изменении статусов
Чтобы клиенты и сотрудники всегда были в курсе статуса тикета, можно отправлять уведомления по электронной почте при смене статуса.
Пример функции, которая отправляет письмо при переходе тикета в статус "В работе":
function wpticket_send_email_on_status_change($new_status, $old_status, $post) {
if ('ticket' !== $post->post_type) return;
if ($new_status === 'in_progress' && $old_status !== 'in_progress') {
$user_email = get_post_meta($post->ID, 'client_email', true);
if ($user_email) {
$subject = 'Ваш тикет принят в обработку';
$message = 'Здравствуйте! Ваш запрос с ID ' . $post->ID . ' сейчас в работе. Мы свяжемся с вами в ближайшее время.';
wp_mail($user_email, $subject, $message);
}
}
}
add_action('transition_post_status', 'wpticket_send_email_on_status_change', 10, 3);Использование плагина Clearfy Pro для оптимизации процессов
Плагин Clearfy Pro поможет убрать лишние запросы и оптимизировать работу сайта, что особенно важно при большом количестве тикетов и запросов. Его возможности по управлению скриптами и оптимизации баз данных помогут улучшить производительность службы поддержки.
Интеграция с плагином WPRemark для управления комментариями к тикетам
Если вы используете комментарии для общения внутри тикета, плагин WPRemark позволит улучшить интерфейс и добавить функции, например, уведомления о новых комментариях, фильтрацию и сортировку.
Автоматическое добавление вложений к тикетам
Часто клиенты прикрепляют файлы к тикетам. Для удобства можно автоматически связывать загруженные файлы с тикетом, используя метаданные и WP функции.
Пример функции, которая добавляет загруженный файл к тикету при создании:
function wpticket_attach_uploaded_files_to_ticket($post_id) {
if ('ticket' !== get_post_type($post_id)) return;
if (!empty($_FILES['ticket_attachment']['name'][0])) {
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_attachment'];
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);
$attach_id = media_handle_upload('upload_attachment', $post_id);
if (is_wp_error($attach_id)) {
error_log('Ошибка загрузки файла: ' . $attach_id->get_error_message());
}
}
}
}
}
add_action('save_post', 'wpticket_attach_uploaded_files_to_ticket');Важно в форме создания тикета добавить поле input type="file" name="ticket_attachment[]" multiple и обеспечить корректную обработку nonce и прав.
Отчёты и аналитика по тикетам: как автоматизировать сбор данных
Для контроля качества работы службы поддержки полезно собирать статистику по статусам тикетов, времени обработки и количеству обращений.
Пример простой функции для вывода количества тикетов в разных статусах:
function wpticket_get_ticket_counts_by_status() {
$statuses = array('publish', 'in_progress', 'closed');
$counts = array();
foreach ($statuses as $status) {
$counts[$status] = wp_count_posts('ticket')->$status;
}
return $counts;
}
// Использование
$counts = wpticket_get_ticket_counts_by_status();
echo '<pre>';
print_r($counts);
echo '</pre>';Для более продвинутой аналитики можно использовать плагины, такие как Expert Review, который позволяет создавать отчёты и собирать отзывы.
Заключение
Автоматизация обработки тикетов в WordPress — это комплексный процесс, который включает в себя создание пользовательских статусов, настройку уведомлений, работу с вложениями и аналитикой. Использование хуков и фильтров WordPress в сочетании с проверенными плагинами позволяет существенно ускорить и упростить работу службы поддержки, повысить качество обслуживания клиентов и снизить нагрузку на команду.