Насколько я вижу, в вашем коде есть несколько проблем.
- У вас есть опечатка в
args
- nema
=> name
- Вы используете HTTP-метод
PUT
, и мы обычно используем его для обновления; при создании объекта REST мы обычно используем POST
. (Вы также можете использовать WP_REST_SERVER::CREATABLE
константа - Вы передаете свои аргументы через Строка запроса вместо использования тела запроса (данные формы)
- Для проверки адрес электронной почты, вы можете просто использовать функцию WordPress
is_email()
.
Собрать все вместе должно выглядеть примерно так:
<?php
add_action('rest_api_init', function () {
register_rest_route('user/v2', 'register', [
'method' => WP_REST_SERVER::CREATABLE,
'callback' => 'user_create_callback',
'args' => array (
'name' => array (
'required' => true,
'sanitize_callback' => 'sanitize_text_field'
),
'password' => array (
'required' => true,
'sanitize_callback' => 'sanitize_text_field'
),
'email' => array (
'required' => true,
'validate_callback' => 'is_email'
)
)
]);
});
function user_create_callback($args)
{
wp_create_user( $args['name'], $args['password'], $args['email'] );
return ['status' => 'user created successfuly'];
}
?>