WooCommerce支付成功后自动标记订单为已完成
文 / @WordPress主题
给WooCommerce添加自动完成功能
本文将介绍如何让非下载虚拟商品也支持自动完成功能。默认情况下,WooCommerce的虚拟下载商品在用户支持付成功后会自动标记为“已完成”。但是如果我们的虚拟商品不是可以下载的商品,如优惠券,在线充值码等等,支付成功后,订单就不能自动标记为已完成,这样的用户体验显然是不好的。下面我们来稍微给WooCommerce加点料。
如何实现
按下面代码示例,复制以下代码到主题的functions.php
里面即可:
add_filter('woocommerce_payment_complete_order_status','virtual_order_payment_complete_order_status',10,2);
function virtual_order_payment_complete_order_status($order_status,$order_id){
$order=new WC_Order($order_id);
if('processing'==$order_status&&
('on-hold'==$order->status||'pending'==$order->status||'failed'==$order->status)){
$virtual_order=null;
if(count($order->get_items())>0){
foreach($order->get_items() as $item){
if('line_item'==$item['type']){
$_product=$order->get_product_from_item($item);
if(!$_product->is_virtual()){
//如果不是虚拟商品,完成判断,退出循环
$virtual_order=false;
break;
}else{
$virtual_order=true;
}
}
}
}
//如果是虚拟商品,返回已完成
if($virtual_order){
return 'completed';
}
}
//对于非虚拟商品,返回订单状态
return $order_status;
}
最后
其实这是一个很常见的需求,真不知道为什么WooCommerce不提供一个选项来支持这样的功能,非要让我们自己动手。

相关文章
-
WordPress同城互联网产品解决方案:UBASE 2023-10-03 16:40:39
-
WordPress网站的安全插件:wordfence 2023-09-14 09:25:18
-
创建Vue组件详细教程 2023-09-10 00:23:17
-
WordPress 6.3 支持在手动更新插件和主题失败后回滚旧版本 2023-08-28 16:58:45
-
WordPress 6.3版本(2023年8月)性能提升了哪些? 2023-08-28 16:56:02
-
Astra 主题团队推出人工智能驱动的 WordPress 网站创建平台 – ZIPWP 2023-08-28 16:49:54
-
WordPress 宣布将为用户提供 100 年域名托管服务 2023-08-28 16:45:27
-
PHP判断if else 和 switch case的区别盘点 2023-07-29 15:11:11
-
详解WordPress独立站SEM中的OCPC方法(含百度推广OCPC与谷歌OCPC) 2023-07-19 08:01:30
-
WordPress的古腾堡全站编辑器site-editor.php介绍(附:site-editor.php启用代码) 2023-07-16 08:01:57