问题描述

有谁知道如何添加管理菜单分隔符?我发现 this,但没有帮助。

有任何想法吗?

最佳解决方案

这是一个快速而肮脏的方式来获得你想要的。

Background

WordPress 将管理菜单部分存储在名为 $menu 的全局数组中。要添加分隔符,请使用要分离的选项的索引之间的索引向 $menu 数组添加元素。

使用 add_admin_menu_separator()功能

所以我写了一个函数来封装这个我称为 add_admin_menu_separator()的逻辑。您需要选择一个数组索引号,该数字高于要添加分隔符的选项,然后调用函数 add_admin_menu_separator()传递所述索引作为参数。

例如:

add_admin_menu_separator(37);

add_admin_menu_separator()功能本身

以下是 add_admin_menu_separator()功能的定义,您可以将其复制到主题的 functions.php 文件中。是的,这是奥秘,那么创建和使用全局 $menu 数组的代码也是如此。 (计划最终会弃用它,幸运的是,可能会是几年。)

function add_admin_menu_separator($position) {
  global $menu;
  $index = 0;
  foreach($menu as $offset => $section) {
    if (substr($section[2],0,9)=='separator')
      $index++;
    if ($offset>=$position) {
      $menu[$position] = array('','read',"separator{$index}",'','wp-menu-separator');
      break;
    }
  }
  ksort( $menu );
}

找到您需要的 $menu 的索引

要找出您需要的索引号,您可以从 admin_init 钩子中执行 $GLOBALS['menu']var_dump()。这里有一些代码可以暂时放入主题的 functions.php 文件中,以查看这些值。这仅在请求以/wp-admin/开头的 URL(但是请确保使用 FTP 而不是内置的主题编辑器) 或您将无法访问您的网站时起作用,至少在您访问主题的 functions.php 文件之前! ):

add_action('admin_init','dump_admin_menu');
function dump_admin_menu() {
  if (is_admin()) {
    header('Content-Type:text/plain');
    var_dump($GLOBALS['menu']);
    exit;
  }
}

也可以看看:

BTW,您可能会发现这些链接一般适用于使用管理菜单:

  • 更改管理菜单部分的顺序

  • 最新:wp-admin-menu-classes.php

虽然我的管理菜单课程目前不提供一个简单的方法来添加分隔符,我想我现在补充说,当我有时间。

次佳解决方案

很简单:

add_action( 'admin_init', 'add_sep' );
function add_sep() {

    if ( ! is_admin() )
        return false;

    global $menu;
    $sep = $menu[4]; // that's the default separator
    $pos = 6; // change it for the desired position
    $menu = array_merge(
        array_slice( $menu, 0, $pos ),
        array( $sep ),
        array_slice( $menu, $pos + 1, -1)
    );
    $menu[ $pos - 1 ][4] .= ' menu-top-last';
    $menu[ $pos + 1 ][4] .= ' menu-top-first';

}

注意:默认分隔符位置 ($menu[4]) 可能会根据您 (或插件) 在此钩子之前所做的配置而有所不同。

当然,你也可以调整 menu-top-firstmenu-top-last 类的内省。

参考文献

注:本文内容整合自 google/baidu/bing 翻译的英文资料结果。如果您对结果不满意,可以加入我们改善翻译效果:gxnotes#qq.com(#替换为 @) 。