Mengquery field data "sensitif"
Skema GraphQL harus mencapai keseimbangan antara field publik dan privat, agar tidak mengekspos informasi privat dalam API publik.
Secara default, semua field dalam skema GraphQL hanya dapat mengakses data publik. Misalnya, posts hanya dapat mengambil postingan dengan status "publish".
Selain itu, kita dapat menambahkan field data "sensitif" dan input field ke dalam skema, yang dimaksudkan untuk digunakan oleh admin saja, diaktifkan untuk custom endpoint atau persisted query tertentu, yang juga dapat mengambil data privat.
Misalnya, argumen field posts(filter:) akan memuat input field tambahan status, yang memungkinkan kita mengambil postingan yang belum dipublikasikan (mis.: postingan dengan status "pending", "draft", atau "trash") untuk pengguna mana pun. Demikian pula, skema akan mengekspos field Post.status, untuk menampilkan data tersebut.
Daftar elemen data "sensitif"
Elemen-elemen berikut (di antaranya) diperlakukan sebagai data privat secara default:
User:
emailrolescapabilitiesmetaKeys
Custom Posts:
statuswpAdminEditURLhasPasswordpasswordrawContentrawTitlerawExcerptmetaKeys
Comments:
statusrawContentmetaKeys
Taxonomies:
metaKeys
Custom Post Mutations:
- input
authorBy
Menu Items:
rawTitle
Mengubah konfigurasi default
Elemen-elemen yang tercantum di atas dapat dijadikan publik.
Di halaman Settings, pada tab yang sesuai untuk masing-masing elemen, terdapat kotak centang untuk mengonfigurasi apakah akan memperlakukannya sebagai "sensitif" atau "normal":

Memeriksa elemen data "sensitif" melalui introspeksi skema
Properti isSensitiveDataElement ditambahkan ke field extensions saat melakukan introspeksi skema. Untuk mengetahui elemen data "sensitif" apa saja yang ada dalam skema, jalankan query ini:
query ViewSensitiveDataElements {
__schema {
types {
name
fields {
name
extensions {
isSensitiveDataElement
}
args {
name
extensions {
isSensitiveDataElement
}
}
}
inputFields {
name
extensions {
isSensitiveDataElement
}
}
enumValues {
name
extensions {
isSensitiveDataElement
}
}
}
}
}Kemudian cari entri dengan "isSensitiveDataElement": true dalam hasilnya.
Menambahkan elemen data "sensitif" ke endpoint
Penambahan elemen data "sensitif" ke dalam skema dapat dikonfigurasi sebagai berikut, berdasarkan urutan prioritas:
âś… Mode spesifik untuk custom endpoint atau persisted query, yang ditentukan dalam konfigurasi skema

âś… Mode default, yang ditentukan dalam Settings
Jika konfigurasi skema memiliki nilai "Default", mode yang ditentukan dalam Settings akan digunakan:

Kapan digunakan
Gunakan setiap kali mengekspos informasi privat diizinkan, seperti saat membangun situs web statis, mengambil data dari instans WordPress lokal (yaitu bukan API publik).