对我来说很好,没有任何东西被替换,只是附加到导航中。你确定这不仅仅是一个造型问题吗?您是否查看了文档源以检查它是否真的正在替换其他菜单项?
您将其作为父项的确切含义是什么?你想转身吗
<li><a href="">Item</a></li>
进入
<li><a href="">Welcome $user</a>
<ul>
<li><a href="">Item</a></li>
</ul>
</li>
最后呢?
更改菜单并使其变得简单(&;可维护的,也许您可以使用以下内容:
add_filter( \'wp_nav_menu_objects\', \'my_custom_menu_item\');
function my_custom_menu_item($items) {
$remove_childs_of = array();
foreach($items as $index => $item) {
if($item->title == "##currentuser##") {
if(is_user_logged_in()) {
$user=wp_get_current_user();
$name=$user->display_name; // or user_login , user_firstname, user_lastname
$items[$index]->title = $name;
}
else {
array_push($remove_childs_of, $item->ID);
unset($items[$index]);
}
}
if(!empty($remove_childs_of) && in_array($item->menu_item_parent, $remove_childs_of)) {
array_push($remove_childs_of, $item->ID);
unset($items[$index]);
}
}
return $items;
}
The
wp_nav_menu_objects
过滤器允许我们在项目转换为HTML之前对其进行处理。您必须在菜单中添加一个显示“##currentuser##”的项目。如果用户已登录,此菜单项随后将显示其姓名。如果是匿名用户,菜单项及其子菜单将从导航中删除。