Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/three.js/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 在WooCommerce后端中禁用管理员对订单发货详细信息的编辑_Php_Wordpress_Woocommerce_Backend_Orders - Fatal编程技术网

Php 在WooCommerce后端中禁用管理员对订单发货详细信息的编辑

Php 在WooCommerce后端中禁用管理员对订单发货详细信息的编辑,php,wordpress,woocommerce,backend,orders,Php,Wordpress,Woocommerce,Backend,Orders,我们使用wc\u order\u is\u editable钩子来禁用对某些订单状态的后端订单项目的编辑 add_filter('wc_order_可编辑','wc_make_orders_可编辑',10,2); 功能wc_使订单可编辑($is_可编辑,$order){ 如果($order->get_status()=='completed'){ $is_editable=false; } return$可编辑; } 但是我也想禁用更改装运详细信息(名称、地址等)的功能 逻辑是,如果订单尚未

我们使用
wc\u order\u is\u editable
钩子来禁用对某些订单状态的后端订单项目的编辑

add_filter('wc_order_可编辑','wc_make_orders_可编辑',10,2);
功能wc_使订单可编辑($is_可编辑,$order){
如果($order->get_status()=='completed'){
$is_editable=false;
}
return$可编辑;
}

但是我也想禁用更改装运详细信息(名称、地址等)的功能


逻辑是,如果订单尚未发送,我会让我们的员工更改订单项目和发货信息,但一旦订单发送,我想禁用它。

没有立即调整的过滤器,因此您可以使用一些
jQuery
,隐藏编辑图标

  • 仅在订单编辑页面上
  • 检查用户角色、管理员
  • 基于一个或多个订单状态

重要提示:因为“账单明细”和“发货明细”之间没有直接的区别,因此包含
H3
选择器是标题的一部分

$(“h3:contains('Shipping')。编辑地址”);
其中“shipping”可能需要用您使用的语言中的标题替换


所以你得到:

function action\u admin\u footer(){
全球$pagenow;
//仅在订单编辑页面上
如果($pagenow!=“post.php”| get_post_type($_get['post'])!=“shop_order”)返回;
//获取当前用户
$user=wp_get_current_user();
//安全使用
if(!($user instanceof WP_user)){
返回;
}
//在阵列中,管理员角色
if(在_数组中('administrator',$user->roles)){
//获取WC_Order对象的实例
$order=wc_get_order(get_the_id());
//这是一份WC_订单
如果(是($order,'WC\u order')){
//获取订单状态
$order_status=$order->get_status();
//数组中的状态
if(在数组中($order\u status,数组('pending','on hold','processing')){
?>
jQuery(文档).ready(函数($){
//重要提示:如有必要,编辑H3标签包含“装运”
$(“h3:contains('Shipping')。编辑地址”).hide();
});

感谢@7uc1f3r伟大的回答。出于好奇,您知道使用jquery的这种方法是否是用于禁用订单项目编辑的方法吗?感谢编辑图标(订单项目)的显示由通过php代码
if($order->is_editable())的if条件决定
,通过“wc\u订单是可编辑的”
过滤器,您可以确定这是真是假。装运详细信息的编辑图标不包括在这样的if条件中,因此不能通过过滤器挂钩进行编辑,必须使用类似jQuery的解决方案