¿Hay proyectos de ejemplo que hagan lo mismo?
Quiero poder iniciar sesión y registrarme para cuentas en mi sitio a través de la API.
¿Hay proyectos de ejemplo que hagan lo mismo?
Quiero poder iniciar sesión y registrarme para cuentas en mi sitio a través de la API.
Sé que es un poco exagerado, pero podría ayudar. Para cualquiera que busque la implementación de la API REST de WP con JWT, esta es nuestra solución.
Agrégalo a tu function.php
add_action('rest_api_init', 'wp_rest_user_endpoints');
/**
* Register a new user
*
* @param WP_REST_Request $request Full details about the request.
* @return array $args.
**/
function wp_rest_user_endpoints($request) {
/**
* Handle Register User request.
*/
register_rest_route('wp/v2', 'users/register', array(
'methods' => 'POST',
'callback' => 'wc_rest_user_endpoint_handler',
));
}
function wc_rest_user_endpoint_handler($request = null) {
$response = array();
$parameters = $request->get_json_params();
$username = sanitize_text_field($parameters['username']);
$email = sanitize_text_field($parameters['email']);
$password = sanitize_text_field($parameters['password']);
// $role = sanitize_text_field($parameters['role']);
$error = new WP_Error();
if (empty($username)) {
$error->add(400, __("Username field 'username' is required.", 'wp-rest-user'), array('status' => 400));
return $error;
}
if (empty($email)) {
$error->add(401, __("Email field 'email' is required.", 'wp-rest-user'), array('status' => 400));
return $error;
}
if (empty($password)) {
$error->add(404, __("Password field 'password' is required.", 'wp-rest-user'), array('status' => 400));
return $error;
}
// if (empty($role)) {
// $role = 'subscriber';
// } else {
// if ($GLOBALS['wp_roles']->is_role($role)) {
// // Silence is gold
// } else {
// $error->add(405, __("Role field 'role' is not a valid. Check your User Roles from Dashboard.", 'wp_rest_user'), array('status' => 400));
// return $error;
// }
// }
$user_id = username_exists($username);
if (!$user_id && email_exists($email) == false) {
$user_id = wp_create_user($username, $password, $email);
if (!is_wp_error($user_id)) {
// Ger User Meta Data (Sensitive, Password included. DO NOT pass to front end.)
$user = get_user_by('id', $user_id);
// $user->set_role($role);
$user->set_role('subscriber');
// WooCommerce specific code
if (class_exists('WooCommerce')) {
$user->set_role('customer');
}
// Ger User Data (Non-Sensitive, Pass to front end.)
$response['code'] = 200;
$response['message'] = __("User '" . $username . "' Registration was Successful", "wp-rest-user");
} else {
return $user_id;
}
} else {
$error->add(406, __("Email already exists, please try 'Reset Password'", 'wp-rest-user'), array('status' => 400));
return $error;
}
return new WP_REST_Response($response, 123);
}
En mi humilde opinión, una mejor manera sería incluir la función adicional como un complemento separado. Así que incluso cuando tu usuario haya cambiado de tema, tus llamadas a la API no se verán afectadas.
Por lo tanto, he desarrollado un complemento para el registro de usuarios a través de la API REST en WordPress. Mejor aún, ¡también admite la creación de 'clientes' para WooCommerce!
Usuario de WP REST , verifíquelo si lo desea.
Hay muchos ejemplos de registro de usuarios que utilizan la API REST WP y la implementación del servidor OAuth para la API WP enlace .
Estoy seguro de que hace menos de 6 meses, cuando publicaste originalmente, pero aquí hay un par de excelentes ejemplos que te ayudarán a continuar.
También hay algunos complementos que comienzan a aparecer.
Lea otras preguntas en las etiquetas api authentication restful wp-api oauth