WordPress REST API提示“no such route”问题求助
排查WordPress REST API端点“no such route”错误的常见原因
1. 代码未被正确加载
- 确认端点注册代码的位置:如果放在主题的
functions.php,需确保当前主题处于激活状态;如果放在自定义插件,要确认插件已启用。 - 可通过调试验证钩子是否触发:在
register_update_option_endpoint函数内添加error_log('Update option endpoint registered');,开启WP_DEBUG后查看日志,若没有这条记录,说明代码未被执行。
2. 核心命名空间冲突
你使用了WordPress核心的wp/v2命名空间注册自定义路由,这可能和核心自带REST路由产生冲突,或被WordPress路由解析逻辑忽略。建议改用自定义命名空间,比如my-custom/v1:
add_action( 'rest_api_init', 'register_update_option_endpoint' ); function register_update_option_endpoint() { register_rest_route( 'my-custom/v1', '/update_option', array( 'methods' => 'POST', 'callback' => 'update_option_data', 'permission_callback' => function() { // 根据需求设置权限,比如允许管理员操作 return current_user_can('manage_options'); } ) ); } function update_option_data( $request ) { $option_name = $request->get_param( 'option_name' ); $option_value = $request->get_param( 'option_value' ); update_option( $option_name, $option_value ); return true; }
修改后访问路径变为https://www.websiteb.com/wp-json/my-custom/v1/update_option。
3. 权限回调缺失(可能间接导致路由不可访问)
虽然“no such route”是404错误,但如果路由未设置permission_callback,WordPress可能会对未授权请求隐藏路由信息。添加权限回调既能保证安全,也能避免路由被错误拦截。
4. 固定链接设置问题
WordPress REST API依赖非朴素的固定链接格式。前往后台「设置」→「固定链接」,选择除“朴素”外的任意格式(比如“文章名”),保存设置以刷新重写规则。若使用朴素固定链接,REST路由可能无法被正确解析。
5. 缓存或重写规则未刷新
- 清空网站的CDN、页面缓存(如果有),旧的路由缓存可能导致新注册的端点无法被识别。
- 手动刷新重写规则:可临时在
functions.php中添加flush_rewrite_rules();,访问一次网站后删除该代码(避免每次加载都刷新影响性能)。
6. 插件/主题冲突
- 暂时禁用所有第三方插件,切换到默认WordPress主题(如Twenty Twenty-Four),测试端点是否能正常访问。如果恢复正常,再逐个启用插件/主题,排查冲突源。
7. 请求URL或方法错误
- 仔细检查请求URL的拼写,确保域名、命名空间、路由路径完全正确,比如是否多写了斜杠或拼写错误。
- 确认请求方法为POST:你的代码只允许POST请求,若用GET或其他方法发起请求,会返回404错误。
内容的提问来源于stack exchange,提问作者Sarah McLachlane
相关产品推荐
相关产品推荐

