Odpytywanie pól danych 'wrażliwych'
Schemat GraphQL musi zachować równowagę między polami publicznymi a prywatnymi, aby uniknąć ujawniania prywatnych informacji w publicznym API.
Domyślnie wszystkie pola schematu GraphQL mogą uzyskiwać dostęp wyłącznie do danych publicznych. Na przykład posts może pobierać tylko posty o statusie "publish".
Ponadto możemy dodać do schematu pola danych "wrażliwych" oraz pola wejściowe, przeznaczone wyłącznie do użytku przez administratora, włączone dla konkretnego custom endpointu lub persisted query, które mogą również pobierać prywatne dane.
Na przykład argument pola posts(filter:) będzie zawierał dodatkowe pole wejściowe status, które pozwala nam pobierać niepublikowane posty (np. posty o statusie "pending", "draft" lub "trash") dla dowolnego użytkownika. Podobnie schemat udostępni pole Post.status, aby umożliwić wizualizację tych danych.
Lista elementów danych "wrażliwych"
Poniższe elementy (między innymi) są domyślnie traktowane jako dane prywatne:
User:
emailrolescapabilitiesmetaKeys
Custom Posts:
statuswpAdminEditURLhasPasswordpasswordrawContentrawTitlerawExcerptmetaKeys
Comments:
statusrawContentmetaKeys
Taxonomies:
metaKeys
Custom Post Mutations:
- input
authorBy
Menu Items:
rawTitle
Nadpisywanie domyślnej konfiguracji
Elementy wymienione powyżej mogą zostać upublicznione.
Na stronie Ustawień, w odpowiedniej zakładce dla każdego z nich, znajduje się pole wyboru umożliwiające skonfigurowanie, czy traktować je jako "wrażliwe" czy "normalne":

Sprawdzanie elementów danych "wrażliwych" za pomocą introspekcji schematu
Właściwość isSensitiveDataElement jest dodawana do pola extensions podczas introspekcji schematu. Aby sprawdzić, które elementy danych schematu są "wrażliwe", wykonaj tę query:
query ViewSensitiveDataElements {
__schema {
types {
name
fields {
name
extensions {
isSensitiveDataElement
}
args {
name
extensions {
isSensitiveDataElement
}
}
}
inputFields {
name
extensions {
isSensitiveDataElement
}
}
enumValues {
name
extensions {
isSensitiveDataElement
}
}
}
}
}Następnie wyszukaj wpisy z "isSensitiveDataElement": true w wynikach.
Dodawanie elementów danych "wrażliwych" do endpointów
Dodawanie elementów danych "wrażliwych" do schematu można skonfigurować w następujący sposób, w kolejności priorytetu:
Tryb specyficzny dla custom endpointu lub persisted query, zdefiniowany w konfiguracji schematu

Tryb domyślny, zdefiniowany w Ustawieniach
Jeśli konfiguracja schematu ma wartość "Default", zostanie użyty tryb zdefiniowany w Ustawieniach:

Kiedy używać
Używaj zawsze, gdy dozwolone jest ujawnianie prywatnych informacji, na przykład podczas budowania statycznej strony internetowej, pobierania danych z lokalnej instancji WordPress (tj. nie publicznego API).