客户我的帐户订单历史记录中不显示自定义订单状态

2024-02-09

在 WooCommerce 中,我制作了 2 个自定义订单状态。第一个是“运输状态”,另一个是“批准状态”。

在我将一些订单状态更改为这两个新状态(分别是shipping or approved),客户无法在其订单历史记录页面查看此订单。

这是我的代码:

function register_awaiting_shipment_order_status() {


    if('product_manager' == $get_roles || 'administrator' == $get_roles){
        register_post_status( 'wc-shipping', array(
                'label'                     => 'wc-shipping',
                'public'                    => true,
                'exclude_from_search'       => false,
                'show_in_admin_all_list'    => true,
                'show_in_admin_status_list' => true,
                'label_count'               => _n_noop( 'Shipping <span class="count">(%s)</span>', 'Shipping <span class="count">(%s)</span>' )
        ) );
    }


    if('approver' == $get_roles  || 'administrator' == $get_roles ||'product_manager' == $get_roles ){
        register_post_status( 'wc-approved', array(
                'label'                     => 'wc-approved',
                'public'                    => true,
                'exclude_from_search'       => false,
                'show_in_admin_all_list'    => true,
                'show_in_admin_status_list' => true,
                'label_count'               => _n_noop( 'Approved <span class="count">(%s)</span>', 'Approved <span class="count">(%s)</span>' )
        ) );
    }
}

    add_action( 'init', 'register_awaiting_shipment_order_status' );

但如果我将订单状态更改回Woocommerce's默认订单状态(例如“已完成”),然后客户可以再次在其订单历史记录中查看它们。

我做错了什么?
如何在客户订单历史记录页面上显示具有新自定义状态的新订单?

Thanks.


我已经纠正了您代码中的小错误。您需要更换textdomain随处可见您的主题文本域(或 slug).

要完成并显示这个新的自定义订单状态,您还需要在wc_order_statuses过滤钩用于my_account/orders.php在客户的帐户页面上显示客户订单的模板。

这是重新审视的代码:

function register_new_custom_order_statuses() {

    if('product_manager' == $get_roles || 'administrator' == $get_roles){
        register_post_status( 'wc-shipping', array(
            'label'                     => _x( 'Shipping', 'Order status', 'textdomain' ),
            'public'                    => true,
            'exclude_from_search'       => false,
            'show_in_admin_all_list'    => true,
            'show_in_admin_status_list' => true,
            'label_count'               => _n_noop( 'Shipping <span class="count">(%s)</span>', 'Shipping <span class="count">(%s)</span>' )
        ) );
    }

    if('approver' == $get_roles  || 'administrator' == $get_roles ||'product_manager' == $get_roles ){
        register_post_status( 'wc-approved', array(
            'label'                     => _x( 'Approved', 'Order status', 'textdomain' ),
            'public'                    => true,
            'exclude_from_search'       => false,
            'show_in_admin_all_list'    => true,
            'show_in_admin_status_list' => true,
            'label_count'               => _n_noop( 'Approved <span class="count">(%s)</span>', 'Approved <span class="count">(%s)</span>' )
        ) );
    }
}
add_action( 'init', 'register_new_custom_order_statuses' );

// Register new statuses in wc_order_statuses (function).
function register_new_custom_wc_order_statuses( $order_statuses ) {
    $order_statuses['wc-shipping'] = _x( 'Shipping', 'Order status', 'textdomain' );
    $order_statuses['wc-approved'] = _x( 'Approved', 'Order status', 'textdomain' );
    return $order_statuses;
}
add_filter( 'wc_order_statuses', 'register_new_custom_wc_order_statuses' );

此代码位于活动子主题(或主题)的 function.php 文件中或任何插件文件中。

代码已经过测试并且功能齐全。


参考:

  • WooCommerce Apidocs 源函数 wc_get_order_statuses() https://docs.woocommerce.com/wc-apidocs/source-function-wc_get_order_statuses.html#184-201
  • WooCommerce - 注册新订单状态 https://github.com/woothemes/woocommerce/blob/master/templates/myaccount/orders.php
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

客户我的帐户订单历史记录中不显示自定义订单状态 的相关文章

随机推荐

  • 在 Linux 上,命令行程序 mktemp 是否不如 C 函数 mkstemp 安全?

    这两个操作都会创建一个空文件并返回文件名 但 mkstemp 使文件以独占模式打开并为您提供句柄 C 功能有安全优势吗 这是否意味着命令行版本存在安全漏洞 顺便说一句 有趣的是 Linux 上的 C api 中有几个相关函数 其中大多数在其
  • 在运行时从指向基类的指针获取对象的类型

    我正在使用一个类库 其中所有类都直接或间接派生自基类Base并有一个名字 该库提供了按名称搜索对象的功能 该功能将返回Base 有没有办法在不检查所有可能性的情况下找到返回对象的类型dynamic cast就像我在下面的例子中所做的那样 如
  • firebase unauth 与 google 不允许更改用户

    在 Google 项目或 Firebase 数据库中是否有一个设置用于指定 unauth 不应缓存用户凭据 我已经通过 Firebase Google 身份验证登录了我的应用程序 调用 unauth 不允许我使用其他帐户再次登录 此后尝试登
  • 在 django 中,我可以在检索查询集之前在序言中设置变量吗?

    我需要根据用户定义的步幅对数据点进行不同的分组 并且我希望最大限度地减少与 django 交互的代码中的原始 SQL 数量 问题 我可以在MySQL中创建带参数的视图吗 https stackoverflow com questions 2
  • 在Videoview中旋转实际的视频缓冲区

    我目前正在开发一个专门针对 android 的 GoogleTV 设备的应用程序 其中使用或强制应用程序的方向为横向以外的任何方向都未启用 并且根据我的设想 将来也不会启用 实际上该应用程序只是崩溃了试图跑步setRequestedOrie
  • 在使用递归模板表示的 n 元树中放置元素时,角度拖放不起作用

    我对有角度的材料拖放不熟悉 我的应用程序正在使用 n 叉树 并且由于我不知道它的先验形式 因此我被迫使用递归模板来表示它 在过去的几天里 我一直在尝试使用 Angular 材质拖放来重新排序兄弟姐妹 如果我删除根节点 一切都会正常工作 但我
  • Flash 无法在沙箱属性内的 iframe 中工作

    我用过iframe显示一些页面 这些页面可能包含adobe flash内容如视频 我的问题是abode flash不执行在iframe在沙箱属性内 我的iframe tag 简短的回答 您无法在沙盒 iframe 中执行 flash 插件
  • 如何让 Docker 容器在本地主机上运行时相互通信?

    我的 MacBook 上有一个完全本地运行的 Web 应用程序 Web 应用程序有一个前端 Angular Javascript 和一个实现 RESTful API 的后端 Python Django 我对后端进行了 Docker 化 使其
  • Google App Engine Servlet 中的 ResourceBundle 未按预期工作

    有人可以帮助我理解为什么使用国际化ResourceBundle在 Google App Engine Servlet 中的工作方式与在命令行 Java 应用程序中的工作方式不同吗 以下片段 ResourceBundle resource e
  • 如何查看本地文件系统上的 Jenkins 服务器控制台输出?

    我正在使用 Jenkins Active Directory 插件 多次尝试后仍无法登录 错误消息显示 If you are a system administrator and suspect this to be a configura
  • Octave 中的 1-of-K 编码

    我正在尝试在 Octave 中获取整数向量的二进制 K 编码 我有一个向量y say y 1 2 3 1 3 我想要一个矩阵 Y 1 0 0 0 1 0 0 0 1 1 0 0 0 0 1 我可以手动构造一个 K 矩阵 Y Y Y y 1
  • 如何在opencv或emgu cv中检测三角形边缘?

    我使用Emgu CV 我想检测图片中的两个锐点 首先我将图像转换为灰度 然后调用cvCanny 然后调用FindContours 但只找到一个轮廓 没有找到三角形 Code public static void Do Bitmap bitm
  • 组合的解解析器/解析器生成器

    是否有一个解析器生成器也实现了相反的方向 即从相同的语法规范中解析域对象 又名漂亮打印 据我所知 ANTLR不支持这个 我已经用 Java 和 Kotlin 实现了一组可逆解析器组合器 解析器几乎是用 LL 1 风格编写的 它提供了解析方法
  • Visual Studio 中 ASP.NET Core 项目的“REST API 客户端”选项?

    我已经在 Azure 中启动并运行了 ASP NET REST API 从 Visual 中较旧的 NET 4 5 项目中 我使用此菜单选项生成了一个客户端 但是当我创建一个新的 ASP NET Core ASP NET 5 项目 并且想要
  • WCF WebService - 有没有办法确定客户端收到响应?

    假设我有一个 WCF 服务 客户端可以使用该服务从某个服务器端消息队列接收消息 举个例子 假设数据表中有一个服务器端电子邮件队列 ID MESSAGE TEXT SENT 1 Hi N 2 A 2nd Msg N 让我们将我们的服务定义为
  • C 中的“CALLBACK”声明有什么作用?

    我正在查看一些代码SDL http www libsdl org库并遇到了这样声明的函数 LRESULT CALLBACK WndProc HWND hwnd UINT msg WPARAM wParam LPARAM lParam 现在
  • Apigee - 配置 API 代理时出现问题

    我正在寻找一种方法将客户的 WCF 服务公开为 REST 服务 并创建所有安全堆栈以支持声明 oauth 身份验证和授权 我正在研究两种不同的方法来做到这一点 创建一个新的 REST 服务 它将充当代理 将我的 WCF 服务公开为 REST
  • 使用 PHP 根据 Schematron 验证 XML

    有很多关于 Schematront 的资源 但是我找不到任何相关内容或有关如何根据 Schematront sch 文件验证 xml 的示例 Anyone 我已经发现 1 或 2 个非常旧的类会返回错误 所以如果有人知道如何做到这一点 请提
  • Google Play 服务过期错误

    我的 google play service 有问题 我正在使用 Google API 进行 oAuth2 身份验证和日历 Gmail 信息 昨天一切正常 但今天他告诉我 我需要更新版本的 Google PLay 服务 Android St
  • 客户我的帐户订单历史记录中不显示自定义订单状态

    在 WooCommerce 中 我制作了 2 个自定义订单状态 第一个是 运输状态 另一个是 批准状态 在我将一些订单状态更改为这两个新状态 分别是shipping or approved 客户无法在其订单历史记录页面查看此订单 这是我的代