完整代码:加到 functions.php 末尾
/* ========================================
短代码:调用当前登录者名称
用法:
访客 → 显示用户的"显示名称"
访客 → 显示登录名
访客 → 显示名
访客 → 显示姓
请先登录 → 未登录时显示的文字(默认"访客")
======================================== */
add_shortcode('current_user_name', 'shan_current_user_name_shortcode');
function shan_current_user_name_shortcode($atts) {
$atts = shortcode_atts(array(
'field' => 'display_name',
'guest' => '访客',
), $atts, 'current_user_name');
if (!is_user_logged_in()) {
return esc_html($atts['guest']);
}
$user = wp_get_current_user();
$name = '';
switch ($atts['field']) {
case 'user_login':
$name = $user->user_login;
break;
case 'first_name':
$name = $user->user_firstname;
break;
case 'last_name':
$name = $user->user_lastname;
break;
case 'email':
$name = $user->user_email;
break;
case 'display_name':
default:
$name = $user->display_name;
break;
}
return esc_html($name);
}
/* PHP 直接调用函数(可选,在主题模板里用) */
function shan_get_current_user_name($field = 'display_name', $guest = '访客') {
if (!is_user_logged_in()) return $guest;
$user = wp_get_current_user();
switch ($field) {
case 'user_login': return $user->user_login;
case 'first_name': return $user->user_firstname;
case 'last_name': return $user->user_lastname;
case 'email': return $user->user_email;
default: return $user->display_name;
}
}
使用方法
短代码(文章 / 页面 / Elementor 里用)
表格
| 短代码 | 输出 |
|---|---|
【current_user_name] | 用户的显示名称(如「张三」) |
【current_user_name field="user_login"] | 登录用户名(如 zhangsan) |
【current_user_name field="first_name"] | 名 |
【current_user_name field="last_name"] | 姓 |
【current_user_name field="email"] | 邮箱 |
【current_user_name guest="请先登录"] | 未登录时显示「请先登录」 |
Elementor 里用:拖一个 Shortcode(短代码) 小部件,填 访客 即可。
未登录时显示:欢迎您,访客! 登录后显示:欢迎您,张三!
PHP 直接调用(主题模板里用)
指定字段和访客文字:
说明
- 未登录时默认显示「访客」,可用
guest参数自定义; - 所有输出都经过
esc_html()转义,安全; - 如果配合缓存插件(WP Rocket),登录用户看到的是动态页面(WP Rocket 默认对登录用户不缓存),所以名称能实时显示;访客看到的是缓存页,显示的是「访客」—— 这是正常的。










