嗨,我正在为我的工作建立多个网站。所有网站都将利用CPTs
和Custom Taxonomies
. 将使用Advanced Custom Fields
插件。因此,我想从所有潜在站点中删除所有分类法元框。我知道我可以通过以下方式做到这一点:
function my_remove_meta_boxes() {
remove_meta_box( \'tax-1div\', \'CPT-1\', \'side\' );
remove_meta_box( \'tax-2div\', \'CPT-1\', \'side\' );
remove_meta_box( \'tax-3div\', \'CPT-1\', \'side\' );
remove_meta_box( \'tax-4div\', \'CPT-1\', \'side\' );
remove_meta_box( \'tax-5div\', \'CPT-1\', \'side\' );
}
add_action( \'admin_menu\', \'my_remove_meta_boxes\' );
但这只会从定义的
CPT-1
并非所有潜在的CPT组合。要从所有潜在的CPT中删除,我必须这样做:
function my_remove_meta_boxes() {
remove_meta_box( \'tax-1div\', \'CPT-1\', \'side\' );
remove_meta_box( \'tax-2div\', \'CPT-1\', \'side\' );
remove_meta_box( \'tax-3div\', \'CPT-1\', \'side\' );
remove_meta_box( \'tax-4div\', \'CPT-1\', \'side\' );
remove_meta_box( \'tax-5div\', \'CPT-1\', \'side\' );
remove_meta_box( \'tax-1div\', \'CPT-2\', \'side\' );
remove_meta_box( \'tax-2div\', \'CPT-2\', \'side\' );
remove_meta_box( \'tax-3div\', \'CPT-2\', \'side\' );
remove_meta_box( \'tax-4div\', \'CPT-2\', \'side\' );
remove_meta_box( \'tax-5div\', \'CPT-2\', \'side\' );
}
add_action( \'admin_menu\', \'my_remove_meta_boxes\' );
除了为所有CPT取消注册所有元框之外,还有更有效的方法吗?
SO网友:Jeremy Ross
ACF是一个很好的插件,可以将这些作为选项,但您可以考虑在主题中注册自定义分类法,或将WordPress way.
如果这是你的一个选择,你会有很大的灵活性来做一些事情。
您可以为多个帖子类型注册1个分类法,您可以选择隐藏UI,这样以后就不必隐藏它了这里有一个从《法典》中修改过来的简单示例,供我们参考:
add_action( \'init\', \'create_wpse_tax\' );
function create_wpse_tax() {
register_taxonomy(
\'custom_tax\',
array(\'cpt_1\',\'cpt_2\',\'cpt_3\'), // <- multiple post types in an array here.
array(
\'label\' => __( \'Custom Tax\' ),
\'rewrite\' => array( \'slug\' => \'custom-tax\' ),
\'hierarchical\' => true,
\'show_ui\' => false, // <- don\'t show the UI
\'hide_meta_box\' => true // **EDIT** - don\'t show the meta box
)
);
}
EDIT: 我刚刚找到了另一个不在抄本中的参数
hide_meta_box
. 这可能更像您正在寻找的内容,而不是完全隐藏UI。请参见上面代码块中的编辑。