Tout savoir sur WordPress

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

// 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');

Désormais, vous pourrez réaliser des requêtes plus complexes comme :

http://monsite.fr/wp-json/wp/v2/posts?filter[meta_key]=featured&filter[meta_value]=1

Qui vous permet d’afficher les articles qui ont un custom field nommé Featured dont la valeur est 1.

Ou encore :

http://monsite.fr/wp-json/wp/v2/posts?filter[date_query][before]=2015-11-30T10:00:00
&page=2

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.

Cet article a été publié il y a 730 jours - Il n'est peut être plus à jour !

Article écrit par Maxime BJ

Développeur, bloggeur et formateur Web spécialisé WordPress. 31 ans. Grenoblois. Co-fondateur de WPChef, l’organisme de formation WordPress.

Organisateur de WPInAlps, le meetup WordPress Grenoblois. Vous pouvez me rencontrer lors d’événements tels que WordCamp Paris et Europe. Traducteur Français de l’extension Advanced Custom Fields. Également développeur d’applications web avec MeteorJs. Je m’occupe un site pour apprendre l’informatique aux débutants gratuitement.

J’aime les jeux vidéo, la rando, la bouffe bien grasse et les voyages.

2 Commentaires

Laisser un commentaire

Votre adresse de messagerie ne sera pas publiée. Les champs obligatoires sont indiqués avec *

  1. 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 :)

d2b5b988269d1896b7ea886ec72d26b8ttttttttttttttttttt