WooCommerce: как отправлять подробные данные о заказе в Slack при оформлении

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

Магазины на WooCommerce иногда требуют оперативного уведомления менеджеров в Slack с подробной информацией о новом заказе. Это ускоряет обработку, исключает необходимость постоянной проверки админки и помогает быстро реагировать на важные заказы.

Задача — автоматически отправлять в Slack не просто уведомление о новом заказе, а полный отчет с товарами, количеством, суммами, адресом доставки и контактами клиента.

Как подготовить интеграцию: создание Slack Incoming Webhook

Для начала необходимо создать Webhook в Slack:

  1. Войдите в ваш Slack Workspace и перейдите по адресу https://api.slack.com/apps
  2. Создайте новое приложение, выберите Workspace
  3. В разделе Incoming Webhooks активируйте их и создайте новый Webhook для нужного канала
  4. Скопируйте URL Webhook — он понадобится для отправки сообщений из WordPress

Пошаговое решение: добавляем отправку заказа в Slack через functions.php

Добавьте следующий код в файл functions.php вашей активной темы или в плагин для кастомных функций:

add_action('woocommerce_thankyou', 'send_order_details_to_slack', 10, 1);

function send_order_details_to_slack($order_id) {
    if (!$order_id) return;
    $order = wc_get_order($order_id);
    if (!$order) return;

    $webhook_url = 'https://hooks.slack.com/services/ВАШ/WEBHOOK/URL'; // Замените на ваш

    $items_text = '';
    foreach ($order->get_items() as $item) {
        $product = $item->get_product();
        $name = $product ? $product->get_name() : $item->get_name();
        $qty = $item->get_quantity();
        $total = $item->get_total();
        $items_text .= "• {$name} x {$qty} — " . wc_price($total) . "\n";
    }

    $shipping = $order->get_formatted_shipping_address();
    $billing_phone = $order->get_billing_phone();
    $billing_email = $order->get_billing_email();

    $message = "Новый заказ #{$order_id} \n" .
               "*Товары:*\n{$items_text}\n" .
               "*Общая сумма:* " . wc_price($order->get_total()) . "\n" .
               "*Адрес доставки:*\n{$shipping}\n" .
               "*Телефон:* {$billing_phone}\n" .
               "*Email:* {$billing_email}";

    $payload = json_encode(['text' => $message]);

    $args = [
        'body'        => $payload,
        'headers'     => ['Content-Type' => 'application/json'],
        'timeout'     => 5,
        'redirection' => 5,
        'blocking'    => true,
        'sslverify'   => false,
    ];

    $response = wp_safe_remote_post($webhook_url, $args);

    if (is_wp_error($response)) {
        error_log('Ошибка отправки заказа в Slack: ' . $response->get_error_message());
    }
}

Объяснение кода

  • Хук woocommerce_thankyou срабатывает после успешного оформления заказа.
  • Получаем объект заказа и формируем список товаров с ценами и количеством.
  • Добавляем адрес доставки и контакты клиента.
  • Формируем сообщение в формате Markdown для Slack.
  • Отправляем POST-запрос на Slack Webhook с JSON-данными.
  • Обрабатываем ошибки в логах WordPress.

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

  • Оформите тестовый заказ в вашем WooCommerce магазине.
  • Проверьте канал Slack — должно появиться сообщение с полной информацией о заказе.
  • Если сообщений нет, проверьте логи ошибок WordPress (файл debug.log при включенном WP_DEBUG_LOG).
  • Проверьте правильность URL Webhook и разрешения в Slack.

Частые ошибки и как их исправить

  • Неправильный URL Webhook: скопируйте URL заново, убедитесь, что нет лишних пробелов или символов.
  • SSL-ошибки при отправке запроса: если sslverify включен и сервер не может проверить сертификат — временно отключите проверку (как в коде), но лучше исправить сертификаты.
  • Отсутствие данных в сообщении: убедитесь, что заказ корректно создается и содержит товары, адрес и контакты.
  • Функция не срабатывает: проверьте, что хук добавлен в правильном месте и тема/плагин активны.

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

  • Используйте отдельный плагин для кастомного кода, чтобы не потерять изменения при обновлении темы.
  • Храните URL Webhook в wp-config.php или в настройках плагина, не в открытом коде.
  • Ограничьте права доступа к Slack Webhook, создавая отдельные каналы для уведомлений.
  • Для больших магазинов с высокой нагрузкой рассмотрите очередь отправки уведомлений через WP-Cron или внешние сервисы, чтобы не замедлять оформление заказа.

Сравнение вариантов реализации отправки уведомлений в Slack

СпособПлюсыМинусыПодходит для
Код в functions.phpБыстрая настройка, полный контроль над сообщениемТребует навыков кода, сложно масштабироватьМаленькие и средние магазины
Плагин Slack NotificationsГотовое решение, настройки через UIМеньше гибкости, возможны конфликтыПользователи без навыков программирования
Внешние сервисы (Zapier, Integromat)Автоматизация, интеграция с другими системамиПлатные, задержки в уведомленияхКрупные проекты с комплексным учетом
WordPress REST API: как использовать для создания подключений и интеграций
10.11.2025
Как создать собственный виджет в WordPress с применением PHP и хуков
17.11.2025
Как сделать автоматическое удаление старых черновиков в WordPress
02.03.2026
Как избежать конфликтов между плагинами в WordPress: практические методы и примеры кода
13.12.2025
Как избежать проблем с перенаправлениями в WordPress
13.01.2026