WordPress REST API内部调用无法按作者ID筛选,外部Postman正常
解决WordPress REST API内部调用带作者参数报404的问题
问题根源
你创建WP_REST_Request实例时,错误地把查询参数?author=1拼在了端点路径里。REST服务器会将整个字符串当作端点路由匹配,但实际不存在/wp/v2/podcasts?author=1这个路由,因此返回rest_no_route的404错误。
正确实现方式
端点路径需与查询参数分离,查询参数通过set_query_params()方法单独设置:
$server = rest_get_server(); // 仅传入纯端点路径,不含查询字符串 $podcastsRequest = new WP_REST_Request( 'GET', '/wp/v2/podcasts'); // 单独传入查询参数数组 $podcastsRequest->set_query_params( array( 'author' => 1 ) ); $podcastsResponse = rest_do_request( $podcastsRequest ); $podcastsData = $server->response_to_data( $podcastsResponse, false );
原理说明
这种写法和你在Postman中直接调用带查询参数的URL逻辑一致:REST服务器先匹配/wp/v2/podcasts的路由,再解析通过set_query_params()传入的author参数,最终返回对应作者的podcasts数据。
内容的提问来源于stack exchange,提问作者Andy Holmes
相关产品推荐
相关产品推荐

