Existe-t-il des exemples de projets qui font la même chose?
Je veux pouvoir me connecter et m'inscrire pour des comptes sur mon site via l'API.
Je sais que c'est un peu exagéré, mais pourrait aider. Pour ceux qui recherchent une implémentation de l'API WP REST avec JWT, voici notre solution.
Ajoutez-le à votre 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);
}
IMHO, un meilleur moyen d'inclure la fonction supplémentaire en tant que plugin séparé. Ainsi, même si votre utilisateur a changé de thème, vos appels d'API ne seront pas affectés.
J'ai donc développé un plugin pour l'enregistrement de l'utilisateur via l'API REST dans WordPress. Mieux encore, il prend en charge la création de "client" pour WooCommerce aussi!
WP REST Utilisateur , vérifiez-le si vous le souhaitez.
Il existe de nombreux exemples d’enregistrement d’utilisateurs utilisant l’API WP REST et l’implémentation du serveur OAuth pour WP API http: //oauth1.wp- api.org/ .
Je suis sûr qu'il y a moins de 6 mois lorsque vous avez posté votre article, mais voici quelques excellents exemples qui vous permettront de démarrer.
Il y a aussi quelques plugins qui commencent à faire surface.