Tuto WP API Rest : Autoriser davantages de filtres pour vos requêtes
L’API Rest vous permet de récupérer facilement des données, selon la même méthodologie que la WP Query, mais certains filtres comme les meta_query et date_query sont bloqués par défaut. Voici comment les autoriser.
Ce simple Hook va vous permettre de filtrer vos requêtes GET via l’API Rest WordPress. Il suffit de l’insérer dans functions.php
[pastacode lang=”php” message=”” highlight=”” provider=”manual”]
// Add authorized filters for API
function json_api_add_filters($valid_vars){
// Ajoutez les filtres dans le tableau
$my_filters = array('meta_key', 'meta_value', 'meta_compare', 'date_query');
$valid_vars = array_merge($valid_vars, $my_filters);
return $valid_vars;
}
add_filter('rest_query_vars', 'json_api_add_filters');
[/pastacode]
Désormais, vous pourrez réaliser des requêtes plus complexes comme :
[pastacode lang=”markup” message=”” highlight=”” provider=”manual”]
http://monsite.fr/wp-json/wp/v2/posts?filter[meta_key]=featured&filter[meta_value]=1
[/pastacode]
Qui vous permet d’afficher les articles qui ont un custom field nommé Featured dont la valeur est 1.
Ou encore :
[pastacode lang=”markup” message=”” highlight=”” provider=”manual”]
http://monsite.fr/wp-json/wp/v2/posts?filter[date_query][before]=2015-11-30T10:00:00
&page=2
[/pastacode]
Qui vous permettra d’afficher les articles antérieurs à cette date. Notez que le filtre a plusieurs niveaux entre crochets []. Ce dernier exemple permet de résoudre le souci de chargement dynamique d’article et d’éviter les doublons.
2 Commentaires
Bonjour Maxime,
Merci pour ces précieuses lignes !
J’ai pu implémenter cela pour des post et aussi sur des custom post types sans soucis.
Par contre j’aimerai pour voir faire ces mêmes requêtes sur des term_meta d’une custom taxonomy !
J’ai tenter l’appel suivant :
[code]
http://monsite.fr/wp-json/wp/v2/{taxonomy_slug}?filter[meta_key]=featured&filter[meta_value]=1
[/code]
Mais ca ne semble pas fonctionner … erreur de syntaxe … ?
(PS : J’ai bien mis ‘show_in_rest’ => true dans la déclaration de le register de la custom taxonomy ;-) )
D’avance merci pour l’aide :)
très bonne question ! je n’ai jamais essayé du coup si tu trouves la réponse je veux bien que tu la poste ici ! Bon courage :)