如何在 WooCommerce 中自动批准订单

已发表: 2020-09-25

自动批准订单 WooCommerce 如果您经营的是电子商务商店,那么您就知道该网站需要跟踪和管理订单。 但是,这对于管理员来说可能是一项艰巨的工作,尤其是当您的在线商店聚集了高流量时,这会导致一天内有大量订单。

此外,您知道一旦完成结帐流程就会创建订单。 根据订单在付款到交付链中的位置为订单分配状态。

此外,状态由 WooCommerce、支付网关和商店管理员设置或更改,具体取决于订单的发起位置。

如果用户未选择货到付款选项,则在完成订单付款后。 订单完成后,其状态将设置为“处理中”,直到店主手动将其更改为“已完成”。 对于店主或管理员来说,这将是一项艰巨的任务。

自动批准订单 WooCommerce

在这个简短的教程中,我将与您分享一个自定义 PHP 代码,该代码将帮助您在成功付款时自动将订单状态设置为已完成。 这意味着即使用户选择货到付款选项,订单状态也会自动更改为已完成。

此外,我还将与您分享一个解决方案,该解决方案将自动将 WooCommerce 订单状态设置为虚拟产品的已完成。 这些产品不是有形的或可下载的。

这是因为会员订阅可能没有有形的形式,而是有一个到期日。 如果您处理可下载的产品,则不应包含货到付款选项,而应仅添加一个条件来检查订单中的所有产品是否都是虚拟的。

既然您知道如何设置订单状态,那么这里是有关如何设置的详细指南:

  • 根据付款方式自动将 WooCommerce 订单状态设置为已完成。
  • 对于虚拟产品,自动将 WooCommerce 订单状态设置为已完成。

a) 根据付款方式自动将 WooCommerce 订单状态设置为已完成的步骤

以下是您需要遵循的简单步骤:

  1. 登录您的 WordPress 站点并以管理员用户身份访问仪表板
  2. 从仪表板菜单中,单击外观菜单 > 主题编辑器菜单。 打开主题编辑器页面后,查找主题功能文件,我们将在其中添加根据付款方式自动将 woocommerce 订单状态设置为已完成的功能。
  3. 将以下代码添加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('完成');

}

}

}
  1. 要查看结果,请前往 WordPress 仪表板并单击WooCommerce > 订单。 您将看到订单已设置为已完成,如下所示: 批准的订单

代码如何运作

在上面的代码中,我使用了 woocommerce_order_status_changed 挂钩来在订单状态更改时调用一个函数。 它检查订单是否具有处理状态并将其更改为已完成。

默认情况下,WooCommerce 有四种默认付款方式,分别是直接银行转账 (bacs)、支票付款 (cheque)、货到付款 (cod) 和 PayPal (PayPal)。 但是,您需要指定设置条件的付款方式。

b) 自动将虚拟产品的 WooCommerce 订单状态设置为已完成的步骤

可下载产品:自动批准订单 WooCommerce 以下是您需要遵循的步骤:

  1. 登录您的 WordPress 站点并以管理员用户身份访问仪表板
  2. 从仪表板菜单中,单击外观菜单 > 主题编辑器菜单。 打开主题编辑器页面后,查找主题功能文件,我们将在其中添加自动将 woocommerce 订单状态设置为虚拟产品已完成的功能。
  3. 将以下代码添加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('完成');

}

}

}

  1. 结果将与第一个示例相同,因为订单将自动设置为Completed

代码如何运作

在上面的代码中,我使用了相同的钩子来调用函数 njengah_auto_complete_virtual。 在它检查是否处于处理状态后,代码会按顺序遍历每个项目以查看是否有虚拟产品。

line_item 指的是商品,只需要将商品一一拉取来检查是否是虚拟的。 如果没有虚拟商品,订单状态不会标记为已完成。

结论

在这个简短的教程中,我分享了如何自动将 WooCommerce 订单状态设置为已完成。 我是根据付款方式和虚拟产品完成的。

但是,根据您对商店的要求,使用第一个代码段,您可以添加更多条件以将订单状态标记为已完成。 例如,如果已付款,您甚至可以将非虚拟产品的订单状态标记为已完成,方法是在检查付款方式是否为虚拟产品后添加检查。

但是,通过此代码段,仅当订单中的所有产品都是虚拟产品时,订单的状态才会设置为已完成。 我希望这篇文章提供了一个在 WooCommerce 中自动批准订单的解决方案。

类似文章