如何在WooCommerce后台隐藏订单项的line_cost和line_tax列名?
WooCommerce后台隐藏订单项line_cost和line_tax列名的解决方案
原代码问题分析
你提供的代码未生效,核心问题有两个:
- 钩子注册的函数名不匹配:
add_action中指定的函数名是admin_head_shop_order_inline_Cust,但实际定义的函数名是admin_head_shop_order_inline_css_S,导致钩子无法触发。 - CSS选择器仅针对列内容,未覆盖表头(列名)部分,所以列名依然显示。
解决方案
以下提供两种可行方法,推荐使用方法二(通过WooCommerce原生钩子实现,更稳定):
方法一:修正CSS代码
修正函数名匹配问题,并调整选择器同时隐藏表头和列内容:
add_action( 'admin_head', 'admin_head_shop_order_inline_css' ); function admin_head_shop_order_inline_css() { global $pagenow, $typenow; // 定位WooCommerce后台单个订单页面 if ( in_array( $pagenow, ['post.php', 'post-new.php'] ) && $typenow === 'shop_order' ) : ?><style> /* 隐藏line_cost列的表头和内容 */ table.woocommerce_order_items th.item_cost, table.woocommerce_order_items td.item_cost { display: none !important; } /* 隐藏line_tax列的表头和内容 */ table.woocommerce_order_items th.item_tax, table.woocommerce_order_items td.item_tax { display: none !important; } </style><?php endif; }
方法二:使用WooCommerce原生钩子(推荐)
通过woocommerce_admin_order_items_columns钩子直接移除指定列,无需依赖CSS,兼容性更好:
add_filter( 'woocommerce_admin_order_items_columns', 'remove_order_item_cost_tax_columns' ); function remove_order_item_cost_tax_columns( $columns ) { // 移除line_cost对应的列(键为item_cost) if ( isset( $columns['item_cost'] ) ) { unset( $columns['item_cost'] ); } // 移除line_tax对应的列(键为item_tax) if ( isset( $columns['item_tax'] ) ) { unset( $columns['item_tax'] ); } return $columns; }
将上述任意一段代码添加到主题functions.php文件或自定义插件中,即可实现隐藏指定列名及对应内容的效果。
内容的提问来源于stack exchange,提问作者Victor Daniel Witoszek
相关产品推荐
相关产品推荐

