繁体   English   中英

WooCommerce订单状态挂钩未触发

[英]WooCommerce order status hook not triggering

我在这里使用此小功能来检测是否已将订单设置为待处理。 这在付款页面和付款提供商通知之间发生:

add_action( 'woocommerce_order_status_pending', 'status_pending' );
function status_pending( $related_job ) {
    error_log('Triggered');
}

问题是我没有收到任何错误日志,该错误日志向我表明该功能正常工作。 但这变得更加疯狂。 当我通过仪表板将状态从完成更新为未决时,将显示日志。 所以我绝对不知道为什么在结帐过程中它不起作用。 有什么建议或想法可能是什么问题?

这是因为该挂钩仅在订单状态更改时触发,而不是在订单创建时触发,还有另一个挂钩可用于检测新订单,您可以使用订单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 );

}

上面的挂钩仅在结帐过程中触发,因此在后端创建订单不会触发它。

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

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

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');
}

两者都应该工作...

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM