Автоматизация уведомлений — важная задача для сайтов на WordPress, особенно если нужно интегрироваться с внешними сервисами: CRM, мессенджерами, системами аналитики или другими приложениями. В этой статье разберём, как создать собственные webhook-уведомления в WordPress, чтобы автоматически отправлять данные при различных событиях.
Что такое webhook и зачем он нужен в WordPress
Webhook — это механизм, который позволяет автоматически отправлять HTTP-запросы на заданный URL при наступлении определённого события. В WordPress webhook можно использовать для:
- уведомления внешних сервисов о создании или обновлении постов;
- информирования CRM о новых пользователях или заказах;
- отправки сигналов в мессенджеры (Telegram, Slack и др.);
- синхронизации данных с внешними базами;
- автоматизации других бизнес-процессов.
Webhook работает по принципу push-уведомлений, когда WordPress сам инициирует запрос, а не ждёт опроса.
Настройка собственного webhook в WordPress: создание функции и хука
Для начала создадим функцию, которая будет отправлять POST-запрос на внешний URL с нужными данными. Воспользуемся встроенной функцией wp_remote_post. Пример кода:
function wpgenerate_send_webhook_notification($post_id) {
// Проверяем, чтобы это был нужный тип записи и не автосохранение
if (wp_is_post_autosave($post_id) || wp_is_post_revision($post_id)) {
return;
}
$post = get_post($post_id);
if ($post->post_type !== 'post') {
return;
}
$webhook_url = 'https://example.com/webhook'; // сюда вставьте свой URL
$body = [
'post_id' => $post_id,
'title' => $post->post_title,
'url' => get_permalink($post_id),
'date' => $post->post_date,
];
$response = wp_remote_post($webhook_url, [
'headers' => [
'Content-Type' => 'application/json',
],
'body' => json_encode($body),
'timeout' => 15,
]);
if (is_wp_error($response)) {
error_log('WPGENERATE webhook error: ' . $response->get_error_message());
}
}
add_action('save_post', 'wpgenerate_send_webhook_notification');Здесь мы создали функцию wpgenerate_send_webhook_notification, которая срабатывает при сохранении поста и отправляет JSON с данными на внешний URL. Используйте свой URL вместо https://example.com/webhook.
Детали реализации
Важно фильтровать автосохранения и ревизии, чтобы не создавать лишних запросов. Также лучше ограничить типы записей, для которых отправляется уведомление.
Если нужно уведомлять о других событиях, например, когда пользователь регистрируется или создаётся заказ, можно использовать другие хуки — user_register, woocommerce_order_status_completed и т.п.
Пример webhook для уведомления в Telegram при публикации поста
Рассмотрим пример интеграции с Telegram-ботом через webhook. Для этого понадобится токен бота и chat_id, куда отправлять сообщение.
Добавим функцию, которая отправляет POST-запрос в Telegram API:
function wpgenerate_send_telegram_notification($post_id) {
if (wp_is_post_autosave($post_id) || wp_is_post_revision($post_id)) {
return;
}
$post = get_post($post_id);
if ($post->post_status !== 'publish') {
return; // уведомляем только о публикациях
}
$token = 'YOUR_BOT_TOKEN';
$chat_id = 'YOUR_CHAT_ID';
$message = 'Опубликована новая статья: ' . $post->post_title . '\n' . get_permalink($post_id);
$url = 'https://api.telegram.org/bot' . $token . '/sendMessage';
$response = wp_remote_post($url, [
'body' => [
'chat_id' => $chat_id,
'text' => $message,
'parse_mode' => 'HTML',
],
'timeout' => 15,
]);
if (is_wp_error($response)) {
error_log('WPGENERATE Telegram webhook error: ' . $response->get_error_message());
}
}
add_action('publish_post', 'wpgenerate_send_telegram_notification');Таким образом, при публикации поста в Telegram будет отправлено уведомление с заголовком и ссылкой.
Как использовать плагины для webhook в WordPress
Если не хочется писать код, можно воспользоваться плагинами для управления webhook:
- WP Webhooks — мощный плагин, который позволяет настроить как прием, так и отправку webhook с множеством фильтров и условий.
- Uncanny Automator — инструмент для автоматизации задач, поддерживает интеграцию с webhook и множеством сервисов.
- Clearfy Pro — улучшает производительность и безопасность сайта, в том числе предлагает дополнительные инструменты для оптимизации и интеграции, включая возможности webhook.
Использование плагинов удобно для сложных цепочек событий и когда нужно без кода управлять логикой отправки уведомлений.
Пример настройки WP Webhooks для отправки уведомлений
В WP Webhooks можно настроить событие «Создание поста», задать URL webhook и передаваемые данные. В интерфейсе можно указать заголовки, тело запроса и формат (JSON, form-data).
После настройки достаточно активировать вебхук, и при сохранении поста запрос будет автоматически отправляться.
Рекомендации по безопасности и производительности webhook
При использовании webhook важно учитывать следующие моменты:
- Добавляйте проверку nonce или подписи, если это возможно, чтобы защитить webhook от подделки.
- Используйте асинхронные запросы или очереди задач (через wp_cron или внешние сервисы), чтобы не замедлять загрузку сайта.
- Логируйте ошибки, чтобы отслеживать проблемы с доставкой уведомлений.
- Ограничивайте права доступа и внимательно выбирайте события для отправки webhook, чтобы не создавать лишнюю нагрузку.
Заключение
Создание автоматических уведомлений в WordPress через webhook — мощный инструмент для интеграции сайта с внешними системами. Вы можете написать собственный код, как показано в примерах, или использовать готовые плагины. Главное — грамотно настроить события, данные и обеспечить безопасность.
Если хотите расширить функциональность сайта без усложнения кода, обратите внимание на Clearfy Pro — этот плагин поможет оптимизировать и обезопасить работу webhook и других функций.