Definiowanie listy dozwolonych/zabronionych dla wartości meta
Możemy pobierać wartości meta dla niestandardowych postów, użytkowników, komentarzy i taksonomii (tagów i kategorii), odpytując pola metaValue (dla pojedynczej wartości) i metaValues (dla tablicy wartości) z odpowiedniego typu:
Post.metaValuePost.metaValuesGenericCustomPost.metaValueGenericCustomPost.metaValuesUser.metaValueUser.metaValuesComment.metaValueComment.metaValuesPostTag.metaValuePostTag.metaValuesPostCategory.metaValuePostCategory.metaValuesGenericTag.metaValueGenericTag.metaValuesGenericCategory.metaValueGenericCategory.metaValues
Możemy również filtrować wyniki dla niestandardowych postów, użytkowników, komentarzy i taksonomii (tagów i kategorii) na podstawie meta, za pomocą pola wejściowego metaQuery.
Zarówno podczas odpytywania, jak i filtrowania, wartości meta mogą być publiczne lub prywatne. Na przykład meta użytkownika zawiera wpis wp_capabilities, który jest prywatny, podczas gdy description jest publiczny. Jest też last_name, który może być publiczny lub prywatny w zależności od aplikacji.
Wtyczka Gato GraphQL nie narzuca, które klucze meta są publiczne, a które prywatne; musi to być jawnie skonfigurowane. Domyślnie lista dozwolonych kluczy meta jest pusta.
Odpowiedź wartości meta
Podczas odpytywania klucza meta, do którego dostęp nie jest dozwolony na odpowiedniej stronie Ustawień, query zwraca błąd.
Na przykład, wykonując to query:
{
post(by: { id: 1 }) {
id
metaValue(key: "nothingHere")
}
}Zwraca:
{
"errors": [
{
"message": "There is no meta with key 'nothingHere'",
"extensions": {
"type": "Post",
"id": 1,
"field": "metaValue(key:\"nothingHere\")"
}
}
],
"data": {
"post": {
"id": 1,
"metaValue": null
}
}
}Jeśli klucz meta nie istnieje dla odpytywanego obiektu lub jego wartość jest pusta, odpowiedź wynosi null. W przeciwnym razie odpowiedź jest wartością meta.
Konfigurowanie dozwolonych kluczy meta
To jest opis modułu "Custom Post Meta". Dla modułów Users, Comments i Taxonomies procedura jest podobna.
Musimy skonfigurować listę kluczy meta, które można odpytywać za pomocą pól meta.
Każdy wpis może być:
- Wyrażeniem regularnym (regex), jeśli jest otoczony przez
/lub#, lub - Pełnym kluczem meta w przeciwnym razie
Na przykład, każdy z tych wpisów odpowiada kluczowi meta "_edit_last":
_edit_last/_edit_.*/#_edit_([a-zA-Z]*)#
Istnieją 2 miejsca, w których można dokonać tej konfiguracji, w kolejności priorytetu:
- Niestandardowa: W odpowiedniej Konfiguracji Schematu
- Ogólna: Na stronie Ustawień
W Konfiguracji Schematu zastosowanej do endpointu wybierz opcję "Use custom configuration" i wprowadź żądane wpisy:

W przeciwnym razie zostaną użyte wpisy zdefiniowane w zakładce "Schema Custom Post Meta" w Ustawieniach:

Istnieją 2 zachowania, "Allow access" i "Deny access":
- Allow access: dostępne są tylko skonfigurowane wpisy, żadne inne nie mogą być dostępne
- Deny access: skonfigurowane wpisy nie mogą być dostępne, wszystkie pozostałe wpisy mogą
