WordPress通过usermeta的某个值获取用户ID及用户信息

2022-09-18 22:26 栏目:技术开发 查看(7643)

WordPress的数据库设计模式就是主表+辅表的方式,比如users表的辅表usermeta。WordPress的自带的12张表(以前的老版本是11张表),其中有8张表都是采用主表和辅表的方式,具体如下:

1、posts:文章表(辅表postmeta)

2、users:用户表(辅表usermeta)

3、comments:评论表(辅表commentmeta)

4、links:链接表(辅表linkmeta)

主表一般是存储各个主要内容的默认字段,如果需要自定义字段就需要辅表meta,比如增加手机号码验证登录,那么就需要把手机号码信息存储在usermeta中。在WordPress中默认提供的方法只包含了meta表的增删改查,主要如下:

1、add_metadata:增加meta,如果是user对应的就是add_user_meta。

2、update_metadata:更新meta,如果是user对应的就是update_user_meta。

3、get_metadata:获取meta,如果是user对应的就是get_user_meta。

4、delete_metadata:删除meta,如果是user对应的就是delete_user_meta。

这四种主要的方法都需要传递一个方法就是主表的主键的值,比如user就是需要传递user_id用户ID为参数。但是,通过user_meta的某个值获取用户ID及用户信息似乎没有直接提供自带的方法(也许是笔者没找到而已)。

现在有这样的需求:由于WordPress网站增加用户使用手机号码注册、登录网站,因此需要使用usermeta表存储用户的手机号码,而且在注册登录的时候需要通过手机号码反查用户的ID以及用户信息。这个时候需要自己构造一个方法:

/**
* 通过user_meta获取用户信息
* @param $meta_key user_meta类型
* @param $meta_value user_meta的值
*/
function get_user_id_by_meta($meta_key,$meta_value){
global $wpdb;
   $user=$wpdb->get_row($wpdb->prepare("SELECT * FROM $wpdb->usermeta WHERE meta_key = %s AND meta_value = %s", $meta_key, $meta_value ) );
if(empty($user)){
   return false;
}
return $user->user_id;
}

通过如上方法就可以得到usermeta的信息,其他的posts、comments、links表也是一样的道理,比如通过手机号码在usermeta中存储的meta_key为user_mobile,则可以通过某个手机号码获取到对应的用户ID,代码如下:

$user_id=get_user_id_by_meta('user_mobile','13272012225');

如果需要进一步获取用户的所有信息,可以通过get_userdata获取,代码如下:

$user=get_userdata($user_id);//获取用户信息
$user_login=$user->user_login;//获取用户登录名

至此就完成了WordPress通过user_meta的某个值获取用户ID及用户信息,同样的其他的meta数据表通过某个meta的值反向获取主表信息也可以使用一样的方法。

与我们的项目经理联系
扫二维码与项目经理沟通

我们在微信上24小时期待你的声音

解答本文疑问/技术咨询/运营咨询/技术建议/互联网交流

转载请注明出处:WordPress通过usermeta的某个值获取用户ID及用户信息 - 微构网络
分享: