php - 为什么我无法从 WP_REST_Request 访问查询参数?
问题描述
在我的博客上,我正在尝试创建一个端点以使用 ajax 加载更多文章。但是,查询字符串参数似乎没有传递给我的函数。这是我的代码,所有代码都在function.php
文件中:
add_action( 'rest_api_init', function () {
register_rest_route( 'blog', '/articles', array(
'methods' => WP_REST_Server::READABLE,
'callback' => 'load_more'
));
});
function load_more(WP_REST_Request $request) {
var_dump($request->has_valid_params());
var_dump($request->get_params());
var_dump($request);
}
这是我打电话时返回的内容/wp-json/blog/articles/?lang=en&tag=test
:
bool(true)
array(0) {}
object(WP_REST_Request)#2259 (8) {
["method":protected]=>
string(3) "GET"
["params":protected]=>
array(6) {
["URL"]=>
array(0) {
}
["GET"]=>
array(0) {
}
["POST"]=>
array(0) {
}
["FILES"]=>
array(0) {
}
["JSON"]=>
NULL
["defaults"]=>
array(0) {
}
}
["body":protected]=>
string(0) ""
["route":protected]=>
string(14) "/blog/articles"
["attributes":protected]=>
array(6) {
["methods"]=>
array(1) {
["GET"]=>
bool(true)
}
["accept_json"]=>
bool(false)
["accept_raw"]=>
bool(false)
["show_in_index"]=>
bool(true)
["args"]=>
array(0) {
}
["callback"]=>
string(9) "load_more"
}
["parsed_json":protected]=>
bool(true)
["parsed_body":protected]=>
bool(false)
}
这几乎就像在到达我的函数之前从请求对象中删除了参数一样。
解决方案
您可以通过以下方式访问查询参数WP_REST_Request::get_query_params()
:
$queryParams = $request->get_query_params();
$tag = $queryParams['tag'];
或者,您可以使用
$tag = $request->get_param('tag');
但这会按顺序合并$_POST
和$_GET
路径参数
推荐阅读
- scala - 向 Sentry Logback 添加挂钩以清理数据
- azure - 在 Kusto 中使用联合和循环运算符将多个表合并为一个表
- excel - 我们如何使用 oledb 使用长度超过 256 个字符的字符串更新 excel 中的单元格
- sql-server - SQL Server SQL Query中的Excel四分位函数
- javascript - Chrome 扩展程序:从弹出窗口访问选项卡
- javascript - 即使刷新或删除,如何在 html 中保持相同的内容
- arrays - Excel:创建一个包含 n 次出现值 x 的数组
- java - 如何通过按键在两个数字之间切换?
- php - 我想将 Array 转换为 stdobject
- javascript - 如何在 Vue Datepicker 中禁用当前日期前最多 14 天的所有日期?