Définir la liste d'autorisés/refusés pour les valeurs méta
Nous pouvons récupérer des valeurs méta pour les publications personnalisées, 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) du type correspondant :
Post.metaValuePost.metaValuesGenericCustomPost.metaValueGenericCustomPost.metaValuesUser.metaValueUser.metaValuesComment.metaValueComment.metaValuesPostTag.metaValuePostTag.metaValuesPostCategory.metaValuePostCategory.metaValuesGenericTag.metaValueGenericTag.metaValuesGenericCategory.metaValueGenericCategory.metaValues
Nous pouvons également filtrer les résultats pour les publications personnalisées, les utilisateurs, les commentaires et les taxonomies (étiquettes et catégories) en fonction des métadonnées, via le champ de saisie metaQuery.
Pour l'interrogation comme pour le filtrage, les valeurs méta peuvent être publiques ou privées. Par exemple, les métadonnées utilisateur incluent l'entrée wp_capabilities, qui est privée, tandis que description est publique. Et il y a aussi last_name, qui peut être publique ou privée selon l'application.
Le plugin Gato GraphQL n'impose pas quelles clés méta sont publiques et lesquelles sont privées ; cela doit être configuré explicitement. Par défaut, la liste des clés méta autorisées est vide.
Réponse de la valeur méta
Lors de l'interrogation d'une clé méta dont l'accès n'est pas autorisé dans la page des Paramètres correspondante, la requête renvoie une erreur.
Par exemple, en exécutant cette requête :
{
post(by: { id: 1 }) {
id
metaValue(key: "nothingHere")
}
}Retourne :
{
"errors": [
{
"message": "There is no meta with key 'nothingHere'",
"extensions": {
"type": "Post",
"id": 1,
"field": "metaValue(key:\"nothingHere\")"
}
}
],
"data": {
"post": {
"id": 1,
"metaValue": null
}
}
}Si la clé méta n'existe pas pour l'objet interrogé, ou si sa valeur est vide, la réponse est null. Sinon, la réponse est la valeur méta.
Configurer les clés méta autorisées
Ceci est la description du module "Custom Post Meta". Pour les modules Users, Comments et Taxonomies, la procédure est similaire.
Nous devons configurer la liste des clés méta pouvant être interrogées via les champs méta.
Chaque entrée peut être :
- Une regex (expression régulière), si elle est entourée de
/ou#, ou - La clé méta complète, dans les autres cas
Par exemple, l'une ou l'autre de ces entrées correspond à la clé méta "_edit_last" :
_edit_last/_edit_.*/#_edit_([a-zA-Z]*)#
Il y a 2 endroits où cette configuration peut être effectuée, par ordre de priorité :
- Personnalisé : Dans la Configuration de Schéma correspondante
- Général : Dans la page des Paramètres
Dans la Configuration de Schéma appliquée à l'endpoint, sélectionnez l'option "Use custom configuration" puis saisissez les entrées souhaitées :

Sinon, les entrées définies dans l'onglet "Schema Custom Post Meta" des Paramètres seront utilisées :

Il y a 2 comportements, "Allow access" et "Deny access" :
- Allow access : seules les entrées configurées sont accessibles, et aucune autre
- Deny access : les entrées configurées ne sont pas accessibles, toutes les autres entrées le sont
