需要能够按元值对 REST API 自定义帖子查询的结果进行排序。
这样做有困难。
我已将我的帖子类型提供给 REST API,并且可以按日期、标题等进行排序...
但是当我尝试 Post Meta 时它不起作用。
我添加了以下代码来尝试启用该功能,但默认为按日期排序。
function my_add_meta_vars ($current_vars) {
$current_vars = array_merge ($current_vars, array('meta_key', 'meta_value'));
return $current_vars;
}
add_filter ('query_vars', 'my_add_meta_vars');
add_filter ('rest_query_vars', 'my_add_meta_vars');
我的 REST API 查询是
mysite.com/wp-json/wp/v2/hh_equipment?filter[orderby]=meta_value_num&meta_key=equipment_price&order=desc
我曾尝试按照 here 的说明进行操作,但无济于事。
运行 WordPress 4.8 并尝试在 4.7 上测试无济于事
最佳答案
引用下面的方法,
我修改了现有路由以添加一个新的 args 条目,该条目验证允许的 meta_key
值。也不需要以这种方式修改其余查询变量。
add_filter('rest_endpoints', function ($routes) {
// I'm modifying multiple types here, you won't need the loop if you're just doing posts
foreach (['some', 'types'] as $type) {
if (!($route =& $routes['/wp/v2/' . $type])) {
continue;
}
// Allow ordering by my meta value
$route[0]['args']['orderby']['enum'][] = 'meta_value_num';
// Allow only the meta keys that I want
$route[0]['args']['meta_key'] = array(
'description' => 'The meta key to query.',
'type' => 'string',
'enum' => ['my_meta_key', 'another key'],
'validate_callback' => 'rest_validate_request_arg',
);
}
return $routes;
});
REF: https://github.com/WP-API/WP-API/issues/2308
关于wordpress - WP REST API orderby meta_value,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44783932/