如何在 WooCommerce 中隐藏订单状态

已发表: 2020-11-12

WooCommerce 隐藏订单状态 您想在 WooCommerce 商店中隐藏核心订单状态吗? 最近,一位客户希望我在他的 WooCommerce 商店中隐藏一些订单状态。 在这篇文章中,您将看到如何轻松删除一些订单状态以及如何创建自定义状态。

WooCommerce 隐藏订单状态

由于各种原因,您可能希望隐藏一些核心订单状态。 但是,WooCommerce 的默认版本允许您将订单标记为以下状态之一:已完成、正在处理、待付款、暂停、已退款、已取消或失败。

许多插件允许您管理订单状态,其中之一是售价 49 美元的“ WooCommerce 订单状态管理器”插件。 WooCommerce 订单状态管理器

对于您的商店来说,这可能是一个昂贵的解决方案,但有一种简单的方法可以做到这一点。 在当前版本的 WooCommerce 中,订单状态保存为自定义帖子状态,就像帖子的草稿、计划或发布一样。

如何隐藏订单状态

话虽如此,让我们看看如何使用代码片段在 WooCommerce 中隐藏订单状态。 要检查默认订单状态消息,请登录您的 WordPress 站点并以管理员用户身份访问仪表板。 然后,点击WooCommerce > 订单。 你会看到这个: 订单状态后端

当客户尝试下订单时,这些消息也会显示在前端。 这可以通过单击我的帐户 > 订单来访问,如下所示: 订单状态前端

隐藏核心订单状态的步骤

值得一提的是,当您隐藏核心订单状态时,请确保没有具有该状态的产品。 此外,您应该确保您的 WooCommerce 商店不会在任何地方使用该状态,因为它可能导致错误。 例如,如果您不打算在 WooCommerce 商店中进行退款,则可以隐藏退款状态。

我们无法删除所有核心订单状态的原因是插件使用订单状态,即使是您在工作流程中不使用的那些。 支付网关之类的插件始终假定存在核心订单状态。 如果他们不在那里,他们会打破

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

  1. 登录您的 WordPress 站点并以管理员用户身份访问仪表板
  2. 从仪表板菜单中,单击外观菜单 > 主题编辑器菜单。 打开主题编辑器页面后,查找主题函数文件以添加函数以隐藏 WooCommerce 商店中的核心订单状态。
  3. 将以下代码添加到 functions.php 文件中:
 /*

 * 移除核心订单状态

 * @param array $wc_statuses_arr 网站上所有订单状态的数组

 */

功能 njengah_remove_order_statuses($wc_statuses_arr){

            // 加工

            if( isset( $wc_statuses_arr['wc-processing'] ) ) { // 如果存在

                        未设置($wc_statuses_arr['wc-processing']); // 从数组中删除

            }

            // 退款

            if(isset($wc_statuses_arr['wc-refunded'])){

                        未设置($wc_statuses_arr['wc-refunded']);

            }

            // 等候接听

            if(isset($wc_statuses_arr['wc-on-hold'])){

                        未设置($wc_statuses_arr['wc-on-hold']);

            }

            // 失败的

            if(isset($wc_statuses_arr['wc-failed'])){

                        未设置($wc_statuses_arr['wc-failed']);

            }

            // 待付款

            if(isset($wc_statuses_arr['wc-pending'])){

                        未设置($wc_statuses_arr['wc-pending']);

            }

            // 完全的

            //if( isset( $wc_statuses_arr['wc-completed'] ) ){

            // 取消设置($wc_statuses_arr['wc-completed']);

            //}

            // 取消

            //if( isset( $wc_statuses_arr['wc-cancelled'] ) ){

            // 取消设置($wc_statuses_arr['wc-cancelled']);

            //}

            返回 $wc_statuses_arr; // 返回结果状态

}

add_filter('wc_order_statuses', 'njengah_remove_order_statuses');
  1. 这是前端的结果: 隐藏订单状态
  2. 要添加自定义订单状态,请在 functions.php 文件中添加以下代码:
 /**

* 使用 ID“wc-njengah-shipment”和标签“Awaiting shipping”注册新状态

*/

功能 njengah_register_awaiting_shipment_status() {
register_post_status('wc-njengah-shipment',数组(

'标签' => '等待发货',

'公共' => 真的,

'show_in_admin_status_list' => true, // 显示计数全部 (12) , 已完成 (9) , 等待发货 (2) ...

'label_count' => _n_noop('等待发货<span class="count">(%s)</span>', '等待发货<span class="count">(%s)</span>')

));
}

add_action('init', 'njengah_register_awaiting_shipment_status');

/*

* 将注册状态添加到 WC 订单状态列表

* @param array $wc_statuses_arr 网站上所有订单状态的数组

*/

功能 njengah_add_status($wc_statuses_arr){
$new_statuses_arr = 数组();

// 处理后添加新的订单状态

foreach ( $wc_statuses_arr as $id => $label ) {

$new_statuses_arr[ $id ] = $label;

if ( 'wc-completed' === $id ) { // 在“完成”状态之后

$new_statuses_arr['wc-njengah-shipment'] = '等待发货';

}

}
返回 $new_statuses_arr;

// 如果订单状态订单对您来说无关紧要,您可以删除第 21-32 行并取消注释以下 35-36

// $wc_statuses_arr['wc-njengah-shipment'] = '等待发货';

// 返回 $wc_statuses_arr;
}

add_filter('wc_order_statuses', 'njengah_add_status');
  1. 这是结果: 添加自定义订单状态

结论

在这篇文章中,您已经了解了如何隐藏核心订单状态。 但是,请务必注意,您要删除的订单状态不会在您商店的任何地方使用,因为它可能会导致错误。 此外,我还分享了如何添加自定义订单状态。 如果您不熟悉处理代码,请联系合格的 WordPress 开发人员。

类似文章