我试图在菜单中显示用户的“display\\u name”。因此,我创建了一个名为“#profile\\u name#”的菜单项。
当我登录时,它会工作,但它会显示“Untitled“当我没有登录时。你知道为什么吗?
function give_profile_name(){
$user=wp_get_current_user();
$name=$user->display_name;
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;
}
谢谢你
SO网友:Castiblanco
您应该首先检查用户是否已登录,执行以下操作is_user_logged_in()
, 如果是这样,您将获得用户名。
function give_profile_name(){
if ( is_user_logged_in() ) {
$user=wp_get_current_user();
$name=$user->display_name;
return $name;
} else {
return "";
}
}
您还可以更改if以检查是否返回短代码
Untitled.
if ( isset( $shortcode_tags[\'profile_name\'] ) && $shortcode_tags[\'profile_name\'] != "Untitled")