在WooCommerce的前台结账失败的订单的操作挂钩是什么?

时间:2019-06-01 作者:Zach Smith

我正在开发一个插件,当用户尝试在前端结账,但订单失败时(例如,用户正在使用信用卡,但余额不足,无法满足购物车总数等),该插件可以处理逻辑。我可以看到,在WooCommerce中,订单实际上被设置为“失败”,因为我收到WC的自动电子邮件,提醒管理员订单失败。我花了很多时间测试各种操作和过滤器,希望有人能给我指出正确的方向。

2 个回复
最合适的回答,由SO网友:gdarko 整理而成

您可以使用此操作挂钩“woocommerce\\u order\\u status{status}”,捕获特定的状态更改。定义见WC_Order class.

您是这样定义的:

/**
 * Executed when the status is changed to failed.
 * @param int $order_id
 * @param \\WC_Order $order
 */
function wpdg_9291_woocommerce_order_status_failed( $order_id, $order ) {
    // Do something here
}
add_action(\'woocommerce_order_status_failed\', \'wpdg_9291_woocommerce_order_status_failed\', 15, 2);

SO网友:LoicTheAztec

当客户从网关返回而未付款时,它将落在“已收到订单”(感谢)页面上,有2种可能的状态:failedpending, 有两种可能的动作挂钩:

  • woocommerce_thankyou_{$order_payment_method} (带$order_id 可用参数)woocommerce_thankyou (带$order_id 可用参数)
您可以使用以下示例针对该情况:

add_action( \'woocommerce_thankyou\', \'thankyou_action_callback\', 10, 1 );
function thankyou_action_callback( $order_id ) {
    // Get an instance of the WC_Order Object
    $order = wc_get_order( $order_id );

    if( in_array( $order->get_status(), [\'failed\',\'pending\'] ) ) {
        // Your code comes here
    }
}