我需要为单个自定义帖子类型保留标记分类法,但我正在努力解决这个问题。
是否有办法删除此元框中的所有内容,但?
<小时>
remove_meta_box(\'tagsdiv-post_tag\', \'post\', \'normal\');
将从普通帖子中删除标记(需要),但这意味着它们也将从所有自定义帖子类型中删除。我可以删除单个自定义帖子类型的元框,如下所示:
remove_meta_box(\'tagsdiv-post_tag\', \'cars\', \'normal\');
remove_meta_box(\'tagsdiv-post_tag\', \'hotels\', \'normal\');
等
但这意味着我必须在正常帖子上留下可用的标签(不需要)。
所以我想我想要这样的东西,从除(例如)之外的所有东西中删除元框airports
:
remove_meta_box(\'tagsdiv-post_tag\', \'!airports\', \'normal\');
有什么想法吗?
最合适的回答,由SO网友:Joey Yax 整理而成
为什么不关闭默认标记功能,然后注册特定于自定义帖子类型的标记分类法?
http://codex.wordpress.org/Function_Reference/register_taxonomy
register_taxonomy(
\'my_custom_post_type_tags\',
\'my_custom_post_type\',
array(
\'label\' => __( \'Tags\' ),
\'rewrite\' => false,
\'hierarchical\' => false,
\'capabilities\' => array( \'edit_terms\' => \'manage_categories\' )
)
);
SO网友:Pieter Goosen
您可以实现从所有post类型屏幕(特定屏幕除外)中删除元盒。我就是这样做的。可能有点高估了,哈哈
首先,您需要获得所有注册的公共职位类型的列表。这是通过使用get_post_types
. 您需要使用参数\'public\' => true
, 否则将返回所有post类型,这是不必要的。
其次,你需要删除或排除你不想让metabox从中删除的帖子类型。
第三,您需要将返回的post类型名称列表传递给remove_meta_box()
函数从这些post类型屏幕中删除特定的元框。此函数可用于有条件地删除任何元框
<?php
if (is_admin()) :
function my_remove_meta_boxes() {
if( current_user_can(\'manage_options\') ) {
$custom_post_types = get_post_types( array( \'public\' => true ), \'objects\');
foreach ( $custom_post_types as $custom_post_type ) {
$exclude = array( \'information\' ); //<---Replace information with your own post type
if( TRUE === in_array( $custom_post_type->name, $exclude ) )
continue;
$posttypes = $custom_post_type->name;
remove_meta_box(\'tagsdiv-post_tag\', $posttypes, \'normal\');
}
}
}
endif;
add_action( \'admin_menu\', \'my_remove_meta_boxes\' );