在向注册类别时设置类别的元框register_taxonomy 作用此函数的默认行为是将metabox回调(meta\\u box\\u cb)设置为一个名为post_categories_meta_box. 正是此函数呈现+添加类别;按钮遗憾的是,此元数据库不允许您有选择地隐藏此按钮。正如其他回答者指出的那样,它将根据分类法的edit\\u terms功能隐藏该按钮,因此您可以通过限制谁拥有该功能来有效地隐藏它。但是,如果像我一样,您想隐藏此按钮而不限制功能,则此操作不起作用。
为此,您需要提供自己的meta\\u box\\u cb。我只需复制post\\u categories\\u meta\\u框并删除该按钮即可完成此操作。
My custom function:
function custom_post_categories_meta_box_without_add_new( $post, $box ) {
$defaults = array( \'taxonomy\' => \'category\' );
if ( ! isset( $box[\'args\'] ) || ! is_array( $box[\'args\'] ) ) {
$args = array();
} else {
$args = $box[\'args\'];
}
$parsed_args = wp_parse_args( $args, $defaults );
$tax_name = esc_attr( $parsed_args[\'taxonomy\'] );
$taxonomy = get_taxonomy( $parsed_args[\'taxonomy\'] );
?>
<div id="taxonomy-<?php echo $tax_name; ?>" class="categorydiv">
<ul id="<?php echo $tax_name; ?>-tabs" class="category-tabs">
<li class="tabs"><a href="#<?php echo $tax_name; ?>-all"><?php echo $taxonomy->labels->all_items; ?></a></li>
<li class="hide-if-no-js"><a href="#<?php echo $tax_name; ?>-pop"><?php echo esc_html( $taxonomy->labels->most_used ); ?></a></li>
</ul>
<div id="<?php echo $tax_name; ?>-pop" class="tabs-panel" style="display: none;">
<ul id="<?php echo $tax_name; ?>checklist-pop" class="categorychecklist form-no-clear" >
<?php $popular_ids = wp_popular_terms_checklist( $tax_name ); ?>
</ul>
</div>
<div id="<?php echo $tax_name; ?>-all" class="tabs-panel">
<?php
$name = ( \'category\' === $tax_name ) ? \'post_category\' : \'tax_input[\' . $tax_name . \']\';
// Allows for an empty term set to be sent. 0 is an invalid term ID and will be ignored by empty() checks.
echo "<input type=\'hidden\' name=\'{$name}[]\' value=\'0\' />";
?>
<ul id="<?php echo $tax_name; ?>checklist" data-wp-lists="list:<?php echo $tax_name; ?>" class="categorychecklist form-no-clear">
<?php
wp_terms_checklist(
$post->ID,
array(
\'taxonomy\' => $tax_name,
\'popular_cats\' => $popular_ids,
)
);
?>
</ul>
</div>
</div>
<?php
}
(我希望我可以在这里加入我的自定义功能,正如我所提到的,它大部分是从wordpress复制的。如果有法律原因我不能这样做,请让我知道。)
Applied to my custom taxonomy
register_taxonomy(
"my_custom_taxonomy",
"my_custom_type",
array(
...
\'hierarchical\' => true,
\'meta_box_cb\' => \'custom_post_categories_meta_box_without_add_new\'
)
);
这样做的缺点是,与默认设置不同,如果wordpress更新其样式,您的meta\\u box\\u cb将不会更改。
请注意,这仅在手动注册分类法时有效。如果您使用的是插件,它可能不允许您配置meta\\u box\\u cb。