是否将分隔符添加到管理菜单?

时间:2010-10-06 作者:user1147

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

有什么想法吗?

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

这里有一个快速而肮脏的方法来得到你想要的东西。

后台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 要计算出所需的索引号,您可以var_dump() 属于$GLOBALS[\'menu\']admin_init 钩下面是一些代码,您可以将其放入主题中functions.php 临时归档以查看值是什么。这仅在请求以开头的URL时有效/wp-admin/ (但请确保使用FTP,而不是内置的主题编辑器,否则您将失去对站点的访问权限,至少在您获得对主题的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;
  }
}
另请参见:

顺便说一句,您可能会发现这些链接通常对使用管理菜单很有用:

SO网友:vmassuchetto

这很简单,因为:

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 课堂反思。

SO网友:robrecord

这建立在Masteaba的答案之上,但并不替换您指定位置的任何内容-它只是在后面添加分隔符。

还使用匿名函数,因此它仅与PHP 5.3及以上版本兼容。

add_action( \'admin_menu\', function () {
    $position = 29;
    global $menu;
    $separator = [
        0 => \'\',
        1 => \'read\',
        2 => \'separator\' . $position,
        3 => \'\',
        4 => \'wp-menu-separator\'
    ];
    if (isset($menu[$position])) {
        $menu = array_splice($menu, $position, 0, $separator);
    } else {
        $menu[$position] = $separator;
    }
});

SO网友:Jankyz

您只需在函数中添加此项。php

add_action(\'admin_menu\', function () {   
  global $menu;
  $menu[49] = [\'\', \'read\', \'\', \'\', \'wp-menu-separator\'];
});
其中49是分隔符位置,您必须记住,如果分隔符位置与菜单元素的位置相同,它可以替换菜单元素。

SO网友:dgw

要确定您想要做什么有点困难,但我认为您希望在WordPress管理菜单中添加一个顶级条目。

看见this documentation 在WordPress Codex中。

简而言之,您正在寻找add_menu_page() 函数,它接受多个参数,并在管理菜单中显示一个附加项,作为“Dashboard”、“Posts”、“Media”等的同级项。

希望我没弄错。:-)

SO网友:MastaBaba

下面向Wordpress播发了一个操作,该操作在呈现管理菜单时运行。“管理”菜单是一个数组,您所要做的就是在指定的位置添加一个定义分隔符的数组元素。

从…起here:

add_action( \'admin_menu\', \'set_admin_menu_separator\' );
function set_admin_menu_separator() {
$position = 79;
global $menu;
$menu[$position] = array(
0   =>  \'\',
1   =>  \'read\',
2   =>  \'separator\' . $position,
3   =>  \'\',
4   =>  \'wp-menu-separator\'
);
}
请注意,尽管这与目前接受的答案非常相似,但目前接受的答案对我来说并不适用(从评论来看,对其他几个人来说也是如此)。

结束

相关推荐

WP-ADMIN似乎正在重定向

我的w-admin登录有一个奇怪的问题。这是从我升级到3.0以后才开始的,当我转到wp admin时,登录表单显示正常,但当我输入用户名并通过时,每次都会再次显示登录表单。使用密码恢复功能会导致电子邮件未找到错误。我知道用户名密码和电子邮件是正确的,b/c我可以访问mysql数据库,我可以看到值(至少用户名和电子邮件) 有人知道会出什么问题吗