我正在使用高级自定义字段和ACF to REST API 插件。在我的函数文件中,我指定了自定义查询参数,以按REST请求中的ACF字段筛选自定义帖子类型:
add_filter(\'rest_product_query\', function($args) {
$fields = array(\'size\', \'color\');
foreach ($fields as $field) {
if (isset( $_GET[ $field ]) && ! empty($_GET[$field])) {
$args[\'meta_query\'][] = array(
\'key\' => $field,
\'value\' => esc_sql($_GET[$field]),
);
}
}
return $args;
});
当我在浏览器ie中直接转到REST API url时,这部分工作得非常好:
https://example.com/wp-json/acf/v3/product?per_page=100&size=large&color=blue
但是,我现在尝试使用
WP_REST_Request(), 但是,当我将自定义参数传递到调用中时,它们将被忽略。下面是该代码的外观:
$request = new WP_REST_Request(\'GET\', \'/acf/v3/product\');
$request->set_query_params(
[\'per_page\' => 100],
[\'size\' => \'large\'],
[\'color\' => \'blue\']
);
$response = rest_do_request($request);
$server = rest_get_server();
$data = $server->response_to_data($response, false);
$json = wp_json_encode($data);
echo count($data); // this returns 57 instead of the expected 15
当我直接转到URL时,会返回15个产品,但当我回显
count
的
WP_REST_Request()
回复我得到57个结果(所有产品)。如果我更改
per_page
参数,它正确地返回我限制它的结果数,因此它似乎只忽略了我在函数文件中定义的自定义参数。
有什么想法吗?谢谢