给 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

 

 

类似文章

发表回复