Php woocommerce\u get\u shop\u优惠券\u数据被调用3次

Php woocommerce\u get\u shop\u优惠券\u数据被调用3次,php,wordpress,woocommerce,hook-woocommerce,coupon,Php,Wordpress,Woocommerce,Hook Woocommerce,Coupon,我正在为Woocommerce编写一个插件,用于对优惠券提供商进行api调用,并通过以下方式连接到Woocommerce\u get\u shop\u优惠券\u数据: add_filter( 'woocommerce_get_shop_coupon_data', 'wigroup_coupon_injecion', 1, 3 ); 所有操作都按预期进行,但在每次页面加载时,以及在输入或删除优惠券时,都会调用此钩子3次 因此,我的问题是: 除了woocommerce\u get\u shop\

我正在为Woocommerce编写一个插件,用于对优惠券提供商进行api调用,并通过以下方式连接到
Woocommerce\u get\u shop\u优惠券\u数据

add_filter( 'woocommerce_get_shop_coupon_data', 'wigroup_coupon_injecion', 1, 3  );
所有操作都按预期进行,但在每次页面加载时,以及在输入或删除优惠券时,都会调用此钩子3次

因此,我的问题是:

除了
woocommerce\u get\u shop\u优惠券数据
,如何连接到正在应用的优惠券

每次呼叫3次是否正常

在woocommerce购物车上的一个旁注上,我需要每个购物车的唯一标识符。我知道订单完成时只有一个唯一的标识符,但我需要向每个优惠券交易传递一个标识符


如果您有任何想法,我们将不胜感激。

您应该更好地跟踪与优惠券相关的客户活动:

  • 当客户使用
    woocommerce\u applicated\u优惠券
    操作挂钩应用优惠券代码时:

    add_action('woocommerce_applied_coupon', 'action_applied_coupon', 10, 1 );
    function action_applied_coupon( $coupon_code ) {
        // Your code here
    }
    
    add_action('woocommerce_removed_coupon', 'action_removed_coupon', 10, 1 );
    function action_removed_coupon( $coupon_code ) {
        // Your code here
    }
    
  • 当客户使用
    woocommerce\u removed\u优惠券
    操作挂钩删除优惠券代码时:

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

  • 这个钩子将只为每个客户关于优惠券的事件调用一次…

    OK,这样就可以了,唯一的问题是,我需要启动api,检查优惠券是否有效,以编程方式创建优惠券,然后应用它。woocommerce\u applied\u优惠券将首先尝试并应用优惠券(优惠券不存在),然后仅执行apicall@BGSmit请记住,此挂钩仅在客户优惠券事件操作时启动……是的,我理解这一点,这正是我们需要的结构。我们只能在他们提交凭证时进行凭证验证,这就是为什么我们几乎需要拦截优惠券流程,并添加我们自己的逻辑