Tag: wordpress后台菜单排序

  • 给 WordPress 后台菜单重新排序

    给 WordPress 后台菜单重新排序

    前言

    这是一个比较特殊的需求,某位客户定制的模板新增了大量的自定义菜单项,需要对主菜单进行重新排序以方便后续的内容管理和日常使用。我发现 WordPress 核心扩展出的原始管理菜单一看源码就让人忍不住要说一声“卧槽”,不明白 WP 团队为嘛要这么设计,做个人不好嘛。

    但是经过简单研究,我还是找到了一种简单的解决方法,这里抛砖引玉。

     

    自定义菜单排序

    以下代码可以作为一个插件使用,也可以添加到主题的 Functions.php 中。

    // 管理菜单重新排序
      function wopus_menu_order($menu_ord) {
        if (!$menu_ord) return true;
        return array(
          'index.php', // 仪表盘
          'edit.php?post_type=custom_type_one', // 自定义文章类型1
          'edit.php?post_type=custom_type_two', // 自定义文章类型2
          'edit.php?post_type=custom_type_three', // 自定义文章类型3,其它以此类推
          'separator1', // 第一分隔符
          'edit.php?post_type=page', // 页面
          'edit.php', // 文章
          'upload.php', // 媒体
          'link-manager.php', // 链接
          'edit-comments.php', // 评论
          'separator2', // 第二分隔符
          'themes.php', // 外观
          'plugins.php', // 插件
          'users.php', // 用户
          'tools.php', // 工具
          'options-general.php', // 设置
          'separator-last', // 第三分隔符
        );
      }
      add_filter('wopus_menu_order', 'wopus_menu_order'); // 激活自定义排序
      add_filter('menu_order', 'wopus_menu_order');
    

    如果是作为单独的插件使用,不要忘记插件钩子:

    register_activation_hook(__FILE__, 'wopus_menu_order');
    

     

    尾声

    我不想把自己绕进 Menu_Order() 这个巨坑中,于是使用了这个简单的解决方法。原版管理菜单中的项目,如果没有写在方法里,不会被删除或隐藏,会被附到管理菜单的底部。

    参考:http://codex.wordpress.org/Plugin_API/Filter_Reference/menu_order