有关全局$wp_admin_bar如何工作的问题

时间:2013-04-08 作者:Brett Shumaker

所以,我今天在添加一些管理菜单栏链接时遇到了一个有趣的问题。使用以下方式向父菜单添加链接时:

// Add the parent menu
$wp_admin_bar->add_menu( array(
        \'title\' => \'Testing MENU\',
        \'href\' => false,
        \'id\' => \'parent_id\'
    ));

// Add the child menu $wp_admin_bar->add_menu( array( \'title\' => \'My Child Label\', \'href\' => \'#\', \'parent\' => \'parent_id\' ));

上面的代码工作得很好,正如预期的那样。但如果出于任何原因,我想添加第二个子菜单项,比如:

// Add another child menu
$wp_admin_bar->add_menu( array(
            \'title\' => \'My Child Label *\',
            \'href\' => \'#\',
            \'parent\' => \'parent_id\'
    ));

这行不通。最后一个菜单项替代第一个菜单项。我知道你想防止管理菜单中出现重复的标题,但从技术上讲,这不是重复的标题。要使其正常工作,我必须在末尾添加一个非特殊字符(a-z,a-z,0-9),如下所示:

// Add another child menu
$wp_admin_bar->add_menu( array(
            \'title\' => \'My Child Label *1\',
            \'href\' => \'#\',
            \'parent\' => \'parent_id\'
    ));

看起来,检查重复标签的逻辑是从标题末尾去掉任何非字母数字字符,然后进行比较。有人知道这是为什么吗?我想不出任何理由不考虑整个标题。

有什么想法吗?

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

您没有声明“id”密钥。如果没有,id将默认为“title”值的净化版本,因此您可以覆盖。

声明一个唯一的id元素,您应该是金色的。

也就是说,add_node 现在是实现这一目标的首选方法。

结束

相关推荐

ADD_TIME_SUPPORT(‘admin-bar’)导致致命错误

我正在努力学习更多关于主题开发的知识,所以我创建了自己的主题,除了添加functions.php 并尝试用一些简单的方法进行更新,如:<?php add_theme_support(\'admin-bar\', array(\'menus\')); ?> 我明白了Server 500 ERROR 我无法访问Wordpress的任何部分,甚至连仪表板都无法访问。但一旦我删除functions.php 和刷新页面我的Wordpress又回来了,工作顺利。有什么神秘的fu