【问题标题】:Woocommerce - woocommerce_order_status_pending hook not callingWoocommerce - woocommerce_order_status_pending 挂钩未调用
【发布时间】:2019-06-27 13:05:55
【问题描述】:


我在检查 woocommerce 订单的订单状态时遇到问题。

我有一个正在创建的插件,我需要知道订单何时变为“待处理”然后“完成”。但是,只有当我在 wordpress 管理员中手动设置订单状态时,所有挂钩才有效。

function order_status_changed_clbk( $order_id ){
    ...some code...
}
add_action( 'woocommerce_order_status_pending', 'order_status_changed_clbk' );

【问题讨论】:

    标签: php wordpress woocommerce hook-woocommerce


    【解决方案1】:

    更新

    我发现有一个小问题。如果用户取消支付,例如在 PayPal,他可能会再次被重定向到结帐。现在让我们期待他再次重复结帐。在这种情况下,钩子 get 被第二次调用,这可能是有问题的。所以我自己实现了一个payment_counter

    add_action('woocommerce_checkout_order_processed', 'order_status_changed_clbk'); 函数 order_status_changed_clbk( $order_id ) { $payment_counter = (int) get_post_meta($order_id, 'payment_counter', true );

    if ( empty( $payment_counter ) ) {
        update_post_meta( $order_id, 'payment_counter', 1 );
        error_log( 'Function works!' ); //Get's called only once
    } else {
        update_post_meta( $order_id, 'payment_counter', ++ $payment_counter ); //Cool thing for statistics maybe, but not really needed
    }
    

    }


    也许这个钩子对你有用:

    function order_status_changed_clbk( $order_id ){
        error_log( 'Function works!' );
    }
    add_action( 'woocommerce_checkout_order_processed', 'order_status_changed_clbk' );
    

    我在我的插件中使用它。如果订单已处理,它也处于“待处理”状态,所以也许这就是您正在寻找的解决方案。

    试试看并检查您的 debug.log 是否有 Function works!

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2020-10-25
      • 1970-01-01
      • 2019-10-31
      • 2021-04-28
      • 2013-11-01
      • 2020-10-03
      • 1970-01-01
      • 2020-08-17
      相关资源
      最近更新 更多