Как использовать хук WooCommerce Subscription Renewal для дополнительных действий

Что такое хук WooCommerce Subscription Renewal и зачем он нужен

WooCommerce Subscriptions — популярное расширение для организации подписок в интернет-магазинах на базе WooCommerce. Часто возникает необходимость запускать дополнительные действия при продлении подписки: отправка кастомных уведомлений, интеграция с внешними сервисами, обновление метаданных и т.п.

Хук woocommerce_subscription_renewal_payment_complete срабатывает после успешной оплаты продления подписки. Он позволяет добавить свой код, который выполнится сразу после обновления статуса подписки.

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

  • Вы используете неправильный хук или его вариант.
  • Код добавлен в неподходящее место (например, не в functions.php или не в плагине).
  • Нарушена последовательность параметров функции обработчика.
  • Отсутствует проверка правильного объекта подписки.
  • Кэширование или конфликт плагинов мешает выполнению кода.

Пошаговое решение: как правильно подключить обработчик на продление подписки

1. Добавьте обработчик в файл functions.php вашей темы или в кастомный плагин

add_action('woocommerce_subscription_renewal_payment_complete', 'my_custom_subscription_renewal_action', 10, 1);

function my_custom_subscription_renewal_action($subscription) {
    // Проверяем, что передан объект WC_Subscription
    if (!is_a($subscription, 'WC_Subscription')) {
        return;
    }

    // Получаем ID подписки
    $subscription_id = $subscription->get_id();

    // Пример: добавляем мета-данные с датой продления
    update_post_meta($subscription_id, '_last_renewal_date', current_time('mysql'));

    // Дополнительные действия, например, вызов внешнего API
    // wp_remote_post('https://example.com/api/renewal', [
    //     'body' => [ 'subscription_id' => $subscription_id ]
    // ]);
}

2. Очистите кеш (если используете кеширующие плагины) и протестируйте

Для тестирования можно продлить подписку вручную через админку WooCommerce Subscriptions или дождаться автоматического списания, если настроена автоматизация.

Как проверить, что решение сработало

  • В админке WordPress откройте заказ с подпиской, проверьте наличие обновленного мета-поля _last_renewal_date через плагин Advanced Custom Fields или напрямую в базе.
  • Если используется сторонний API, проверьте логи запросов через error_log или инструмент отладки WP.
  • Добавьте временный error_log или wp_mail для отправки уведомления при срабатывании хука:
function my_custom_subscription_renewal_action($subscription) {
    error_log('Подписка продлена: ID ' . $subscription->get_id());
    // или
    wp_mail('admin@example.com', 'Продление подписки', 'Подписка ID ' . $subscription->get_id() . ' была продлена.');
}

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

  • Ошибка: Обработчик не вызывается.
    Причина: Использование хука с неправильным названием или отсутствие нужного плагина WooCommerce Subscriptions.
    Решение: Проверьте, что плагин активен, и используйте woocommerce_subscription_renewal_payment_complete.
  • Ошибка: Функция получает некорректный параметр.
    Причина: Неправильное количество параметров в add_action.
    Решение: Убедитесь, что в add_action указано 1 как число аргументов, если функция принимает один параметр.
  • Ошибка: Конфликты с кешем или другими плагинами.
    Решение: Отключите кеш временно, проверьте логи ошибок, протестируйте в чистой среде.

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

  • Не используйте тяжелые операции внутри обработчика, лучше ставьте задачи в очередь (через WP-Cron или внешние очереди).
  • Проверяйте тип объекта $subscription, чтобы избежать ошибок PHP.
  • Используйте nonce и проверяйте права пользователя, если добавляете пользовательские действия через AJAX.
  • Для интеграций с внешними API добавьте обработку ошибок и повторных попыток.

Сравнение вариантов интеграции дополнительной логики при продлении подписки

МетодПреимуществаНедостатки
Хук woocommerce_subscription_renewal_payment_completeПрямое выполнение после оплаты, простой кодЗависит от успешной оплаты, может замедлять процесс если тяжелый код
WP-Cron с отложенной обработкойНе блокирует оплату, позволяет повторять задачиЗадержка выполнения, сложнее в реализации
Плагины интеграции (например, Zapier, AutomateWoo)Готовые решения с визуальными настройкамиМогут быть платными, ограничены в кастомизации
Как использовать хук WooCommerce Subscription Renewal для дополнительных действий
24.07.2026
Как отключить автоподгрузку в админ-панели WordPress
24.03.2026
Как создать настройку в админ-панели WordPress для управления отображением
30.03.2026
Удаление старых вариаций товаров из базы WooCommerce без плагинов
14.06.2026
Как избежать проблем в синтезе WooCommerce и кассовых аппаратов: фискализация, интеграция и отладка
29.05.2026