将用户名显示为父菜单项

时间:2017-10-09 作者:Randomer11

使用此代码:

add_filter( \'wp_nav_menu_items\', \'my_custom_menu_item\');
function my_custom_menu_item($items)
{
    if(is_user_logged_in())
    {
        $user=wp_get_current_user();
        $name=$user->display_name; // or user_login , user_firstname, user_lastname
        $items .= \'<li><a href="">Welcome \'.$name.\'</a></li>\';
    }
    return $items;
}
我可以在导航中显示当前登录用户的显示名称,但它会替换当前菜单项。

我需要什么才能使显示名称成为父项,然后我可以使用wordpress菜单系统来显示子项?我想我需要菜单中的某种占位符,如#place\\u holder#,但我不确定如何进入该阶段。

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

对我来说很好,没有任何东西被替换,只是附加到导航中。你确定这不仅仅是一个造型问题吗?您是否查看了文档源以检查它是否真的正在替换其他菜单项?

您将其作为父项的确切含义是什么?你想转身吗

<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;
}
Thewp_nav_menu_objects 过滤器允许我们在项目转换为HTML之前对其进行处理。您必须在菜单中添加一个显示“##currentuser##”的项目。如果用户已登录,此菜单项随后将显示其姓名。如果是匿名用户,菜单项及其子菜单将从导航中删除。

SO网友:abhishek yadav

//下面是显示当前或登录用户名以显示其姓名的简单代码//just code do widget section add php code widget where you want然后添加以下//代码

user\\u login))。\'
\';?>

结束

相关推荐

Odd spacing in Navigation Bar

我正在重新设计my website, 我很难找到是什么导致导航项目之间的间距(我假设是边距)。我一直在钻研chrome开发工具,但我在任何地方都找不到导致它的原因。请注意,当您在项目之间悬停时,项目之间会有一个明显的白色条带。