Travailler avec
Travailler avecValeurs meta

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.metaValue
  • Post.metaValues
  • GenericCustomPost.metaValue
  • GenericCustomPost.metaValues
  • User.metaValue
  • User.metaValues
  • Comment.metaValue
  • Comment.metaValues
  • PostTag.metaValue
  • PostTag.metaValues
  • PostCategory.metaValue
  • PostCategory.metaValues
  • GenericTag.metaValue
  • GenericTag.metaValues
  • GenericCategory.metaValue
  • GenericCategory.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 compareByOpérateurs possibles
1. keyEXISTS
NOT EXISTS
2. numericValue=
!=
>
>=
<
\<=
3. stringValue=
!=
LIKE
NOT LIKE
REGEXP
NOT REGEXP
RLIKE
4. arrayValueIN
NOT IN
BETWEEN
NOT 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.