WordPress Api Pssing электронной почты аргумент - PullRequest
1 голос
/ 24 января 2020

как получить почту с маршрута отдыха? Я хочу зарегистрировать пользователя с помощью register_rest_route. Мне нужны три аргумента из маршрута API (имя пользователя, пароль, адрес электронной почты). Каково истинное регулярное выражение для аргумента электронной почты?

add_action('rest_api_init', function () {
register_rest_route('user/v2', 'register/(?P<name>[a-zA-Z0-9-]+)/(?P<password>[a-zA-Z0-9-]+)/(?P<email>[a-zA-Z0-9-]+)', [
    'method' => 'PUT',
    'callback' => 'user_create_callback',
    'args' => [
        'nema', 'email', 'password'
    ]

]);
});

function user_create_callback($args)
{
    //smoe validation for entries here
    wp_create_user( $args['name'], $args['password'], $args['email'] );
    return ['status' => 'user created successfuly'];
}

1 Ответ

1 голос
/ 24 января 2020

Насколько я вижу, в вашем коде есть несколько проблем.

  1. У вас есть опечатка в args - nema => name
  2. Вы используете HTTP-метод PUT, и мы обычно используем его для обновления; при создании объекта REST мы обычно используем POST. (Вы также можете использовать WP_REST_SERVER::CREATABLE константа
  3. Вы передаете свои аргументы через Строка запроса вместо использования тела запроса (данные формы)
  4. Для проверки адрес электронной почты, вы можете просто использовать функцию 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'];
}

?>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...