Ders 1: WordPress Verisi Arama
WordPress'te veri aramak birçok durumda sınırlıdır ve Gato GraphQL bu yetenekleri genişletmeye yardımcı olabilir.
Bu duruma ilişkin bir örnek özel alanları (yani meta değerleri) kapsar: Gönderilere (ayrıca kullanıcılara, yorumlara ve taksonomilere) ek bilgi eklemek için özel alanlar kullanabiliriz; ancak bir anahtar kelimeyle gönderi ararken WordPress, meta değerlerin içinde arama yapmaz.
Bu nedenle Gato GraphQL'i kullanarak gönderi (ayrıca kullanıcı, yorum ve taksonomiler) aramalarını meta anahtar ve değerine göre yapabiliriz.
Örnekler
- Aşağıdaki queries'i web sitesinde saklı tutmak ve tekrar tekrar çalıştırmak için Persisted Queries olarak oluşturun
- Yalnızca wp-admin içinde ve yalnızca yöneticiye açık olmaları için
privateolarak yayımlayın - Bunları yönetmek için bir API hiyerarşisi kullanın (örneğin: tüm dahili queries'in atası olarak
internaladlı bir Persisted Query oluşturun:internal/search-posts-without-thumbnail,internal/search-users-by-locale, vb.)
Bu query, küçük resmi olan ve olmayan tüm gönderileri alır:
query {
postsWithThumbnail: posts(
filter: {
metaQuery: {
key: "_thumbnail_id",
compareBy: {
key: {
operator: EXISTS
}
}
}
}
) {
id
title
featuredImage {
id
src
}
}
postsWithoutThumbnail: posts(
filter: {
metaQuery: {
key: "_thumbnail_id",
compareBy: {
key: {
operator: NOT_EXISTS
}
}
}
}
) {
id
title
}
}Bu query, "Arjantin İspanyolcası" yerel ayarını kullanan tüm kullanıcıları alır:
query {
argentineSpanishLocaleUsers: users(
filter: {
metaQuery: {
key: "locale",
compareBy: {
stringValue: {
value: "es_AR"
operator: EQUALS
}
}
}
}
) {
id
name
locale: metaValue(key: "locale")
}
}Verileri daha hassas biçimde filtrelemek için AND ve OR ilişkilerini kullanabiliriz. Bu query, hem küçük resmi olan hem de "replace" değerine sahip özel todo_action meta'sı bulunan gönderileri alır (bu, küçük resmin değiştirilmesi gerektiği anlamına gelir):
query {
posts(
filter: {
metaQuery: [
{
relation: AND
key: "_thumbnail_id",
compareBy: {
key: {
operator: EXISTS
}
}
},
{
key: "todo_action",
compareBy: {
stringValue: {
value: "replace"
operator: EQUALS
}
}
}
]
}
) {
id
title
}
}Meta'ya göre filtreleme, standart veri öğelerinin herhangi biriyle de birleştirilebilir. Bu query, belirli bir tarihten sonra oluşturulmuş ve "wordpress" etiketiyle işaretlenmiş küçük resmi olmayan tüm gönderileri alır:
query {
posts(
filter: {
metaQuery: {
key: "_thumbnail_id",
compareBy: {
key: {
operator: NOT_EXISTS
}
}
},
dateQuery: {
after: "2020-07-01"
},
tagSlugs: [
"wordpress"
]
}
) {
id
title
tagNames
}
}Meta aramasını regex ifadeleri kullanarak da yapabiliriz. Bu query, İspanyolca yerel ayarına sahip tüm kullanıcıları arar (örneğin Arjantin için es_AR, İspanya için es_ES vb.):
query {
spanishLocaleUsers: users(filter: { metaQuery: {
key: "locale",
compareBy: {
stringValue: {
value: "es_[A-Z]+"
operator: REGEXP
}
}
}}) {
id
name
locale: metaValue(key: "locale")
}
}