web-dev-qa-db-fra.com

WP REST API: Ordre messages par méta valeur (acf)?

Je demande des publications avec l'API WP REST et je dois les trier en fonction d'un champ ACF. Sa valeur représente une date (numérique, format de date jQuery yymmdd). Je sais comment le faire avec un WP_Query normal et essayé de faire la même chose en utilisant l'api de repos:

mydomain.com/wp-json/wp/v2/posts?filter[orderby]=meta_value_num&filter[meta_key]=my_field_name&filter[order]=DESC

En fait, j'utilise un type de message personnalisé qui est enregistré avec l'api de repos et tout le reste fonctionne parfaitement, donc je pense que ce n'est pas un problème spécifique au cpt?

Mais les publications apparaissent dans l’ordre par défaut (leur date de création, du plus récent au plus ancien). Qu'est-ce que je rate? Ce paramètre orderby n'est-il pas pris en charge par l'API restante? Si oui, comment puis-je le mettre en œuvre moi-même?

Des solutions de rechange, des suggestions? Vraiment à la recherche d'une solution! Merci pour toutes les astuces!

1
Mauro Bringolf

Je suppose que vous n'avez pas exposé meta_key et meta_value à l'API REST avec le filtre rest_query_vars, vous devriez donc le faire:

function my_add_meta_vars ($current_vars) {
    $current_vars = array_merge ($current_vars, array ('meta_key', 'meta_value'));
    return $current_vars;
}
add_filter ('rest_query_vars', 'my_add_meta_vars');

Ensuite, vous pouvez faire référence à meta_key et meta_value dans votre requête.

Sachez que cela expose évidemment toutes vos métadonnées de publication à l'API, ce qui peut avoir des implications en matière de sécurité. Je crois que c'est pourquoi il n'est pas activé par défaut.

1
iguanarama