首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Wordpress REST API for user注册(注册)

Wordpress REST API for user注册(注册)
EN

Stack Overflow用户
提问于 2017-04-26 01:51:01
回答 2查看 8.7K关注 0票数 2

有没有可能创建一个注册表单,可以通过WP REST API的工作,使访问者能够创建我的网站上的帐户?

我可以创建这样一个表单,并使用它来创建新用户。当我以管理员身份登录时,这与wp_rest nonce一起工作。

但是,如果有未登录的访问者,相同的表单当然不起作用。我认为这是一个认证问题。你能给出一个大概的想法吗?我如何才能让访问者能够注册REST API?

EN

回答 2

Stack Overflow用户

发布于 2018-05-01 01:57:47

希望你已经找到了答案!

如果没有,只需将以下代码粘贴到您的主题的function.php中,它应该像charm.The一样工作,以下代码应通过REST API将用户注册添加到您的WordPress网站。它支持“订阅者”和“客户”的注册。源代码也可以在Github上找到。

将其添加到您的function.php

代码语言:javascript
复制
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);
}

我的天,一个更好的方式是将附加功能作为一个单独的插件包含进来。因此,即使您的用户更改了主题,您的api调用也不会受到影响。

因此,我开发了一个插件,用于在WordPress中通过REST API进行用户注册。更棒的是,它还支持为WooCommerce创建“客户”!

WP REST User,如果你想的话,去看看。

票数 4
EN

Stack Overflow用户

发布于 2017-06-14 19:00:45

您可以使用这两个插件来实现以下功能:

WordPress JSON API插件

JSON API用户

这两个插件将帮助获得工作,done.You将需要随机数ID来调用注册应用编程接口,这将由插件提供。

this将解释它是如何工作的!

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/43617707

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档