WPtickets — мощный плагин для организации системы поддержки клиентов в WordPress. Однако в базовой комплектации он не всегда покрывает все потребности, например, функцию подписки на обновления тикетов, когда несколько пользователей хотят получать уведомления о статусах или комментариях к одному тикету.
Почему нужна подписка на обновления тикетов
В крупных компаниях или проектах бывает, что несколько сотрудников отвечают за один и тот же вопрос. Чтобы все были в курсе изменений, удобно реализовать подписку, которая будет уведомлять подписчиков о новых комментариях, изменениях статуса или назначениях в тикете.
Без такой функции приходится пересылать уведомления вручную или использовать общие почтовые ящики, что снижает эффективность поддержки.
Рассмотрим, как добавить подписку на обновления тикетов в WPtickets с помощью кастомного кода и какие готовые решения помогут упростить задачу.
Реализация подписки с помощью кастомного кода
Создаем пользовательское поле "Подписчики"
Для хранения списка подписчиков тикета можно использовать мета-поле записи типа тикет. Добавим чекбоксы с пользователями, которые могут подписаться на обновления.
function wptickets_add_subscription_field() {
$ticket_id = get_the_ID();
$users = get_users(['role__in' => ['subscriber', 'editor', 'administrator']]);
$subscribers = get_post_meta($ticket_id, '_wptickets_subscribers', true);
if (!is_array($subscribers)) $subscribers = [];
echo '<h3>Подписаться на обновления тикета</h3>';
foreach ($users as $user) {
$checked = in_array($user->ID, $subscribers) ? 'checked' : '';
echo '<label><input type="checkbox" name="wptickets_subscribers[]" value="'.esc_attr($user->ID).'" '.$checked.'> '.esc_html($user->display_name).'</label><br>';
}
}
add_action('wptickets_ticket_meta_after', 'wptickets_add_subscription_field');Этот код добавляет в мета-блок тикета список пользователей с возможностью подписаться. Можно фильтровать пользователей по нужным ролям.
Сохраняем подписчиков при обновлении тикета
function wptickets_save_subscription_field($post_id) {
if (isset($_POST['wptickets_subscribers']) && is_array($_POST['wptickets_subscribers'])) {
$subscribers = array_map('intval', $_POST['wptickets_subscribers']);
update_post_meta($post_id, '_wptickets_subscribers', $subscribers);
} else {
delete_post_meta($post_id, '_wptickets_subscribers');
}
}
add_action('save_post_wpticket', 'wptickets_save_subscription_field');После сохранения тикета подписчики будут храниться в метаполе _wptickets_subscribers.
Отправка уведомлений подписчикам при обновлении тикета
Теперь нужно отправлять письма подписчикам, когда тикет обновляется или добавляется новый комментарий.
function wptickets_notify_subscribers($ticket_id) {
$subscribers = get_post_meta($ticket_id, '_wptickets_subscribers', true);
if (empty($subscribers) || !is_array($subscribers)) return;
$ticket = get_post($ticket_id);
$subject = 'Обновление тикета №' . $ticket_id . ': ' . $ticket->post_title;
$message = 'Тикет обновлен. Просмотреть: ' . get_permalink($ticket_id);
foreach ($subscribers as $user_id) {
$user = get_userdata($user_id);
if ($user && is_email($user->user_email)) {
wp_mail($user->user_email, $subject, $message);
}
}
}
add_action('wptickets_ticket_updated', 'wptickets_notify_subscribers');
add_action('comment_post', function($comment_id, $comment_approved, $commentdata) {
if ($comment_approved && $commentdata['comment_post_type'] === 'wpticket') {
wptickets_notify_subscribers($commentdata['comment_post_ID']);
}
}, 10, 3);Этот код слушает обновления тикета и комментарии к тикету, отправляя письма всем подписчикам.
Использование плагинов для расширения подписки
Если вы не хотите писать код, можно использовать готовые решения из репозитория WordPress или платные плагины:
- Subscribe to Comments Reloaded — позволяет подписываться на комментарии, которые можно адаптировать под тикеты.
- Better Notifications for WP — расширенный контроль уведомлений с возможностью создания кастомных шаблонов писем.
- WP User Frontend — обеспечивает форму с расширенными возможностями, включая подписку на обновления.
Для интеграции с WPtickets потребуется некоторая настройка, например, добавление триггеров, чтобы уведомления отправлялись при обновлении тикета.
Рекомендации по оптимизации подписки
Подписка может привести к большому количеству писем, особенно если тикет активно обсуждается. Чтобы не перегружать пользователей, можно:
- Добавить возможность выбора типа уведомлений (только статус, только комментарии, все изменения).
- Реализовать ежедневную сводку изменений вместо мгновенных писем.
- Добавить в письма ссылки для отписки или настройки подписки.
Это улучшит пользовательский опыт и снизит нагрузку на почтовый сервер.
Пример интеграции с плагином WPRemark для расширенной подписки
WPRemark позволяет расширять функционал комментариев и уведомлений. В связке с WPtickets можно использовать WPRemark для создания подписки с более гибкой логикой.
Например, можно создавать кастомные триггеры, чтобы подписчики получали уведомления с кастомным контентом или через разные каналы — email, Telegram и другие.
Подробнее про WPRemark и способы интеграции с WPtickets читайте на официальной странице плагина WPRemark.
Итоги и практические советы
Добавление подписки на обновления тикетов в WPtickets — важное улучшение для повышения эффективности поддержки клиентов. Это помогает лучше координировать работу команды и своевременно реагировать на изменения.
Самостоятельная реализация с кастомным кодом несложна и дает полную гибкость, а использование плагинов ускоряет процесс и добавляет дополнительные возможности.
Обязательно тестируйте уведомления, оптимизируйте частоту и содержание писем, чтобы не раздражать пользователей.
Если хотите автоматизировать больше процессов поддержки, рекомендуем ознакомиться с плагинами на WPSHOP.RU — там много полезных инструментов для WPtickets и других задач WordPress.