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

无法通过邮箱获取WooCommerce客户,API调用返回404路由错误

解决WordPress REST API "rest_no_route" 404错误(通过邮箱获取用户场景)

你遇到的这个问题挺典型的——其他REST接口(比如/products/、/orders/)都正常,唯独通过邮箱获取用户的请求返回404路由不存在,而且已经开启了Pretty Links。我给你整理几个实用的排查和解决方向:

1. 先确认接口路径和请求方法是不是错了

WordPress默认的REST API里,没有直接通过邮箱作为路由参数的端点,正确的做法是用search参数配合GET请求:

  • 正确的接口格式:GET /wp-json/wp/v2/users?search=你的邮箱地址

错误提示里的No route was found matching the URL and request method,大概率是你请求的路径或者HTTP方法和系统注册的路由不匹配,比如用了POST方法,或者写了个不存在的路径比如/wp-json/wp/v2/users/by-email/xxx@xx.com

2. 排查插件/主题的路由拦截问题

有些安全插件(比如Wordfence)或者自定义主题的代码,可能会偷偷修改或限制REST API的路由:

  • 先临时禁用所有第三方插件,再测试接口,如果正常了,就逐个启用插件找冲突的那个
  • 切换到WordPress默认主题(比如Twenty Twenty-Four),看看是不是主题的自定义代码搞的鬼

3. 刷新Pretty Links的重写规则

虽然你开了Pretty Links,但有时候配置没生效,需要手动刷新:

  • 进后台「设置」→「固定链接」,随便选个别的格式(比如「文章名」),点「保存更改」,再切回原来的设置重新保存一遍,这会强制刷新服务器的重写规则
  • 检查服务器配置:
    • Apache服务器看.htaccess文件有没有默认的WordPress重写代码(就是那段BEGIN WordPress到END WordPress的代码,没的话手动加上)
    • Nginx服务器要确保配置里有try_files $uri $uri/ /index.php?$args;这条规则,不然Pretty Links没法生效

4. 确认身份验证和权限是否到位

有时候权限不足会被伪装成路由不存在的错误:

  • 如果你是前端调用,得确保已经通过JWT、Cookie或者OAuth完成了身份验证
  • 后端调用的话,要用有list_users权限的用户(管理员、编辑默认有,订阅者没有)

5. 自己注册自定义路由(如果默认接口不够用)

要是你想要一个更直观的接口,比如/wp-json/custom/v1/users/by-email/xxx@xx.com,可以在主题的functions.php或者自定义插件里加这段代码:

add_action('rest_api_init', function () {
    // 注册自定义路由,支持邮箱格式的参数
    register_rest_route('custom/v1', '/users/by-email/(?P<email>[a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+\.[a-zA-Z]{2,})', [
        'methods' => 'GET',
        'callback' => 'get_user_by_email_rest',
        // 权限验证:只有能查看用户的角色才能调用
        'permission_callback' => function () {
            return current_user_can('list_users');
        }
    ]);
});

// 处理请求的回调函数
function get_user_by_email_rest($request) {
    $email = $request->get_param('email');
    $user = get_user_by('email', $email);
    
    if (!$user) {
        return new WP_Error('no_user_found', '找不到对应用户', ['status' => 404]);
    }
    
    return rest_ensure_response($user->data);
}

注册完就能用GET /wp-json/custom/v1/users/by-email/user@example.com来获取用户信息了。


内容的提问来源于stack exchange,提问作者Falan Abdulla

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.19 08:48:54