wppartner.ru wordpress WP Partner

WooCommerce: как настроить отправку SMS-уведомлений о статусах заказов

Почему важна отправка SMS-уведомлений о статусах заказов в WooCommerce

Для интернет-магазинов на WooCommerce оперативное информирование клиентов о статусе их заказов повышает лояльность и снижает количество обращений в службу поддержки. SMS-уведомления работают надежнее email, часто читаются быстрее и не попадают в спам. В статье подробно разберем, как реализовать отправку SMS при смене статуса заказа без сторонних платных сервисов, опираясь на проверенные методы.

Диагностика: что проверить перед настройкой SMS-уведомлений

  • Убедитесь, что у вас есть доступ к SMS-шлюзу с API (например, Twilio, SMS.RU, Nexmo и т.п.).
  • Проверьте, что номера телефонов клиентов корректно сохраняются в поле "Billing Phone" в заказах WooCommerce.
  • Убедитесь, что в WooCommerce корректно обрабатываются статусы заказов (например, "processing", "completed").
  • Проверьте, что нет конфликтов с другими плагинами, которые могут блокировать хук смены статуса.

Пошаговое решение: интеграция отправки SMS при смене статуса заказа

1. Получение данных для SMS

Нам нужны номер телефона клиента и новый статус заказа. Номер обычно хранится в метаполе _billing_phone.

2. Добавление кода отправки SMS через API

В этом примере используем SMS.RU (бесплатный тариф с ограничениями, но удобен для тестирования). Для других сервисов нужно адаптировать API-запросы.

function send_sms_ru($phone, $message) {
    $api_id = 'ВАШ_API_ID'; // получите в личном кабинете SMS.RU
    $url = 'https://sms.ru/sms/send?api_id=' . $api_id . '&to=' . urlencode($phone) . '&msg=' . urlencode($message) . '&json=1';
    $response = wp_remote_get($url);
    if (is_wp_error($response)) {
        error_log('Ошибка отправки SMS: ' . $response->get_error_message());
        return false;
    }
    $body = json_decode(wp_remote_retrieve_body($response), true);
    if ($body['status'] != 'OK') {
        error_log('Ошибка SMS.RU: ' . print_r($body, true));
        return false;
    }
    return true;
}

3. Хук на смену статуса заказа

Используем хук woocommerce_order_status_changed, чтобы отправлять SMS при изменении статуса. Например, уведомим клиента при переходе заказа в статус "processing" и "completed".

add_action('woocommerce_order_status_changed', 'send_sms_on_order_status_change', 10, 4);
function send_sms_on_order_status_change($order_id, $old_status, $new_status, $order) {
    $phone = $order->get_billing_phone();
    if (empty($phone)) {
        error_log('Отсутствует номер телефона для заказа ' . $order_id);
        return;
    }
    $statuses_to_notify = ['processing', 'completed'];
    if (!in_array($new_status, $statuses_to_notify)) {
        return; // не отправляем для других статусов
    }
    $message = sprintf('Ваш заказ #%d теперь имеет статус: %s.', $order_id, ucfirst($new_status));
    send_sms_ru($phone, $message);
}

Проверка результата: как убедиться, что SMS отправляются

  • Сделайте тестовый заказ и смените статус вручную в админке WooCommerce на "processing" или "completed".
  • Проверьте лог ошибок WordPress (wp-content/debug.log), если включен WP_DEBUG, на предмет ошибок отправки SMS.
  • Убедитесь, что SMS приходит на телефон, указанный в заказе.
  • Для отладки можно временно добавить error_log или уведомления через email в функцию отправки SMS.

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

  • Номер телефона не приходит или пустой: проверьте, что поле "Billing Phone" заполнено корректно, и используйте метод $order->get_billing_phone(). Иногда клиенты оставляют номера в неправильном формате — добавьте валидацию.
  • Ошибка API SMS-сервиса: проверьте правильность API ключа и URL. Иногда сервисы блокируют запросы с локальных серверов, используйте внешние хостинги или VPN для тестов.
  • Хук не срабатывает: убедитесь, что код добавлен в functions.php или в плагин и что нет конфликтов с другими плагинами, отключите все плагины кроме WooCommerce и проверьте.
  • Дублирование SMS: если вы используете несколько плагинов для уведомлений, возможны дубли. Отслеживайте вызовы и отключайте лишние модули.

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

  • Храните API ключи вне публичного доступа — используйте wp-config.php или переменные окружения.
  • Не отправляйте SMS в синхронном режиме при обработке запроса — при высоких нагрузках используйте очередь задач (Action Scheduler или WP-Cron) для отложенной отправки.
  • Внедрите ограничение на количество SMS для одного номера в сутки, чтобы избежать спама и лишних расходов.
  • Регулярно обновляйте используемый API и проверяйте совместимость плагинов с WooCommerce.

Сравнение вариантов реализации отправки SMS в WooCommerce

СпособПлюсыМинусы
Самописный код с SMS.RU APIГибкость, бесплатный тариф для тестовТребует навыков, ограниченный функционал, возможны ошибки
Плагин WooCommerce SMS NotificationsПростая установка, готовые шаблоныПлатные функции, иногда конфликтует с кастомными решениями
Использование сервисов типа Twilio с готовыми интеграциямиНадежность, расширенный функционал, поддержкаСтоимость, настройка API
×

AI-плагин от WPShop.ru

анализирует конкурентов

пишет статьи

готовит SEO

генерирует изображения

и еще кое-что...
WPGPT
Плагин, который наполняет ваш сайт WordPress
Узнать больше