Blog

⭐️ Uitgebracht v4.2 met nieuwe mutations voor tags en categorieën, verbeterde mutations voor media en verbeterde integratie met Polylang (PRO)

Leonardo Losoviz
Door Leonardo Losoviz ·

Gato GraphQL v4.2 is uitgebracht. Bekijk de release-opmerkingen op GitHub voor de volledige lijst met wijzigingen.

Hieronder staan de belangrijkste nieuwe functies.

Toegevoegde mutations voor tags en categorieën

Het is nu mogelijk om post-tags en -categorieën aan te maken, bij te werken en te verwijderen met de nieuw toegevoegde mutations:

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

En ook aangepaste tags en categorieën, met de nieuw toegevoegde mutations:

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

Deze query maakt post-tag-termen aan, werkt ze bij en verwijdert ze:

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
}

Deze query maakt post-categorie-termen aan, werkt ze bij en verwijdert ze:

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
  }
}

Deze query maakt tag-termen aan, werkt ze bij en verwijdert ze voor een aangepaste some-tag-taxonomy-tag:

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
}

Deze query maakt categorie-termen aan, werkt ze bij en verwijdert ze voor een aangepaste some-cat-taxonomy-categorie:

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
  }
}

Een media-item aanmaken met de bijlage van een bestaand media-item

Mutation createMediaItem kan nu een media-item aanmaken met dezelfde bijlage van een bestaand media-item (d.w.z. zonder het bestand op schijf te dupliceren):

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] Definieer de Polylang-taal bij tag- en categorie-mutations

Met de Polylang-integratie kun je bij het aanmaken van een tag of categorie (zie hierboven) de polylangLanguageBy-invoer meegeven om meteen de taal ervan te definiëren.

Deze query maakt bijvoorbeeld een post-categorie aan en stelt de taal in op Spaans:

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

[PRO] Toegevoegde Polylang Mutations voor media-items

PRO-module Polylang Mutations biedt mutations voor de integratie met de Polylang-plugin.

Het GraphQL-schema is uitgebreid met mutations om:

  • De taal voor media-items in te stellen, en
  • Associaties tussen hen te definiëren (d.w.z. aangeven dat een set media-items een vertaling van elkaar is).
MutationBeschrijving
polylangSetMediaItemLanguageStel de taal van het media-item in.
polylangSaveMediaItemTranslationAssociationStel de vertaalassociatie voor het media-item in.

De volgende query definieert bijvoorbeeld de taal voor 3 media-items (Engels, Spaans en Frans) en stelt vervolgens in dat deze 3 media-items een vertaling van elkaar zijn:

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] Entiteiten filteren op de standaardtaal van Polylang

Het is nu mogelijk om entiteiten te filteren op de standaardtaal die in Polylang is ingesteld, door de enum-waarde DEFAULT op te geven in het filter polylangLanguagesBy:

{
  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] Automation: Sla de GraphQL-respons op in de info-logs

De volledige GraphQL-respons voor een automatiseringsuitvoering (voor zowel WP-Cron als Automation Rules, ongeacht of de uitvoering succesvol was) wordt vastgelegd in het bestand wp-content/gatographql/logs/info.log.


Abonneer je op onze nieuwsbrief

Blijf op de hoogte van alle updates over Gato GraphQL.