woocommerce_get_shop_coupon_data вызывается 3 раза

Я пишу плагин для Woocommerce, чтобы сделать API-вызов поставщику купонов, и я подключаюсь к woocommerce_get_shop_coupon_data с помощью:

add_filter( 'woocommerce_get_shop_coupon_data', 'wigroup_coupon_injecion', 1, 3  );

Все работает как положено, но этот хук вызывается 3 раза при каждой загрузке страницы, а также при вводе или удалении купона.

Итак, мой вопрос:

Как подключиться к применяемому купону, отличному от woocommerce_get_shop_coupon_data?

Нормально ли, что он вызывается 3 раза каждый раз?

Просто в примечании к корзине woocommerce мне нужен уникальный идентификатор для каждой корзины. Я понимаю, что есть только уникальный идентификатор, когда заказ выполнен, но мне нужно передать идентификатор для каждой транзакции купона.

Любые идеи там будут оценены.


person BG Smit    schedule 05.04.2018    source источник


Ответы (1)


Вместо этого лучше отслеживать события клиентов, связанные с купонами:

  1. Когда покупатель применяет код купона с помощью крючка действия woocommerce_applied_coupon:

    add_action('woocommerce_applied_coupon', 'action_applied_coupon', 10, 1 );
    function action_applied_coupon( $coupon_code ) {
        // Your code here
    }
    
  2. Когда покупатель удаляет код купона с помощью хука действия woocommerce_removed_coupon:

    add_action('woocommerce_removed_coupon', 'action_removed_coupon', 10, 1 );
    function action_removed_coupon( $coupon_code ) {
        // Your code here
    }
    

Этот хук будет вызываться только один раз для каждого события клиента, связанного с купонами…

person LoicTheAztec    schedule 05.04.2018
comment
Хорошо, так что это работает нормально, единственное, мне нужно запустить свой API, проверить, действителен ли купон, создать купон программно, а затем применить его. woocommerce_applied_coupon сначала попытается применить купон (которого не существует), а затем только вызов API - person BG Smit; 06.04.2018
comment
@BGSmit Помните, что эти хуки запускаются только при действии купона клиента… - person LoicTheAztec; 06.04.2018
comment
Да, я это понимаю, И это именно та структура, которая нам нужна. Мы можем сделать проверку ваучера только тогда, когда они отправят его, поэтому нам нужно почти перехватить процесс купона и добавить свою собственную логику. - person BG Smit; 06.04.2018