使用优惠券时自动完成订单。 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 中自动处理已付款订单而不是自动完成