WordPress默认会认定除了英文字母、数字和标点之外的用户名都是不规范的。所以并不会允许注册。会告诉你“错误:此用户名包含无效字符,请输入有效的用户名。”
已经存在的中文名,在修改资料的时候也会发生问题:WordPress会对中文视而不见,它会认为你的用户名是空的,告诉你“不能创建登录名为空的用户。”
解决方法是:
打开你的博客对应的文件目录,可以是在线文件管理,也可以通过FTP或者SFTP等途径连接到服务器。在博客目录下打开wp-includes那个文件夹,找到formatting.php这个文件然后编辑它,摁下command+F (Windows应该是control+F)进行搜索,找到function sanitize_user( $username, $strict = false ) { 这一行,然后再下面紧挨着写一句指令$strict = false; (意思就是让WordPress不要太严肃嘛,任何用户名都是欢迎滴)然后保存就可以了。
也可以在function.php 里加入以下:
//允许中文名 function allowed_chinese_name ($username, $raw_username, $strict) { $strict = false; $username = wp_strip_all_tags( $raw_username ); $username = remove_accents( $username ); $username = preg_replace( '|%([a-fA-F0-9][a-fA-F0-9])|', '', $username ); $username = preg_replace( '/&.+?;/', '', $username ); if ($strict) { $username = preg_replace ('|[^a-zp{Han}0-9 _.-@]|iu', '', $username); } $username = trim( $username ); $username = preg_replace( '|s+|', ' ', $username ); return $username; } add_filter ('sanitize_user', 'allowed_chinese_name', 10, 3);
方法2:
function.php 添加该函数,通过直接修改数据库的方式,完成替换用户名。
//判断昵称是否存在 function jinsom_nickname_exists($nickname){ $user_query = new WP_User_Query( array ( 'meta_key' => 'nickname', 'meta_value' => $nickname, 'count_total'=>false, 'number' =>1 )); if (!empty($user_query->results)){ return true; }else{ return false; } } //更新用户名 function jinsom_update_user_login($user_id,$user_login){ global $wpdb; if($wpdb->query( "UPDATE $wpdb->users SET user_login = '$user_login' WHERE ID=$user_id;" )){ if(!jinsom_nickname_exists($user_login)){//判断用户名对应的昵称是否存在,如果不存在则自动把昵称也改为跟用户名一样的 update_user_meta($user_id,'nickname',$user_login); }else{ $rand=rand(0,999); update_user_meta($user_id,'nickname',$user_login.'_'.$rand); } return 1; }else{ return 0; } }
$rand_name=rand(100000000,999999999); 生成一个随机用户名,在 wp_insert_user() 创建该随机用户,生成一个user_id, 再由 jinsom_update_user_login($user_id,$uname); 和 wp_update_user(array(‘ID’ => $user_id)); 更新用户名。
$rand_name=rand(100000000,999999999); $userdata = array( 'user_login' => esc_sql($rand_name), 'user_pass' => $password, 'user_email' => esc_sql($email), ); $user_id = wp_insert_user( $userdata ); // On success. if ( ! is_wp_error( $user_id ) ) { jinsom_update_user_login($user_id,$uname); wp_update_user(array('ID' => $user_id)); //注册成功后,邮件发送密码 wp_mail( $email, '账户密码为', $password ); $value = array("status"=>"1","msg"=>'密码已发送邮箱!'); echo json_encode($value); } else { $value = array("status"=>"0","msg"=>'注册失败!请联系管理员!错误指令:无效id!'); echo json_encode($value); }