如何在 WooCommerce 中自动批准订单
已发表: 2020-09-25如果您经营的是电子商务商店,那么您就知道该网站需要跟踪和管理订单。 但是,这对于管理员来说可能是一项艰巨的工作,尤其是当您的在线商店聚集了高流量时,这会导致一天内有大量订单。
此外,您知道一旦完成结帐流程就会创建订单。 根据订单在付款到交付链中的位置为订单分配状态。
此外,状态由 WooCommerce、支付网关和商店管理员设置或更改,具体取决于订单的发起位置。
如果用户未选择货到付款选项,则在完成订单付款后。 订单完成后,其状态将设置为“处理中”,直到店主手动将其更改为“已完成”。 对于店主或管理员来说,这将是一项艰巨的任务。
自动批准订单 WooCommerce
在这个简短的教程中,我将与您分享一个自定义 PHP 代码,该代码将帮助您在成功付款时自动将订单状态设置为已完成。 这意味着即使用户选择货到付款选项,订单状态也会自动更改为已完成。
此外,我还将与您分享一个解决方案,该解决方案将自动将 WooCommerce 订单状态设置为虚拟产品的已完成。 这些产品不是有形的或可下载的。
这是因为会员订阅可能没有有形的形式,而是有一个到期日。 如果您处理可下载的产品,则不应包含货到付款选项,而应仅添加一个条件来检查订单中的所有产品是否都是虚拟的。
既然您知道如何设置订单状态,那么这里是有关如何设置的详细指南:
- 根据付款方式自动将 WooCommerce 订单状态设置为已完成。
- 对于虚拟产品,自动将 WooCommerce 订单状态设置为已完成。
a) 根据付款方式自动将 WooCommerce 订单状态设置为已完成的步骤
以下是您需要遵循的简单步骤:
- 登录您的 WordPress 站点并以管理员用户身份访问仪表板。
- 从仪表板菜单中,单击外观菜单 > 主题编辑器菜单。 打开主题编辑器页面后,查找主题功能文件,我们将在其中添加根据付款方式自动将 woocommerce 订单状态设置为已完成的功能。
- 将以下代码添加到php文件中:
/** 根据付款方式自动将 woocommerce 订单状态设置为已完成的片段 */ add_action('woocommerce_order_status_changed', 'njengah_auto_complete_by_payment_method'); 功能 njengah_auto_complete_by_payment_method($order_id) { 如果(!$order_id){ 返回; } 全球$产品; $order = wc_get_order($order_id); if ($order->data['status'] == 'processing') { $payment_method=$order->get_payment_method(); if ($payment_method!="bacs") { $order->update_status('完成'); } } }
- 要查看结果,请前往 WordPress 仪表板并单击WooCommerce > 订单。 您将看到订单已设置为已完成,如下所示:
代码如何运作
在上面的代码中,我使用了 woocommerce_order_status_changed 挂钩来在订单状态更改时调用一个函数。 它检查订单是否具有处理状态并将其更改为已完成。
默认情况下,WooCommerce 有四种默认付款方式,分别是直接银行转账 (bacs)、支票付款 (cheque)、货到付款 (cod) 和 PayPal (PayPal)。 但是,您需要指定设置条件的付款方式。
b) 自动将虚拟产品的 WooCommerce 订单状态设置为已完成的步骤
以下是您需要遵循的步骤:
- 登录您的 WordPress 站点并以管理员用户身份访问仪表板。
- 从仪表板菜单中,单击外观菜单 > 主题编辑器菜单。 打开主题编辑器页面后,查找主题功能文件,我们将在其中添加自动将 woocommerce 订单状态设置为虚拟产品已完成的功能。
- 将以下代码添加到php文件中:
/** 片段自动将 woocommerce 订单状态设置为虚拟产品的已完成 */ add_action('woocommerce_order_status_changed', 'njengah_auto_complete_virtual'); 函数 njengah_auto_complete_virtual($order_id) { 如果(!$order_id){ 返回; } 全球$产品; $order = wc_get_order($order_id); if ($order->data['status'] == 'processing') { $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 = 假; 休息; } 别的 { $virtual_order = 真; } } } } // 如果都是虚拟产品,则标记为已完成 if ( $virtual_order ) { $order->update_status('完成'); } } }
- 结果将与第一个示例相同,因为订单将自动设置为Completed 。
代码如何运作
在上面的代码中,我使用了相同的钩子来调用函数 njengah_auto_complete_virtual。 在它检查是否处于处理状态后,代码会按顺序遍历每个项目以查看是否有虚拟产品。
line_item 指的是商品,只需要将商品一一拉取来检查是否是虚拟的。 如果没有虚拟商品,订单状态不会标记为已完成。
结论
在这个简短的教程中,我分享了如何自动将 WooCommerce 订单状态设置为已完成。 我是根据付款方式和虚拟产品完成的。
但是,根据您对商店的要求,使用第一个代码段,您可以添加更多条件以将订单状态标记为已完成。 例如,如果已付款,您甚至可以将非虚拟产品的订单状态标记为已完成,方法是在检查付款方式是否为虚拟产品后添加检查。
但是,通过此代码段,仅当订单中的所有产品都是虚拟产品时,订单的状态才会设置为已完成。 我希望这篇文章提供了一个在 WooCommerce 中自动批准订单的解决方案。
类似文章
- 如何删除下载菜单我的帐户页面 WooCommerce
- 如何在 WooCommerce 结帐表单中添加额外字段
- 如何禁用运送到另一个地址选项
- 如何在 WooCommerce 中获取付款方式 » 代码示例
- 如何在 WooCommerce 中隐藏添加到购物车按钮
- 如何在 WooCommerce 中添加自定义运输方式
- 从 WooCommerce 产品页面隐藏或删除数量字段
- 如何逐步使用 WooCommerce 产品属性 [完整指南]
- 如何按类别显示 WooCommerce 产品
- 如何隐藏 WooCommerce 优惠券代码字段
- 如何将 WooCommerce 购物车和结帐放在一页上
- 如何在 WooCommerce 中重命名订单状态消息
- 如何添加产品图片 WooCommerce 结帐页面
- 如何使 WooCommerce 订单需要评论
- 如何向 WooCommerce 产品添加类别
- 如何在 WooCommerce 的商店页面中隐藏所有产品
- 如何禁用特定类别的付款方式