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

[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.

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

Article écrit par Maxime BJ

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

Co-fondateur de WPChef, la formation WordPress pour les débutants. Vous pouvez me rencontrer lors d’événements tels que les WordCamp. Traducteur Français de l’extension Advanced Custom Fields. Je m’occupe un site pour apprendre l’informatique aux débutants gratuitement.

2 Commentaires

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