隐藏除特定自定义帖子类型以外的所有内容的meta框

时间:2014-06-06 作者:Nathan Hornby

我需要为单个自定义帖子类型保留标记分类法,但我正在努力解决这个问题。

是否有办法删除此元框中的所有内容,但?

<小时>

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\');

有什么想法吗?

3 个回复
最合适的回答,由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\' );

SO网友:тнє Sufi

您需要检查当前帖子是否airports 或者不是。

可以这样做:

function custom_remove_tag_box() {
    global $current_screen;
    if ( $current_screen->post_type != \'airports\' ) {
        remove_meta_box(\'tagsdiv-post_tag\', \'post\', \'normal\');
    }
}
add_action(\'admin_head\', \'custom_remove_tag_box\');
测试和工作。

结束

相关推荐

Taxonomy vs Post Status

我正在构建一个web应用程序,因此可扩展性是我开发时的主要关注点之一。在我正在构建的应用程序上,我有一个名为“项目”的帖子类型。项目可以是:我不需要任何类型的UI,只需要能够查询处于一种或多种状态的所有项目。我假设,由于post\\u status位于posts表中,使用此方法执行这些查询比使用分类法更快?所以,我的问题是,如果有100000个项目,查询哪个会更快?发布状态还是分类法?干杯