使用REST api

时间:2017-09-11 10:17:51

标签: wordpress rest wordpress-rest-api

我有一些自定义字段的注册表单,需要使用Wordpress REST api注册用户,

$('#user_register_form').submit(function(e){
    e.preventDefault();

    var form = $(this),
        rest = new DwREST();

    rest.registerUser({
        first_name: '',
        last_name:  '',
        username:   'amin',
        name    :   'amin',
        email   :   'aaaa@amin.ev',
        password:   '11111',
        // passwrod2: '11111' -confirm password field
        // custom_field1: ''
        // ....

    }, function( res ){
        console.log( res );
    });
});

用户注册工作正常但问题是我无法确认密码是否重复匹配,我搜索了很多并且没有找到要修改为/users/验证的操作

第二个问题是注册后是否可以自动登录使用REST API创建的用户?

我感谢任何帮助。

1 个答案:

答案 0 :(得分:0)

我搜索了rest-api源代码,遗憾的是我没有找到任何合适的钩子去做我需要的东西,只有一个rest_pre_insert_user钩子让它做我想做的事情有点棘手,但这是解决方法,如果有人遇到同样的问题:

add_filter('rest_pre_insert_user', function( $user, $request ){
    $params = $request->get_params();

    if( $params['password'] !== $params['password2'] ) {
        $error = new WP_Error( 'rest_no_matching_passwords', __( 'Passwords don\'t match' ), array( 'status' => 400 ) );

        foreach( $error->error_data as $data ) {
            http_response_code( $data['status'] );
        }

        header('Content-Type: application/json; charset=utf-8;');

        foreach( $error->errors as $key => $val ){
            $json = json_encode([
                'code'    => $key,
                'type'    => 'error',
                'message' => $val[0]
            ]);
        }

        die( $json );
    }

    return $user;
}, 10, 2 );

Reference