Meta değerleri için izin/engel listesini tanımlama
Özel gönderiler, kullanıcılar, yorumlar ve taksonomiler (etiketler ve kategoriler) için meta değerlerini, ilgili türdeki metaValue (tek bir değer için) ve metaValues (bir değer dizisi için) alanlarını sorgulayarak alabiliriz:
Post.metaValuePost.metaValuesGenericCustomPost.metaValueGenericCustomPost.metaValuesUser.metaValueUser.metaValuesComment.metaValueComment.metaValuesPostTag.metaValuePostTag.metaValuesPostCategory.metaValuePostCategory.metaValuesGenericTag.metaValueGenericTag.metaValuesGenericCategory.metaValueGenericCategory.metaValues
Ayrıca metaQuery giriş alanı aracılığıyla özel gönderiler, kullanıcılar, yorumlar ve taksonomiler (etiketler ve kategoriler) için meta bazlı sonuçları filtreleyebiliriz.
Hem sorgulama hem de filtreleme için meta değerleri genel veya özel olabilir. Örneğin, kullanıcı meta verileri özel olan wp_capabilities girişini içerirken description geneldir. Bir de last_name vardır; bu, uygulamaya bağlı olarak genel veya özel olabilir.
Gato GraphQL eklentisi hangi meta anahtarlarının genel, hangilerinin özel olduğunu belirlemez; bunun açıkça yapılandırılması gerekir. Varsayılan olarak, izin verilen meta anahtarları listesi boştur.
Meta değeri yanıtı
İlgili Ayarlar sayfasında erişimine izin verilmeyen bir meta anahtarı için sorgulama yapıldığında, sorgu bir hata döndürür.
Örneğin, bu sorguyu çalıştırmak:
{
post(by: { id: 1 }) {
id
metaValue(key: "nothingHere")
}
}Şunu döndürür:
{
"errors": [
{
"message": "There is no meta with key 'nothingHere'",
"extensions": {
"type": "Post",
"id": 1,
"field": "metaValue(key:\"nothingHere\")"
}
}
],
"data": {
"post": {
"id": 1,
"metaValue": null
}
}
}Meta anahtarı sorgulanan nesne için mevcut değilse veya değeri boşsa yanıt null olur. Aksi takdirde yanıt, meta değeridir.
İzin verilen meta anahtarlarını yapılandırma
Bu, "Custom Post Meta" modülünün açıklamasıdır. Users, Comments ve Taxonomies modülleri için prosedür benzerdir.
Meta alanları aracılığıyla sorgulanabilecek meta anahtarlarının listesini yapılandırmamız gerekir.
Her giriş şunlardan biri olabilir:
/veya#ile çevrilmişse bir regex (düzenli ifade), ya da- Aksi takdirde tam meta anahtarı
Örneğin, bu girişlerin herhangi biri "_edit_last" meta anahtarıyla eşleşir:
_edit_last/_edit_.*/#_edit_([a-zA-Z]*)#
Bu yapılandırmanın yapılabileceği öncelik sırasına göre 2 yer vardır:
- Özel: İlgili Schema Configuration'da
- Genel: Ayarlar sayfasında
Uç noktaya uygulanan Schema Configuration'da "Use custom configuration" seçeneğini seçin ve ardından istenen girişleri girin:

Aksi takdirde Ayarlar'daki "Schema Custom Post Meta" sekmesinde tanımlanan girişler kullanılır:

2 davranış vardır: "Allow access" ve "Deny access":
- Allow access: yalnızca yapılandırılmış girişlere erişilebilir, diğerlerine erişilemez
- Deny access: yapılandırılmış girişlere erişilemez, diğer tüm girişlere erişilebilir
