显示登录的用户名在WordPress的菜单(Displaying Logged-In User Na

2019-10-24 10:26发布

我使用WordPress的与UserPro,并希望我的菜单,显示已登录用户的名字,链接到用户个人资料页面。

问题是,在我的菜单结构,“配置文件”菜单选项应该有一个包含“编辑个人资料”的子菜单,“提交”和“注销”。

这是我当前的代码:

/*earlier code, currently commented out, for function to
display username in menu using #profile_name# placeholder

function give_profile_name($atts){
echo userpro_profile_data('first_name', get_current_user_id());
}

add_shortcode('profile_name', 'give_profile_name');

add_filter( 'wp_nav_menu_objects', 'my_dynamic_menu_items' );
function my_dynamic_menu_items( $menu_items ) {
    foreach ( $menu_items as $menu_item ) {
        if ( '#profile_name#' == $menu_item->title ) {
            global $shortcode_tags;
            if ( isset( $shortcode_tags['profile_name'] ) ) {
                // Or do_shortcode(), if you must.
                $menu_item->title = call_user_func( $shortcode_tags['profile_name'] );
            }    
        }
    }

    return $menu_items;
}  

end of earlier code */

//currently in use, unlinked code

    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->user_firstname;
            $items .= '<li>'.$name.'';
        }
        return $items;
    }

    ?>

我可以反复折腾,并尝试与萤火虫的代码摆弄添加菜单下的子菜单,但是这意味着手动编辑在functions.php的所有环节,这将是乏味的。

我希望能够添加,编辑,删除,并通过WordPress的菜单很容易地重定向子菜单项。

请指教。

Answer 1:

好,我找到了解决办法(它可以被用于任何主题,以任何插件作为它仅使用核心WordPress的函数)。

在菜单中,命名要将用户的名字出现一个占位符菜单项(如:#PROFILE_NAME#,#用户#,##随意等)

现在,添加以下代码到你的孩子主题的functions.php文件:

function give_profile_name($atts){
    $user=wp_get_current_user();
    $name=$user->user_firstname; 
    return $name;
}

add_shortcode('profile_name', 'give_profile_name');

add_filter( 'wp_nav_menu_objects', 'my_dynamic_menu_items' );
function my_dynamic_menu_items( $menu_items ) {
    foreach ( $menu_items as $menu_item ) {
        if ( '#profile_name#' == $menu_item->title ) {
            global $shortcode_tags;
            if ( isset( $shortcode_tags['profile_name'] ) ) {
                // Or do_shortcode(), if you must.
                $menu_item->title = call_user_func( $shortcode_tags['profile_name'] );
            }    
        }
    }

    return $menu_items;
} 

在你使用你自己的占位符的情况下,记得在上面的代码自定义占位的名称来代替#PROFILE_NAME#。

万一道歉,我误用术语“占位”。



文章来源: Displaying Logged-In User Name in Wordpress Menu
标签: php wordpress