如何在WordPress中创建忘记密码用户端点API并自定义生成密码?
WordPress 自定义忘记密码 API 端点实现指南
1. 创建忘记密码用户端点API
要在WordPress中自定义忘记密码的REST API端点,可通过register_rest_route函数注册新路由,完整实现代码如下:
add_action('rest_api_init', function () { // 注册自定义命名空间与路由 register_rest_route( 'custom/v1', '/forgot-password', array( 'methods' => WP_REST_Server::CREATABLE, // 仅允许POST请求 'callback' => 'custom_forgot_password_callback', 'permission_callback' => '__return_true', // 允许未登录用户访问 'args' => array( 'email' => array( 'required' => true, 'type' => 'string', 'sanitize_callback' => 'sanitize_email', 'validate_callback' => function ($param) { return is_email($param); } ) ) ) ); }); function custom_forgot_password_callback($request) { $email = $request->get_param('email'); $user = get_user_by('email', $email); if (!$user) { return new WP_REST_Response( array('status' => 'error', 'message' => '该邮箱未注册'), 404 ); } // 调用密码生成函数并设置新密码 $new_password = custom_generate_password(); wp_set_password($new_password, $user->ID); // 发送新密码通知邮件(可选) wp_mail( $email, '您的WordPress账号新密码', '您的新密码为:' . $new_password . '\n请尽快登录并修改密码' ); return new WP_REST_Response( array('status' => 'success', 'message' => '新密码已发送至您的邮箱'), 200 ); }
代码说明:
- 端点路径为
/wp-json/custom/v1/forgot-password,仅接受POST请求 - 通过
args参数对邮箱输入做验证与清洗,确保输入合法 - 回调函数先校验用户是否存在,不存在则返回错误;存在则生成并设置新密码,可选发送邮件通知
2. 自定义代码生成密码
以下提供两种密码生成方案,可根据需求选择:
方案一:使用WordPress内置函数(推荐)
WordPress自带wp_generate_password函数,可安全生成符合复杂度要求的随机密码:
function custom_generate_password() { // 参数依次为:密码长度、是否含特殊字符、是否含数字、是否含大写字母、是否含小写字母 return wp_generate_password(12, true, true, true, true); }
方案二:完全自定义生成逻辑
如果需要个性化密码规则,可自行实现生成逻辑:
function custom_generate_password() { $char_pool = 'abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789!@#$%^&*()'; $password_length = 12; $password = ''; for ($i = 0; $i < $password_length; $i++) { $password .= $char_pool[rand(0, strlen($char_pool) - 1)]; } return $password; }
代码说明:
- 自定义逻辑通过指定字符池,循环随机选取字符拼接成指定长度的密码,保证复杂度
- 注意:直接向前端返回明文密码存在安全风险,优先选择邮件通知的方式传递新密码
内容的提问来源于stack exchange,提问作者utsav tilava
相关产品推荐
相关产品推荐

