WordPress中如何根据登录用户是否有firstname展示不同内容
你的初步判断逻辑写法存在错误,核心问题如下
- 变量引用错误:
user_firstname不是全局独立变量,属于当前用户对象$current_user的属性,正确调用方式是$current_user->user_firstname - 运算符使用错误:判断逻辑中你用了赋值运算符
=,这会直接给变量赋值而非做相等判断,相等判断需要用==,如果是判断值非空更推荐用empty()/isset()函数 - 分支结构错误:
else关键字后不能直接接判断条件,多条件分支需要使用else if,否则会触发语法报错
完整实现代码
function show_loggedin_function( $atts ) { global $current_user, $user_login; get_currentuserinfo(); add_filter('widget_text', 'do_shortcode'); // 先判断是否已登录 if ($user_login) { // 已登录状态下判断firstname是否非空 if (!empty($current_user->user_firstname)) { // 存在firstname返回内容B,可自行替换成需要的输出内容 return 'Bienvenue <br>' . $current_user->user_firstname . ' !'; } else { // 无firstname返回内容A,可自行替换成需要的输出内容 return 'Bienvenue <br>亲爱的用户 !'; } } else { // 未登录返回原登录入口 return '<a href="' . wp_login_url() . ' ">Login</a>'; } }
补充说明:WordPress 4.5 版本之后
get_currentuserinfo()函数已被废弃,如果你使用的是新版本站点,可以将get_currentuserinfo()替换为$current_user = wp_get_current_user(),兼容性更好。
内容的提问来源于stack exchange,提问作者Clément
相关产品推荐
相关产品推荐

