为了账号安全,请及时绑定邮箱和手机立即绑定

WooCommerce 订单状态挂钩未触发

WooCommerce 订单状态挂钩未触发

PHP
Smart猫小萌 2021-06-29 04:19:04
我在这里使用这个小函数来检测订单是否设置为待处理。这发生在支付页面和支付提供商通知之间:add_action( 'woocommerce_order_status_pending', 'status_pending' );function status_pending( $related_job ) {    error_log('Triggered');}问题是我没有收到任何显示该功能有效的错误日志。但它变得更加疯狂。当我通过仪表板将状态从已完成更新为待处理时,会出现日志。所以我完全不知道为什么它在结帐过程中不起作用。任何建议或想法可能是什么问题?
查看完整描述

2 回答

?
潇潇雨雨

TA贡献1833条经验 获得超4个赞

“待处理”订单状态是客户进入支付网关之前订单的默认状态,就在订单创建之后。


因此,最好的方法是在创建订单后,在付款方式流程之前使用挂钩:


1)首先尝试woocommerce_checkout_order_processed动作钩子(3个参数):


add_action( 'woocommerce_checkout_order_processed', 'order_processed_with_pending_status', 10, 3 );

function order_processed_with_pending_status( $order_id, $posted_data, $order ) {

    error_log('Triggered');

}

2)或者尝试woocommerce_checkout_update_order_meta动作钩子(2个参数):


add_action( 'woocommerce_checkout_update_order_meta', 'order_processed_with_pending_status', 10, 2 );

function order_processed_with_pending_status( $order_id, $data ) {

    error_log('Triggered');

}

两者都应该工作......


查看完整回答
反对 回复 2021-07-02
?
LEATH

TA贡献1936条经验 获得超6个赞

这是因为钩子仅在订单状态更改时触发,而不是在订单创建时触发,还有另一个钩子可用于检测新订单,您可以使用订单 ID 获取订单对象,您可以使用它来查找订单状态:


add_action( 'woocommerce_new_order', 'prefix_new_wc_order',  1, 1  );

function prefix_new_wc_order( $order_id ) {

    $order = new WC_Order( $order_id );


}

上面的钩子只在结账过程中触发,所以在后端创建订单不会触发它。


查看完整回答
反对 回复 2021-07-02
  • 2 回答
  • 0 关注
  • 203 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信