扫二维码与项目经理沟通
我们在微信上24小时期待你的声音
解答本文疑问/技术咨询/运营咨询/技术建议/互联网交流
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小时期待你的声音
解答本文疑问/技术咨询/运营咨询/技术建议/互联网交流