Definire la lista di consentiti/negati per i valori meta
Possiamo recuperare i valori meta per i post personalizzati, gli utenti, i commenti e le tassonomie (tag e categorie), interrogando i campi metaValue (per un singolo valore) e metaValues (per un array di valori) del tipo corrispondente:
Post.metaValuePost.metaValuesGenericCustomPost.metaValueGenericCustomPost.metaValuesUser.metaValueUser.metaValuesComment.metaValueComment.metaValuesPostTag.metaValuePostTag.metaValuesPostCategory.metaValuePostCategory.metaValuesGenericTag.metaValueGenericTag.metaValuesGenericCategory.metaValueGenericCategory.metaValues
Possiamo anche filtrare i risultati per i post personalizzati, gli utenti, i commenti e le tassonomie (tag e categorie) in base ai meta, tramite il campo di input metaQuery.
Sia per l'interrogazione che per il filtraggio, i valori meta possono essere pubblici o privati. Ad esempio, i meta utente includono la voce wp_capabilities, che è privata, mentre description è pubblica. E poi c'è last_name, che può essere pubblica o privata a seconda dell'applicazione.
Il plugin Gato GraphQL non impone quali chiavi meta siano pubbliche e quali private; questo deve essere configurato esplicitamente. Per impostazione predefinita, l'elenco delle chiavi meta consentite è vuoto.
Risposta del valore meta
Quando si interroga una chiave meta il cui accesso non è consentito nella corrispondente pagina delle Impostazioni, la query restituisce un errore.
Ad esempio, eseguendo questa query:
{
post(by: { id: 1 }) {
id
metaValue(key: "nothingHere")
}
}Restituisce:
{
"errors": [
{
"message": "There is no meta with key 'nothingHere'",
"extensions": {
"type": "Post",
"id": 1,
"field": "metaValue(key:\"nothingHere\")"
}
}
],
"data": {
"post": {
"id": 1,
"metaValue": null
}
}
}Se la chiave meta non esiste per l'oggetto interrogato, o se il suo valore è vuoto, la risposta è null. Altrimenti, la risposta è il valore meta.
Configurare le chiavi meta consentite
Questa è la descrizione del modulo "Custom Post Meta". Per i moduli Users, Comments e Taxonomies, la procedura è simile.
Dobbiamo configurare l'elenco delle chiavi meta che possono essere interrogate tramite i campi meta.
Ogni voce può essere:
- Una regex (espressione regolare), se è racchiusa tra
/o#, oppure - La chiave meta completa, negli altri casi
Ad esempio, una qualsiasi di queste voci corrisponde alla chiave meta "_edit_last":
_edit_last/_edit_.*/#_edit_([a-zA-Z]*)#
Ci sono 2 punti in cui questa configurazione può essere effettuata, in ordine di priorità:
- Personalizzata: Nella Configurazione di Schema corrispondente
- Generale: Nella pagina delle Impostazioni
Nella Configurazione di Schema applicata all'endpoint, seleziona l'opzione "Use custom configuration" e poi inserisci le voci desiderate:

Altrimenti, verranno utilizzate le voci definite nella scheda "Schema Custom Post Meta" delle Impostazioni:

Ci sono 2 comportamenti, "Allow access" e "Deny access":
- Allow access: solo le voci configurate sono accessibili, e nessun'altra
- Deny access: le voci configurate non sono accessibili, tutte le altre voci lo sono
