本教程为《用WordPress与uni-app开发,包含所有源代码》系列教程之一。
全功能WordPress API接口工具已出
全功能WordPress API接口工具已出只为前端开发者的你设计,详情查看:Sliver Rest Wp api:全功能的WordPress api工具
前言
在前面一小节中我们开发了注册页面,在本小节中我将带领大家用WordPress开发一个注册接口。
视频
开始
创建文件
在自制的api文件夹下面创建reg.php文件,如下:

写入代码如下
<?php
//引入WP加载文件,引入之后就可以使用WP的所有函数
require( '../../../../wp-load.php' );
//允许跨域
header('Access-Control-Allow-Origin:*');
header('Access-Control-Allow-Methods:POST,GET,OPTIONS,DELETE');
header('Access-Control-Allow-Credentials: true');
header('Access-Control-Allow-Headers: Content-Type,Content-Length,Accept-Encoding,X-Requested-with, Origin');
/**
* 接收数据
* @var [type]
*/
$user_name = $_POST['user_name'];
$user_pwd = $_POST['user_pwd'];
$user_email = $_POST['user_email'];
//定义返回数组,默认先为空
$data=[];
if($user_name=''&&$user_pwd==''&&$user_email=''){
$data['code'] = 404;
$data['msg'] = '请完善注册表单!';
print_r(json_decode($data));
exit();
}
// 判断用户是否存在
if(username_exists($user_name)){
$data['code'] = 404;
$data['msg'] = '当前用户名已经存在!';
print_r(json_decode($data));
exit();
}
/**
* 检测邮箱是否正确
*/
if(!is_email($user_email)){
$data['code'] = 404;
$data['msg'] ='邮箱格式不正确!';
print_r(json_encode($data));
exit();
}
// 判断邮箱是否存在
if(email_exists($user_email)){
$data['code'] = 404;
$data['msg'] = '当前邮箱已经存在!';
print_r(json_encode($data));
exit();
}
//定义用户数据
$userdata = array(
'user_pass'=>$user_pwd,
'user_login'=>$user_name,
'user_nicename'=>$user_name,
'user_email'=>$user_email,
'display_name'=>$user_name,
);
//使用wp函数插入用户:插入成功返回用户id,失败 返回WP_Error
$is_Err = wp_insert_user($userdata);
if(is_wp_error($is_Err)){
$data['code'] = 404;
$data['msg'] = '注册失败,请稍后再试';
print_r(json_encode($data));
exit();
}
$data['code'] = 200;
$data['msg'] = '欢迎你,注册成功';
print_r(json_encode($data));
exit();
允许中文用户名注册
WordPress默认是不允许中文用户名注册的,所以这里我们需要在functions.php中添加允许中文用户名注册的代码,如下:
//允许中文名
function allowed_chinese_name ($username, $raw_username, $strict) {
$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);
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;" ))
return 1;
return 0;
}

结束
至此,注册接口就开发完成了,需要注意的是这里的接口因为没有实际测试过,也许会有什么问题,后期在uni-app中实现注册功能中的时候会完善。
[post id=18]