WordPress添加数值型用户元数据Age被自动转为字符串的原因咨询
核心原因
- WordPress 全品类元数据(用户、文章、分类法、评论等)对应的数据库表中,
meta_value字段的固定类型为longtext,没有对数值、布尔等特殊类型做差异化存储设计,所有写入的元数据值都会统一转为文本格式存入数据库,读取时自然默认返回字符串类型。 add_user_meta函数底层写入前不会保留传入的变量类型,纯数值会直接转为对应字符串存储,只有数组/对象类型会被序列化后存入,取出时自动反序列化恢复原结构。
解决方案
你可以在读取元数据时主动做类型转换即可,示例代码如下:
// get_user_meta 第三个参数传 true,直接返回单条值而非数组 $age = (int) get_user_meta( get_current_user_id(), 'Age', true ); var_dump($age); // 输出结果为 int(20)
如果需要处理多个数值类型的元数据,也可以自行封装公共读取方法统一做类型转换,不需要修改写入逻辑。
内容的提问来源于stack exchange,提问作者Carl Rguz
相关产品推荐
相关产品推荐

