は法の下に参照してください無駄に4.7のテストを試してみましたmysite.com/wp-json/wp/v2/hh_equipment?filter[orderby]=meta_value_num&meta_key=equipment_price&order=desc
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のクエリがあります、 私は、許可されているmeta_key値を検証する新しいargsエントリを追加するために、既存のルートを変更しました。このようにして、残りのクエリvarsも変更する必要はありません。
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
もそれを動作させるために、この[リンク](https://github.com/WP-API/WP-API/issues/2308#issuecomment-265875108)を追加する必要がありました。 '$ type = 'custom_post_type'; ($ key = $ request-> get_param( 'meta_key')){ \t $ args ['meta_key'] {の場合は、 ] = $ key; \t} \t return $ args; \t}、10,2); ' –