wordpress使用手机号码登录
手机号码存储于 wp_usermeta 表,meta_key 值是 phone,想要使用手机号登录,可通过hook钩子 sanitize_user 用户名过滤机制,通过提交的手机号获取用户名进行登录操作。
/* * 使用手机号登录网站 * 修改WordPress用户名过滤机制,通过手机号获取用户名 * * 只登录页面有效 * 读取 wp_usermeta 表中 phone 字段 */ if( in_array($GLOBALS['pagenow'], array('wp-login.php')) && strpos($_SERVER['REQUEST_URI'], '?action=register') === FALSE && strpos($_SERVER['REQUEST_URI'], '?action=lostpassword') === FALSE && strpos($_SERVER['REQUEST_URI'], '?action=logout') === FALSE && strpos($_SERVER['REQUEST_URI'], '?action=rp') === FALSE ) { add_filter('sanitize_user', 'yang_allow_phone_login', 10, 3); } //add_filter('sanitize_user', 'yang_allow_phone_login', 10, 3); function yang_allow_phone_login($username, $raw_username, $strict) { if( !empty($raw_username) && preg_match("/^(((13[0-9]{1})|(15[0-9]{1})|(17[0-9]{1})|(18[0-9]{1}))+\d{8})$/", $raw_username) ){ global $wpdb; $user_id = $wpdb->get_var($wpdb->prepare("SELECT user_id FROM $wpdb->usermeta jw WHERE jw.meta_key='%s' AND jw.meta_value='%s'", 'phone', $raw_username)); if (empty($user_id)){ wp_die(__('ERROR: There is no user registered with that phone number.'), '用户名不正确'); }else{ if( function_exists('get_user_by') ){ include_once(ABSPATH.'wp-includes/pluggable.php'); } $user = get_user_by('id', $user_id); return $user->user_login; } }else{ return $username; } }
通过手机号注册参考:WordPress插件:后台注册通过短信验证用户手机号