全网整合营销服务商

电脑端+手机端+微信端=数据同步管理

免费咨询热线:400-708-3566

WordPress 用户元数据判断失效的常见陷阱与修复方案

本文详解 wordpress 中 `get_user_meta()` 返回错误值的典型原因,重点指出赋值运算符 `=` 误用为比较运算符 `==` 导致逻辑始终为真,进而引发重定向失效,并提供完整、健壮的登录后跳转解决方案。

在 WordPress 开发中,使用 get_user_meta() 获取用户自定义字段(如 Formidable Forms 创建的 'info' 元数据)是常见操作。但如您所遇问题——代码始终读取到 'no',即使后台已更新为 'yes'——根本原因往往不在数据本身,而在 PHP 条件判断中的语法错误

最典型的错误出现在您的条件语句中:

if ($loggedin == true && $info = 'no') { ... }

此处的 $info = 'no' 是赋值操作(assignment),而非相等比较(comparison)。PHP 会先将字符串 'no' 赋值给 $info,再返回该值(非空字符串在布尔上下文中为 true),导致整个条件恒为真。同理,$info = 'yes' 同样执行赋值,而非判断。

✅ 正确写法必须使用严格比较运算符 ===(推荐)或松散比较 ==:

if ($loggedin && $info === 'no') { ... }
elseif ($loggedin && $info === 'yes') { ... }

此外,原始代码存在多个可优化点。以下是经过加固的生产就绪版本:

function my_logged_in_redirect() {
    // 仅对已登录用户且访问特定页面时执行(避免全站拦截)
    if (!is_page(1795) || !is_user_logged_in()) {
        return;
    }

    $user_id = get_current_user_id();
    // 显式指定 $single = true,确保返回字符串而非数组
    $info = get_user_meta($user_id, 'info', true);

    // 安全兜底:若 meta 不存在或为空,视为未填写
    if (empty($info)) {
        $info = 'no';
    }

    // 使用严格比较,避免类型隐式转换导致意外行为
    if ($info === 'no') {
        wp_redirect(home_url('/dashboard/account-information'));
        exit;
    } elseif ($info === 'yes') {
        wp_redirect(home_url('/dashboard'));
        exit;
    }
}
add_action('template_redirect', 'my_logged_in_redirect');

⚠️ 关键注意事项:

  • 务必调用 exit 或 die:wp_redirect() 仅发送 HTTP 头,不终止脚本执行;遗漏会导致后续代码运行甚至报错“headers already sent”。
  • 避免重复重定向:确保该逻辑不与其他插件或主题的重定向规则冲突(例如检查 wp_doing_ajax() 或排除后台请求)。
  • 元数据缓存问题:若更新后仍不生效,可临时添加 wp_cache_delete($user_id, 'users') 清除用户对象缓存(生产环境慎用,建议优先排查赋值错误)。
  • 调试技巧:开发阶段可加入日志辅助验证:
    error_log("User ID: {$user_id}, info meta: '" . var_export($info, true) . "'");

综上,get_user_meta() 本身极少“返回错误值”——绝大多数情况是逻辑判断被意外篡改。修正 = → ===,补充安全校验与脚本终止,即可稳定实现用户资料完善引导流程。


# php  # word  # ajax  # wordpress  # 隐式转换  # red  # 运算符  # 赋值运算符  # 比较运算符  # die  # 字符串  # 对象  # http 


相关文章: 如何在阿里云部署织梦网站?  岳西云建站教程与模板下载_一站式快速建站系统操作指南  广州建站公司哪家好?十大优质服务商推荐  建站之星价格显示格式升级,你的预算足够吗?  大连 网站制作,大连天途有线官网?  制作网站的软件下载免费,今日头条开宝箱老是需要下载怎么回事?  深圳防火门网站制作公司,深圳中天明防火门怎么编码?  Android自定义控件实现温度旋转按钮效果  如何快速生成凡客建站的专业级图册?  家具网站制作软件,家具厂怎么跑业务?  国美网站制作流程,国美电器蒸汽鍋怎么用官方网站?  如何解决ASP生成WAP建站中文乱码问题?  建站之星北京办公室:智能建站系统与小程序生成方案解析  深圳网站制作公司好吗,在深圳找工作哪个网站最好啊?  广州顶尖建站服务:企业官网建设与SEO优化一体化方案  建站之星会员如何解锁更多建站功能?  小建面朝正北,A点实际方位是否存在偏差?  宝塔建站助手安装配置与建站模板使用全流程解析  SQL查询语句优化的实用方法总结  如何在阿里云虚拟主机上快速搭建个人网站?  如何通过建站之星自助学习解决操作问题?  建站之星如何助力网站排名飙升?揭秘高效技巧  高性能网站服务器配置指南:安全稳定与高效建站核心方案  建站之星如何防范黑客攻击与数据泄露?  小自动建站系统:AI智能生成+拖拽模板,多端适配一键搭建  建站主机默认首页配置指南:核心功能与访问路径优化  义乌企业网站制作公司,请问义乌比较好的批发小商品的网站是什么?  免费ppt制作网站,有没有值得推荐的免费PPT网站?  ,怎么用自己头像做动态表情包?  如何基于云服务器快速搭建个人网站?  历史网站制作软件,华为如何找回被删除的网站?  专业的网站制作设计是什么,如何制作一个企业网站,建设网站的基本步骤有哪些?  如何获取开源自助建站系统免费下载链接?  ,在苏州找工作,上哪个网站比较好?  外贸公司网站制作,外贸网站建设一般有哪些步骤?  已有域名能否直接搭建网站?  大同网页,大同瑞慈医院官网?  如何在Windows虚拟主机上快速搭建网站?  网站制作新手教程,新手建设一个网站需要注意些什么?  宝塔建站无法访问?如何排查配置与端口问题?  c# 服务器GC和工作站GC的区别和设置  如何获取免费开源的自助建站系统源码?  网站制作企业,网站的banner和导航栏是指什么?  做企业网站制作流程,企业网站制作基本流程有哪些?  大连企业网站制作公司,大连2025企业社保缴费网上缴费流程?  如何通过二级域名建站提升品牌影响力?  网站制作知乎推荐,想做自己的网站用什么工具比较好?  成都响应式网站开发,dw怎么把手机适应页面变成网页?  php json中文编码为null的解决办法  广东企业建站网站优化与SEO营销核心策略指南 

您的项目需求

*请认真填写需求信息,我们会在24小时内与您取得联系。