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

时间:2013-06-11 作者:mrwweb

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

我读过remove custom taxonomy metabox form custom post typeHow do you remove a Category-style (hierarchical) taxonomy 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\\u类型和custom\\u分类法,但仅此而已。我试过使用admin_menu 挂钩和add_meta_boxes 法典推荐的钩子。我两个都试过了normalside 对于第三个参数。

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

编辑:这是register\\u分类功能中的一个输入错误。我是个可怕的人。谢谢大家的帮助。我还是学到了一些东西!

4 个回复
SO网友:locomo

如果您通过手动注册自定义分类法register_taxonomy 然后可以传入参数来控制元框的显示位置。

在下面的设置示例中show_uifalse 将从编辑屏幕、快速编辑屏幕和管理菜单中完全删除metabox。但如果你show_uitrue 然后使用show_in_quick_editmeta_box_cb 参数(将later设置为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,
);

SO网友:s_ha_dum

您说要从post 编辑屏幕,而不是帖子类型屏幕,因此假设您应该能够register your taxonomy 仅适用于您希望其应用于的帖子类型,并完全避免这种情况。Codex中的示例仅为book 职位类型如下:

register_taxonomy( \'genre\', array( \'book\' ), $args );
我认为这是您需要做的,但您没有发布任何帖子类型或分类的注册码。

如果您自己创建了元框,也就是说,这些框不是默认框,那么避免此问题的方法是注册元框on the post-type specific hooks:

do_action(\'add_meta_boxes_\' . $post_type, $post);
或遵循上述示例:

add_action(\'add_meta_boxes_book\', \'your-box-callback\');
其中一种方法应该可以为您解决这个问题。我认为你不应该使用remove_meta_box 完全

如果您试图将元框从其注册到的post类型中删除,这会起作用(再次遵循Codex中的示例):

function remove_taxonomies_metaboxes() {
    remove_meta_box( \'genrediv\', \'book\', \'side\' );
}
add_action( \'add_meta_boxes_book\' , \'remove_taxonomies_metaboxes\' );
我很确定admin_menu 太早了,但没有证实。add_metaboxes 对我也有用。我不知道为什么它对你不起作用。

SO网友:fabiodipa

默认情况下,分类法使用tagsdiv xxx id注册meta\\u框。使用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)也允许此代码工作。

SO网友:Abdullah Ramzan

我尝试了上述解决方案来隐藏分类法,但它对我无效。最后,我找到了一个解决方案。

在主题函数中添加此代码。php文件。

function Cc_Gutenberg_Register_files() 
{
    //custom script file
    wp_register_script(
        \'cc-block-script\',
        get_stylesheet_directory_uri() .\'/js/block-script.js\',
        array( \'wp-blocks\', \'wp-edit-post\' )
    );
    // register block editor script
    register_block_type( \'cc/ma-block-files\', array(
        \'editor_script\' => \'cc-block-script\'
    ) );     
}
add_action(\'init\', \'Cc_Gutenberg_Register_files\');
用于block-script.js, 您可以使用此代码。

wp.data.dispatch( \'core/edit-post\').removeEditorPanel( \'taxonomy-panel-category\' ) ; // Hide default Category
wp.data.dispatch( \'core/edit-post\').removeEditorPanel( \'taxonomy-panel-TAXONOMY-NAME\' ) ; //Hide Custom Taxonomy

结束

相关推荐

使用扭曲保存自定义Metabox数据

我有不止几个元数据库与自定义帖子类型一起使用,我遇到了一个问题,我的数据没有按预期保存。下面是代码的相关部分,它位于连接到的函数中save_post.// Loop through our custom metabox post data foreach ($_POST[\'product\'] as $key => $value) { // Clear the previous featured product if it needed if ($key =