You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.11 14:01:13