从“自定义帖子类型”屏幕中删除“自定义分类法” Metabox


15

我有两个分层的自定义分类法,每个分类法都对应一个相应的自定义帖子类型。我想在帖子类型的编辑屏幕上删除每个的metabox。

我已经阅读了删除自定义分类法metabox表单自定义帖子类型,以及如何删除类别样式(分层)分类法metabox?但我仍然被困住。

我正在使用的功能是:

function remove_taxonomies_metaboxes() {
    remove_meta_box( 'partner_typediv', 'partners', 'normal' );
    remove_meta_box( 'person_typediv', 'people', 'normal' );
}
add_action( 'admin_menu' , 'remove_taxonomies_metaboxes' );

我没有前缀post_types和custom_taxonomies,但是仅此而已。我试过使用食典推荐的admin_menu鱼钩和add_meta_boxes鱼钩。我都试过normal,并side为第三个参数。

上面的功能位于mu-plugins注册帖子类型和分类的功能下的文件中。


编辑:这是register_taxonomy函数中的错字。我是一个可怕的人。感谢大家的帮助。我仍然学到了一些东西!


即使有'show_ui' => false
JMau 2013年

1
我仍然希望菜单中的UI,只是在编辑帖子时不希望如此。
mrwweb

Answers:


35

如果要通过register_taxonomy手动注册自定义分类法,则可以传入参数来控制metabox的显示位置。

在下面的示例中show_uifalse将设置为将会从编辑屏幕,快速编辑屏幕和管理菜单中完全删除该metabox。但是,如果设置show_uitrue,则可以通过使用show_in_quick_editmeta_box_cb参数来实现更细微的控制(将后者设置为false可以根据需要在CPT编辑屏幕上隐藏该元框)。

register_taxonomy( 'your_custom_taxonomy', array( 'your_custom_post_type' ), $args );
$args = array(
    'show_ui'                    => true,
    'show_in_quick_edit'         => false,
    'meta_box_cb'                => false,
);

这行得通。保留管理菜单并删除表单中的自定义分类,添加新的自定义帖子类型。谢谢。
IT Vlogs

谢谢!我正在寻找'meta_box_cb'=> false以将其隐藏在新版本中,将其设置为null只会显示默认的wordpress版本。
Ryan H

流畅而简单。
Travis van der Font

7

您说要从post编辑屏幕中删除框,而不是从“帖子类型”屏幕中删除框,因此假设您应该仅能够为要应用的帖子类型注册分类法,并且完全避免这种情况。食品法典中的示例仅针对以下book帖子类型注册示例分类法:

register_taxonomy( 'genre', array( 'book' ), $args );

我认为这是您需要做的,但是您没有针对职位类型或分类法发布任何注册代码。

如果您自己创建了元框(即这些框不是默认框),那么避免此问题的方法是将元框注册在特定于post类型的钩子上

do_action('add_meta_boxes_' . $post_type, $post);

或遵循上面的示例:

add_action('add_meta_boxes_book', 'your-box-callback');

这些方法之一应为您解决此问题。我认为您根本不必使用remove_meta_box

如果您试图从它们所注册的帖子类型中删除元框,那么它会起作用(再次遵循食典中的示例):

function remove_taxonomies_metaboxes() {
    remove_meta_box( 'genrediv', 'book', 'side' );
}
add_action( 'add_meta_boxes_book' , 'remove_taxonomies_metaboxes' );

我敢肯定这admin_menu还为时过早,但是没有验证。add_metaboxes也对我有用。我不知道为什么它对您不起作用。


抱歉,不清楚。我的意思是“ 帖子类型”屏幕。每种分类法仅注册到一种自定义帖子类型。我试过短暂使用add_meta_boxes_ *钩子,但我将尝试对此进行一些更改(尽管我使用的是自动生成的元框)。
mrwweb

然后答案中的最后一个选项应该可以做到。我测试了 盒子消失了。我不能说我了解没有分类法的分类法的逻辑。
s_ha_dum 2013年

(请参见上面的编辑。这是一个错字。在我身上...感谢您的帮助)。为了回答您的问题,我在显示带有高级自定义字段的分类法(这对于网站用户来说是一个更好的界面)。
mrwweb

您的最后一个示例确实为我指明了正确的方向,但这对我有用:add_action('admin_menu','remove_taxonomies_metaboxes');
马科斯Buarque

我发现此语法不适用于当前版本的WordPress,请查看此答案以获取有效的解决方案。
戴维

3

使用ACF进行自定义分类法管理时,不需要默认的元框。我已经成功尝试了以下代码:

      function remove_cuttax_metaboxes() {
           $post_type = 'post';
           $taxonomy = 'custom_taxonomy_slug';
           remove_meta_box( 'tagsdiv'.$taxonomy, $post_type, 'side' );

       }
       add_action( 'admin_menu' , 'remove_cuttax_metaboxes', 100 );

如果分类法是由CPT-UI之类的插件创建的,则较低的优先级(100)使此代码也能工作。


tagsdiv应该尾随-:remove_meta_box( 'tagsdiv-'.$taxonomy, $post_type, 'side' );
格雷格·
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.