在导航菜单管理屏幕中删除不可用的元对象

时间:2013-01-02 作者:fuxia

当您访问时wp-admin/nav-menus.php 而且,没有菜单可以让您获得一组无法使用的元数据库。他们所做的唯一一件事就是将注意力从创建菜单对话框中移开。

enter image description here

我想把那些盒子藏起来,直到有菜单为止。

enter image description here

我该怎么做?

1 个回复
最合适的回答,由SO网友:fuxia 整理而成

中有两个重要的全局变量wp-admin/nav-menus.php:

  • $nav_menus 是所有可用菜单的数组,填充wp_get_nav_menus().
  • $wp_meta_boxes[\'nav-menus\'] 是此屏幕所有可用元数据库的数组admin_head-nav-menus.php, 设置第一个变量后调用的操作,并更改第二个变量:

    add_action( \'admin_head-nav-menus.php\', \'t5_hide_dead_menu_metaboxes\' );
    
    /**
     * Remove metaboxes for menu items when no menu exists.
     *
     * @wp-hook admin_head-nav-menus.php
     * @return  void
     */
    function t5_hide_dead_menu_metaboxes()
    {
        empty ( $GLOBALS[\'nav_menus\'] )
            and $GLOBALS[\'wp_meta_boxes\'][\'nav-menus\'] = array ();
    }
    
    下载为plugin T5 Hide dead menu metaboxes 来自GitHub。

    Additional Information:

    删除元框后,屏幕看起来有点奇怪。我们可以更改一点初始挂钩,并添加一些样式,使其看起来更好。所以我们的钩子可能是:

    /**
     * Remove metaboxes for menu items when no menu exists.
     *
     * @wp-hook admin_head-nav-menus.php
     * @return  void
     */
    function t5_hide_dead_menu_metaboxes()
    {
        if ( empty( $GLOBALS[\'nav_menus\'] ) ) {
            $GLOBALS[\'wp_meta_boxes\'][\'nav-menus\'] = array ();
            echo \'<style> #nav-menus-frame { margin-left: 0 !important; padding-top: 20px; } </style>\';
        }
    }
    
    然后屏幕看起来更自然:

    enter image description here

结束

相关推荐

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

我已经创建了一个自定义帖子类型“hotel”和自定义“taxonomy”,所以当管理员创建一个新酒店并保存它时,会自动创建相关的自定义分类,但我不想在管理端的酒店编辑页面中显示自定义元框,因此我使用了WordPress功能,但什么都没有发生。我的自定义邮政编码 $Hotel_labels = array( \'name\' => _x(\'Hotels\', \'post type general name\'), \'singular_name\' => _x(\'Hote