Blog

⭐️ Etiketler ve kategoriler için yeni mutations, medya için geliştirilmiş mutations ve Polylang ile güçlendirilmiş entegrasyon içeren v4.2 yayınlandı (PRO)

Leonardo Losoviz
Yazan: Leonardo Losoviz ·

Gato GraphQL v4.2 yayınlandı. Değişikliklerin tam listesi için GitHub'daki sürüm notlarını inceleyin.

Aşağıda en önemli yeni özellikler yer almaktadır.

Etiketler ve kategoriler için mutations eklendi

Yeni eklenen mutations ile gönderi etiketleri ve kategorilerini oluşturmak, güncellemek ve silmek artık mümkündür:

  • PostCategory.delete
  • PostCategory.update
  • PostTag.delete
  • PostTag.update
  • Root.createPostCategory
  • Root.createPostTag
  • Root.deletePostCategory
  • Root.deletePostTag
  • Root.updatePostCategory
  • Root.updatePostTag

Ayrıca yeni eklenen mutations ile özel etiketler ve kategoriler için de:

  • GenericCategory.delete
  • GenericCategory.update
  • GenericTag.delete
  • GenericTag.update
  • Root.createCategory
  • Root.createTag
  • Root.deleteCategory
  • Root.deleteTag
  • Root.updateCategory
  • Root.updateTag

Bu query, gönderi etiketi terimlerini oluşturur, günceller ve siler:

mutation CreateUpdateDeletePostTags {
  createPostTag(input: {
    name: "Some name"
    slug: "Some slug"
    description: "Some description"
  }) {
    status
    errors {
      __typename
      ...on ErrorPayload {
        message
      }
    }
    category {
      ...PostTagData
    }
  }
 
  updatePostTag(input: {
    id: 1
    name: "Some updated name"
    slug: "Some updated slug"
    description: "Some updated description"
  }) {
    status
    errors {
      __typename
      ...on ErrorPayload {
        message
      }
    }
    category {
      ...PostTagData
    }
  }
 
  deletePostTag(input: {
    id: 1
  }) {
    status
    errors {
      __typename
      ...on ErrorPayload {
        message
      }
    }
  }
}
 
fragment PostTagData on PostTag {
  id
  name
  slug
  description
}

Bu query, gönderi kategorisi terimlerini oluşturur, günceller ve siler:

mutation CreateUpdateDeletePostCategories {
  createPostCategory(input: {
    name: "Some name"
    slug: "Some slug"
    description: "Some description"
  }) {
    status
    errors {
      __typename
      ...on ErrorPayload {
        message
      }
    }
    category {
      ...PostCategoryData
    }
  }
 
  updatePostCategory(input: {
    id: 1
    name: "Some updated name"
    slug: "Some updated slug"
    description: "Some updated description"
  }) {
    status
    errors {
      __typename
      ...on ErrorPayload {
        message
      }
    }
    category {
      ...PostCategoryData
    }
  }
 
  deletePostCategory(input: {
    id: 1
  }) {
    status
    errors {
      __typename
      ...on ErrorPayload {
        message
      }
    }
  }
}
 
fragment PostCategoryData on PostCategory {
  id
  name
  slug
  description
  parent {
    id
  }
}

Bu query, özel bir some-tag-taxonomy etiketi için etiket terimlerini oluşturur, günceller ve siler:

mutation CreateUpdateDeleteTags {
  createTag(input: {
    taxonomy: "some-tag-taxonomy",
    name: "Some name"
    slug: "Some slug"
    description: "Some description"
  }) {
    status
    errors {
      __typename
      ...on ErrorPayload {
        message
      }
    }
    category {
      ...TagData
    }
  }
 
  updateTag(input: {
    id: 1
    taxonomy: "some-tag-taxonomy"
    name: "Some updated name"
    slug: "Some updated slug"
    description: "Some updated description"
  }) {
    status
    errors {
      __typename
      ...on ErrorPayload {
        message
      }
    }
    category {
      ...TagData
    }
  }
 
  deleteTag(input: {
    id: 1
    taxonomy: "some-tag-taxonomy"
  }) {
    status
    errors {
      __typename
      ...on ErrorPayload {
        message
      }
    }
  }
}
 
fragment TagData on Tag {
  id
  name
  slug
  description
}

Bu query, özel bir some-cat-taxonomy kategorisi için kategori terimlerini oluşturur, günceller ve siler:

mutation CreateUpdateDeleteCategories {
  createCategory(input: {
    taxonomy: "some-cat-taxonomy",
    name: "Some name"
    slug: "Some slug"
    description: "Some description"
  }) {
    status
    errors {
      __typename
      ...on ErrorPayload {
        message
      }
    }
    category {
      ...CategoryData
    }
  }
 
  updateCategory(input: {
    id: 1
    taxonomy: "some-cat-taxonomy"
    name: "Some updated name"
    slug: "Some updated slug"
    description: "Some updated description"
  }) {
    status
    errors {
      __typename
      ...on ErrorPayload {
        message
      }
    }
    category {
      ...CategoryData
    }
  }
 
  deleteCategory(input: {
    id: 1
    taxonomy: "some-cat-taxonomy"
  }) {
    status
    errors {
      __typename
      ...on ErrorPayload {
        message
      }
    }
  }
}
 
fragment CategoryData on Category {
  id
  name
  slug
  description
  parent {
    id
  }
}

Mevcut bir medya öğesinin ekini kullanarak yeni medya öğesi oluşturma

createMediaItem mutation'ı artık mevcut bir medya öğesiyle aynı eki kullanarak yeni bir medya öğesi oluşturabilmektedir (yani dosyayı diskte çoğaltmadan):

mutation {
  createMediaItem(input: {
    from: {
      mediaItemBy: {
        id: 337
      }
    }
  }) {
    status
    errors {
      __typename
      ...on ErrorPayload {
        message
      }
    }
    mediaItem {
      id  # New media item created
      src # Same attachment as the provided media item
    }
  }
}

[PRO] Etiket ve kategori mutations'larında Polylang dilini tanımlama

Polylang entegrasyonu ile bir etiket veya kategori oluştururken (yukarıya bakınız) dilini hemen belirlemek için polylangLanguageBy girdisi kullanılabilir.

Örneğin bu query, bir gönderi kategorisi oluşturur ve dilini İspanyolca olarak tanımlar:

mutation {
  createPostCategory(input: {
    name: "Noticias"
    polylangLanguageBy: { code: "es" }
  }) {
    status
    errors {
      __typename
      ...on ErrorPayload {
        message
      }
    }
    category {
      polylangLanguage {
        locale
      }
      name
    }
  }
}

[PRO] Medya Öğeleri için Polylang Mutations'ları Eklendi

PRO modülü Polylang Mutations, Polylang eklentisiyle entegrasyon için mutations sağlar.

GraphQL şeması şu amaçlarla mutations ile genişletilmiştir:

  • Medya öğeleri için dil belirleme ve
  • Aralarındaki ilişkileri tanımlama (yani bir medya öğeleri kümesinin birbirinin çevirisi olduğunu belirtme).
MutationAçıklama
polylangSetMediaItemLanguageMedya öğesinin dilini ayarlar.
polylangSaveMediaItemTranslationAssociationMedya öğesi için çeviri ilişkilendirmesini ayarlar.

Örneğin aşağıdaki query, 3 medya öğesi için dili (İngilizce, İspanyolca ve Fransızca olarak) tanımlar ve ardından bu 3 medya öğesinin birbirinin çevirisi olduğunu belirtir:

mutation {
  mediaItem1: polylangSetMediaItemLanguage(input: {id: 1007, languageBy: { code: "en" }}) {
    status
    errors {
      __typename
      ...on ErrorPayload {
        message
      }
    }
  }
  mediaItem2: polylangSetMediaItemLanguage(input: {id: 204, languageBy: { code: "es" }}) {
    status
    errors {
      __typename
      ...on ErrorPayload {
        message
      }
    }
  }
  mediaItem3: polylangSetMediaItemLanguage(input: {id: 377, languageBy: { code: "fr" }}) {
    status
    errors {
      __typename
      ...on ErrorPayload {
        message
      }
    }
  }
  polylangSaveMediaItemTranslationAssociation(input: {
    ids: [1007, 204, 377]
  }) {
    status
    errors {
      __typename
      ...on ErrorPayload {
        message
      }
    }
  }
}

[PRO] Varlıkları Polylang'ın varsayılan diline göre filtreleme

polylangLanguagesBy filtresinde DEFAULT enum değeri sağlanarak varlıkları Polylang'da ayarlanan varsayılan dile göre filtrelemek artık mümkündür:

{
  posts(
    filter: {
      polylangLanguagesBy: {
        predefined: DEFAULT
      }
    }
  ) {
    title
    polylangLanguage {
      code
    }
  }
 
  pages(
    filter: {
      polylangLanguagesBy: {
        predefined: DEFAULT
      }
    }
  ) {
    title
    polylangLanguage {
      code
    }
  }
 
  customPosts(
    filter: {
      polylangLanguagesBy: {
        predefined: DEFAULT
      }
      customPostTypes: "dummy-cpt"
    }
  ) {
    title
    polylangLanguage {
      code
    }
  }
}

[PRO] Otomasyon: GraphQL yanıtını bilgi günlüklerine kaydetme

Bir otomasyon yürütmesine ait tam GraphQL yanıtı (başarılı olup olmadığından bağımsız olarak hem WP-Cron hem de Automation Rules için) wp-content/gatographql/logs/info.log dosyasına kaydedilir.


Bültenimize abone olun

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