Valeurs meta
Pour récupérer et filtrer par valeurs meta, leurs clés meta doivent être ajoutées à la liste d'autorisation.
Nous pouvons récupérer des valeurs meta pour les custom posts, les utilisateurs, les commentaires et les taxonomies (étiquettes et catégories), en interrogeant les champs metaValue (pour une valeur unique) et metaValues (pour un tableau de valeurs) depuis le type correspondant :
Post.metaValuePost.metaValuesGenericCustomPost.metaValueGenericCustomPost.metaValuesUser.metaValueUser.metaValuesComment.metaValueComment.metaValuesPostTag.metaValuePostTag.metaValuesPostCategory.metaValuePostCategory.metaValuesGenericTag.metaValueGenericTag.metaValuesGenericCategory.metaValueGenericCategory.metaValues
Interroger plusieurs valeurs meta à la fois
Nous pouvons interroger plusieurs entrées meta sous forme d'objet JSON, via le champ meta (pour les mêmes types que ci-dessus).
L'objet JSON contient :
- Clé : la clé meta
- Valeur : une liste de valeurs (si la valeur meta est un scalaire, elle est récupérée sous forme de liste à 1 élément)
Interroger les clés meta
Nous pouvons obtenir la liste de toutes les clés meta autorisées dans l'entité, via le champ metaKeys (pour les mêmes types que ci-dessus).
Ce champ est un élément de données « sensible ».
Filtrer par meta
Les custom posts, commentaires, utilisateurs et taxonomies (étiquettes et catégories) peuvent également être filtrés par meta, en utilisant l'input metaQuery.
Cet input offre une amélioration par rapport à la façon dont les arguments meta_query sont fournis (aux fonctions get_posts, get_users, etc.), dans le sens où les validations de type sont strictement appliquées dans le schéma GraphQL, et seules les combinaisons qui ont du sens sont exposées.
Cela est accompli en utilisant le champ input « oneof » compareBy, qui offre 4 possibilités. Selon l'option choisie, différents opérateurs peuvent être utilisés pour la comparaison :
Input compareBy | Opérateurs possibles |
|---|---|
1. key | EXISTSNOT EXISTS |
2. numericValue | =!=>>=<\<= |
3. stringValue | =!=LIKENOT LIKEREGEXPNOT REGEXPRLIKE |
4. arrayValue | INNOT INBETWEENNOT BETWEEN |
De plus, lors d'une comparaison par key, il n'est pas nécessaire de fournir l'input value.
Nous pouvons passer plusieurs éléments sous metaQuery, et décider d'effectuer un AND ou un OR de leurs conditions en passant l'input relation sur le premier élément de la liste.