使用优惠券时自动完成订单。 WooCommerce [重复]

Posted

技术标签:

【中文标题】使用优惠券时自动完成订单。 WooCommerce [重复]【英文标题】:Autocomplete order when used coupon. WooCommerce [duplicate] 【发布时间】:2021-07-16 17:34:13 【问题描述】:

我想在使用 100% 折扣券后将状态从“待处理”变为“完成”

我一直在为我的 Wordpress 网站制作脚本,因为当我使用 100% 优惠券时,它会将订单状态设为“处理中”,因此它不会向用户注册我的课程。

我找到了这个脚本信息functions.php,但它完成了所有命令。我想下所有订单,购物车总和为“0”。你能帮我升级这段代码吗?

/**
 * Auto Complete all WooCommerce orders.
 */

if ( WC()->cart->total == 0 ) 

add_action( 'woocommerce_thankyou', 'custom_woocommerce_auto_complete_order' );
function custom_woocommerce_auto_complete_order( $order_id )  
    if ( ! $order_id ) 
        return;
    

    $order = wc_get_order( $order_id );
    $order->update_status( 'completed' );


好的,有解决办法

add_action('woocommerce_checkout_order_processed', 'custom_woocommerce_auto_complete_order');
function custom_woocommerce_auto_complete_order($order_id)

    if (!$order_id) 
        return;
    

    $order = wc_get_order($order_id);
    if ($order->get_total() == 0) 
        $order->update_status('completed');
    


【问题讨论】:

请详细说明问题,您想在他们使用特定优惠券时自动完成订单,还是在总数为 0 时自动完成订单? 我想在使用 100% 折扣券后将状态从“待定”变为“完成”。我会在几秒钟内更新帖子 【参考方案1】:

创建订单后购物车不再相关,因此您需要在函数内检查订单总额并据此采取行动。您的代码应如下所示:

add_action('woocommerce_checkout_order_processed', 'custom_woocommerce_auto_complete_order');
function custom_woocommerce_auto_complete_order($order_id)

    if (!$order_id) 
        return;
    

    $order = wc_get_order($order_id);
    if ($order->get_total() == 0) 
        $order->update_status('completed');
    

【讨论】:

这可能行得通,但现在我意识到,当没有付款时,我没有显示感谢页面,它会在 www.com/order 上刷新(我下订单的同一页面)。你知道解决这个问题的方法吗? 我的意思是最佳方式是在下订单时运行此代码,而不是在显示感谢页面时运行此代码 好的,我知道了 - 谢谢 add_action('woocommerce_checkout_order_processed', 'custom_woocommerce_auto_complete_order');功能 custom_woocommerce_auto_complete_order($order_id) if (!$order_id) return; $order = wc_get_order($order_id); if ($order->get_total() == 0) $order->update_status('completed'); 太好了,如果这个答案有帮助,别忘了标记它。 你需要用另一个钩子woocommerce_thankyou,相同的代码,只需将$order->update_status('completed');替换为wp_safe_redirect( 'https://example.com' ); exit;

以上是关于使用优惠券时自动完成订单。 WooCommerce [重复]的主要内容,如果未能解决你的问题,请参考以下文章

WooCommerce 中所有现有处理订单的自动完成状态

从 WooCommerce 订单中获取优惠券数据

在 WooCommerce 中自动处理已付款订单而不是自动完成

WooCommerce:根据运输方式自动完成已付款订单

在 Woocommerce 中自动将订单状态从处理更改为完成

php [WooCommerce Core]自动完成订单