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

WordPress自定义REST端点浏览器可访问但WP_REST_Request返回404

问题原因

  • 内部调用WP_REST_Request不需要携带/wp-json前缀:这个前缀是WordPress给外部HTTP访问REST接口用的统一入口前缀,内部路由匹配直接用你注册时的命名空间+路由路径即可。
  • 路由匹配要求路径完全一致:你注册的路由是/infos/(末尾带斜杠),调用时路径末尾也要带斜杠才能正确匹配。

修复方案

把你发起请求的代码中,实例化WP_REST_Request的第二个参数修改即可,修正后完整代码:

<?php
// 去掉/wp-json前缀,末尾加上斜杠和注册的路由保持一致
$request = new WP_REST_Request( 'GET', '/pluginrifa/v2/infos/' );
$request->set_query_params( [ 'rifa' => 140 ] );
$response = rest_do_request( $request );
$server = rest_get_server();
$data = $server->response_to_data( $response, false );
$json = wp_json_encode( $data );
          
$obj = json_decode($json);

其他排查项

如果修改后还是报错,可以检查两个场景:

  • 调用rest_do_request的时机必须晚于rest_api_init钩子执行:如果你的请求代码直接写在插件加载初期、或者主题functions.php的顶层作用域,此时自定义路由还没注册,就会报路由不存在,你可以把请求逻辑放到init或更晚的钩子中执行。
  • 清空站点的路由缓存、对象缓存后再测试。

内容的提问来源于stack exchange,提问作者Diogenes Oliveira Junior

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.02 17:54:02