Uzantı

Query Functions

GraphQL sorgusu içindeki alanların değerlerini, meta-programlama yetenekleri sağlayan bir yardımcı program ve özel direktif koleksiyonu aracılığıyla değiştirin.

Logo
Target Image

Click to watch tutorial video - 12:09

GraphQL sorgusu içindeki alanların değerlerini, meta-programlama yetenekleri sağlayan bir yardımcı program ve özel direktif koleksiyonu aracılığıyla değiştirin.

Field to Input

Bir alanın değerini alın, değiştirin ve aynı sorgu içinde başka bir alana girdi olarak aktarın.

query {
  posts {
    excerpt
 
    # Referencing previous field with name "excerpt"
    isEmptyExcerpt: _isEmpty(value: $__excerpt)
 
    # Referencing previous field with alias "isEmptyExcerpt"
    isNotEmptyExcerpt: _not(value: $__isEmptyExcerpt)
  }
}

Alan Değeri Yineleme ve Değiştirme

Dizi ve nesne alanlarının değer öğelerini yinelemek ve değiştirmek için GraphQL şemasına meta direktifler ekleme:

  1. @underArrayItem
  2. @underJSONObjectProperty
  3. @underEachArrayItem
  4. @underEachJSONObjectProperty
  5. @objectClone

@underArrayItem, iç içe direktifin diziden belirli bir öğeye uygulanmasını sağlar.

Aşağıdaki sorguda, kategori adlarını içeren dizideki yalnızca ilk öğe büyük harfe dönüştürülür:

query {
  posts {
    categoryNames
      @underArrayItem(index: 0)
        @strUpperCase
  }
}

...şu sonucu üretir:

{
  "data": {
    "posts": {
      "categoryNames": [
        "NEWS",
        "sports"
      ]
    }
  }
}

Alan Üzerinde Alan

Çözümlenen alanın değeri üzerinde belirli bir alanı çalıştırmak için @applyField direktifi ekleme.

Bir alana uygulandığında, @applyField direktifi başka bir alanı (aynı tür üzerinde mevcut olan ve aynı nesneye uygulanan) çalıştırmanıza ve elde edilen değeri başka bir direktife iletmenize ya da alanın değerini geçersiz kılmanıza olanak tanır.

Aşağıdaki sorguda, nesne için Post.title alanının değeri "Hello world!" şeklindedir. _strUpperCase alanını çalıştırmak için @applyField ekleyerek:

{
  post(by: { id: 1 }) {
    title
      @passOnwards(as: "input")
      @applyField(
        name: "_strUpperCase"
        arguments: {
          text: $input
        },
        setResultInResponse: true
      )
  }
}

...alan değeri büyük harfe dönüştürülür ve şu sonuç üretilir:

{
  "data": {
    "post": {
      "title": "HELLO WORLD!"
    }
  }
}

Koşullu Alan Değiştirme

Alan üzerinde iç içe bir direktifi koşullu olarak çalıştırmak için GraphQL şemasına @if ve @unless meta direktifleri ekleme.

@if, iç içe direktiflerini yalnızca bir koşulun değeri true olduğunda çalıştırır.

Bu sorguda, "Leo" ve "Peter" kullanıcıları "özel kullanıcı" dizisinde bulundukları için adları büyük harfe dönüştürülürken "Martin" dönüştürülmez:

query {
  users {
    name
      @passOnwards(as: "userName")
      @applyField(
        name: "_inArray"
        arguments: {
          value: $userName
          array: ["Leo", "John", "Peter"]
        }
        passOnwardsAs: "isSpecialUser"
      )
      @if(
        condition: $isSpecialUser
      )
        @strUpperCase
  }
}

...şu sonucu üretir:

{
  "data": {
    "users": [
      {
        "name": "LEO"
      },
      {
        "name": "Martin"
      },
      {
        "name": "PETER"
      }
    ]
  }
}

Alan Varsayılan Değeri

Null veya boş alanlara bir değer atamak için @default direktifi ekleme.

Aşağıdaki örnekte, bir gönderinin öne çıkan görseli olmadığında featuredImage alanı null döndürür:

{
  post(by: { id: 1 }) {
    featuredImage {
      id
      src
    }
  }
}
{
  "data": {
    "post": {
      "featuredImage": null
    }
  }
}

@default kullanarak varsayılan bir görsel alabiliriz:

{
  post(by: { id: 1 }) {
    featuredImage @default(value: 55) {
      id
      src
    }
  }
}
{
  "data": {
    "post": {
      "featuredImage": {
        "id": 55,
        "src": "http://mysite.com/wp-content/uploads/my-default-image.webp"
      }
    }
  }
}

Yanıttan Alan Kaldırma

GraphQL şemasına @remove direktifi ekleme; bu direktif bir alanın çıktısını yanıttan kaldırır.

Aşağıdaki sorguda, site alan adını ve REST API uç noktasını birleştirerek HTTP isteği göndermek için URL oluştururuz. Bu bileşenlerin değerleri bizim için önemli olmadığından yanıtta gösterilmesi gerekmez ve @remove ile kaldırabiliriz:

query {
  siteURL: optionValue(name: "siteurl")
    @remove
 
  requestURL: _sprintf(
    string: "%s/wp-json/wp/v2/comments/11/?_fields=id,content,date",
    values: [$__siteURL]
  )
    @remove
 
  _sendJSONObjectItemHTTPRequest(
    input: {
      url: $__requestURL
    }
  )
}

...şu yanıtı üretir (siteURL ve requestURL alanlarının kaldırıldığına dikkat edin):

{
  "data": {
    "_sendJSONObjectItemHTTPRequest": {
      "id": 11,
      "date": "2020-12-12T04:07:36",
      "content": {
        "rendered": "<p>Btw, I really like this stuff<\/p>\n"
      }
    }
  }
}

Yanıt Hata Tetikleyicisi

GraphQL şemasına, yanıttaki errors özelliğine açıkça bir giriş eklemek için _fail global alanı ve @fail direktifi ile warnings özelliğine bir giriş eklemek için _warn global alanı ve @warn direktifi ekleme.

_fail alanı hatayı her zaman ekler; @fail direktifi ise condition bağımsız değişkenindeki koşul karşılandığında ekler:

query {
  _fail(message: "Some error")
  
  posts {
    featuredImage @fail(
      condition: IS_NULL,
      message: "The post does not have a featured image"
    ) {
      id
      src
    }
  }
  
  users {
    name @fail(
      condition: IS_EMPTY,
      message: "The retrieved user does not have a name"
    )
  }
}

All-Inclusive paketini satın al

Bireysel
$79
/yıl
“All-Inclusive” paket
Lisans: 1 alan adı
Satın Al ->
  • 1 alan adı
  • Destek
  • Ürün güncellemeleri
Kurumsal
$99
/yıl
“All-Inclusive” paket
Lisans: 3 alan adı
Satın Al ->
  • 3 alan adı
  • Destek
  • Ürün güncellemeleri
Profesyonel
$199
/yıl
“All-Inclusive” paket
Lisans: 10 alan adı
Satın Al ->
  • 10 alan adı
  • Destek
  • Ürün güncellemeleri

Lisans 1 yıllıktır (her yıl yenilenebilir). Fiyatlar USD cinsindendir.

Daha fazla alan adına mı ihtiyacınız var? Bize ulaşın

30 günlük para iade garantisi

Herhangi bir uzantıyı iade talep edebileceğiniz güvenceyle satın alın

Testimonial image

“Bu eklenti bambaşka bir seviye! Sitenizi tamamen yeni bir boyuta taşıyor ve onu güçlü bir makineye dönüştürüyor. Ne kadar çok keşfederseniz o kadar etkileniyorsunuz. Kararsızsanız, hemen alın; almazsanız sonra kendinize kızacaksınız. Dokümantasyon kendi adına konuşuyor ve son derece sağlam. Leo (geliştirici) şimdiye kadar karşılaştığım en keskin ve uyanık geliştiricilerden biri. Süper hızlı yanıt veriyor ve işini gerçekten iyi biliyor. Bu eklentinin ne kadar çok şey yapabildiğine inanılmaz derecede sevindim. Olanaklar neredeyse sonsuz; SEO sizin için önemliyse, bu araç sitenizin sıralamasını ciddi şekilde yükseltecek.”

olmate - Web Geliştirici

Bültenimize abone olun

Gato GraphQL'deki tüm güncellemelerden haberdar olun.