Php 根据“编辑订单”页面中的订单状态,在下拉列表中隐藏订单状态

Php 根据“编辑订单”页面中的订单状态,在下拉列表中隐藏订单状态,php,wordpress,woocommerce,hook-woocommerce,orders,Php,Wordpress,Woocommerce,Hook Woocommerce,Orders,在特定场景下,我想在WooCommerce订单状态下拉列表中隐藏订单状态: 如果状态为“待付款”,则隐藏已完成 如果状态为“正在处理”,则隐藏待定付款 我仍然希望在订单概览列表中显示所有这些订单状态 我所能找到的就是完全取消订单状态: 函数以便\u 39252649\u删除\u处理\u状态($statuses){ 如果(isset($statuses['wc-processing'])){ 未设置($status['wc-processing']); } 返回$status; } 添加过滤器

在特定场景下,我想在WooCommerce订单状态下拉列表中隐藏订单状态:

  • 如果状态为“待付款”,则隐藏已完成
  • 如果状态为“正在处理”,则隐藏待定付款
我仍然希望在订单概览列表中显示所有这些订单状态

我所能找到的就是完全取消订单状态:

函数以便\u 39252649\u删除\u处理\u状态($statuses){
如果(isset($statuses['wc-processing'])){
未设置($status['wc-processing']);
}
返回$status;
}
添加过滤器(“wc_订单_状态”、“so_39252649_删除_处理_状态”);

但这当然也会将其从订单概述列表中删除,我只想将其隐藏在订单编辑页面的下拉列表中,但我找不到用于此的挂钩


jQuery是我唯一的选择吗?

您可以使用下面的注释,并在代码中添加解释

所以你得到:

//管理订单编辑页面:订单状态下拉列表
函数筛选器\u wc\u order\u状态($order\u status){
全球$post,$pagenow;
//目标编辑页面
如果($pagenow=='post.php'&&isset($\u GET['post'])&&$\u GET['action']=='edit'&&GET\u post\'type($\u GET['post'])==='shop\u order'){
//取得身份证
$order\u id=$post->id;
//获取WC_Order对象的实例
$order=wc\u get\u order($order\u id);
//这是一份WC订单
如果(是($order,'WC\u order')){
//获取当前订单状态
$order_status=$order->get_status();
//比较
如果($order_status=='pending'){
未完成($order_status['wc-completed']);
}elseif($order_status=='processing'){
未设置($order_status['wc-pending']);
} 
}
}
返回$order\u状态;
}
添加过滤器('wc\U订单状态','filter\U wc\U订单状态',10,1);