由 add_user_meta() 函数说一说 WordPress 的存储方式
14
2022-03-08
今天有个网友问我一个问题:
// 给用户id为2的用户插入一个名称为 maometa ,数据为 ... 的数据 add_user_meta( 2, 'maometa', array('ID'=>'123') ); // 这是获取用户id为2 名称为 maometa 的数据 $maometa = get_user_meta( 2, 'maometa' ); // 这是又想给这个数组中添加了一个元素 $maometa['time'] = '2019'; // 又更新到数据表中了 update_user_meta( 2, 'maometa', $maometa ); // 问题来了: //网友说,正常存储后应该是这样: array( 'ID'=>123, 'time'=>2019 ); // 但是打印出来其实是这样的: Array( [0]=>array( 'ID'=>123, 'time'=>2019 ) );
打开数据表,看看这组数据在 WordPress 中是怎么存储的。
// 执行 add_user_meta( 2, 'maometa', array('ID'=>'123'), true ); // 数据库中显示 a:1:{s:2:"ID";s:3:"123";}
解释一下:
a
后面的 1,表示一共有 1 个数组元素。
大括号里面的数据,表示这个数组元素的 key
和 value
// 执行 add_user_meta( 2, 'maometa', array('ID'=>'123','time'=>'2019'), true ); // 数据库 a:2:{s:2:"ID";s:3:"123";s:4:"time";s:4:"2019";}
同理,a
后面的 2 就是一共有 2 个数组元素了。
由此可见,WordPress
中保存数据如果是字符串,则直接保存;如果是数组,则把数组转化为字符串保存。
而且,get_user_meta()
函数获取到的也是二维数组,不可以直接 $maometa['time']
以这样的形式添加。一般给用户添加多个用户自定义字段时,会创建多个自定义字段,而不是用数组的方式添加;因为 WordPress
没有给出对应的函数。当然,如果非要这样也可以,只是会麻烦很多。
另外,update_user_meta()
这个函数,是更新用户自定义字段的函数,这里的更新指的是将现有数据替换掉原来的数据,而不是在原来的数据基础上追加现有数据。
最后,这里有 update_user_meta() 函数的详细介绍。
本文由 猫斯基 原创发布。
著作权均归用户本人所有。独家文章转载,请联系本站管理员。获得授权后,须注明本文地址! 本文地址:https://www.maosiji.com/wordpress_add_user_meta_2.html