【发布时间】:2021-10-19 14:12:12
【问题描述】:
当以管理员身份登录并查看 Woocommerce 中的订单时,会有一个包含所有自定义字段的部分。在整个列表中,我只希望它显示其中两个。我如何从这个视图中隐藏其余部分?我不想删除它们,只是从这个视图中隐藏。
【问题讨论】:
标签: wordpress woocommerce custom-fields woocommerce-theming
当以管理员身份登录并查看 Woocommerce 中的订单时,会有一个包含所有自定义字段的部分。在整个列表中,我只希望它显示其中两个。我如何从这个视图中隐藏其余部分?我不想删除它们,只是从这个视图中隐藏。
【问题讨论】:
标签: wordpress woocommerce custom-fields woocommerce-theming
对于您想要隐藏的每个自定义字段,将以下 4 行代码添加到 functions.php 或使用 Snippets 插件:
add_filter('is_protected_meta', 'my_is_protected_meta_filter1', 10, 2);
function my_is_protected_meta_filter1($protected, $meta_key) {
return $meta_key == 'automatewoo_cart_id' ? true : $protected;
}
如果要隐藏多个,请再次添加上面的行并将'my_is_protected_meta_filter1'更改为'my_is_protected_meta_filter2'等
【讨论】:
如果您使用的是 ACF pro,您可以使用一个挂钩来删除后端的字段,但它没有记录在案。..
如果 is_admin() 返回 true,您可以使用挂钩删除特定字段。
您可能需要稍微尝试一下才能让它工作,ACF 钩子是
acf/get_fields
所以,例如:
add_filter('acf/get_fields', 'your_function_name', 20, 2);
function your_function_name($fields, $parent) {
// remove the fields you don't want
return $fields;
}
$fields 可以是嵌套的字段数组 => sub_fields。
你需要设置优先级> 10在内部ACF过滤器之后运行
【讨论】:
对于 Woocommerce 中的订单,帖子类型为“shop_order”,因此您的代码应为:
add_action( 'add_meta_boxes', 'remove_shop_order_meta_boxe', 90 );
function remove_shop_order_meta_boxe() {
remove_meta_box( 'postcustom', 'shop_order', 'normal' );
}
【讨论】: