博客

⭐️ 发布 v2.6,新增 MultilingualPress 扩展(适用于多语言站点)

Leonardo Losoviz
作者:Leonardo Losoviz ·

Gato GraphQL v2.6 已发布,包含多项新功能。完整的变更列表请查阅 GitHub 上的发布说明

以下是最重要的新增内容。

[PRO] 新增与 MultilingualPress 的集成

Gato GraphQL PRO 现已与 MultilingualPress 插件集成。

通过新的 MultilingualPress 扩展,GraphQL 模式提供了用于检索多语言数据的字段。

例如,您现在可以运行以下 query:

query {
  posts {
    multilingualpressTranslationConnections {
      ...MultilingualPressConnectionData
    }
 
    categories {
      multilingualpressTranslationConnections {
        ...MultilingualPressConnectionData
      }
    }
    
    tags {
      multilingualpressTranslationConnections {
        ...MultilingualPressConnectionData
      }
    }
  }
 
  pages {
    multilingualpressTranslationConnections {
      ...MultilingualPressConnectionData
    }
  }
  
  customPosts(filter: { customPostTypes: "some-cpt" }) {
    __typename
    ...on GenericCustomPost {
      multilingualpressIsTranslatable
      multilingualpressTranslationConnections {
        ...MultilingualPressConnectionData
      }
      
      categories(taxonomy: "some-category") {
        __typename
        ...on GenericCategory {
          multilingualpressIsTranslatable
          multilingualpressTranslationConnections {
            ...MultilingualPressConnectionData
          }
        }
      }
      
      tags(taxonomy: "some-tag") {
        __typename
        ...on GenericTag {
          multilingualpressIsTranslatable
          multilingualpressTranslationConnections {
            ...MultilingualPressConnectionData
          }
        }
      }
    }
  }
}
 
fragment MultilingualPressConnectionData {
  siteID
  entityID
}

通过此功能,我们可以使用 Gato GraphQL 为 MultilingualPress 插件自动翻译文章,并将翻译内容存储到 WordPress 多站点网络中对应的站点。

请观看演示视频「Automatically translating posts for MultilingualPress (on a WordPress multisite network)」了解其工作原理:

[PRO] 新增 _strRegexFindMatches 字段

_strRegexFindMatches 字段已添加到 GraphQL 模式(位于 PHP Functions via Schema 扩展下)。

该字段通过执行正则表达式从字符串中提取所有匹配项。例如,运行以下 query:

query {
  _strRegexFindMatches(
    regex: "/https?:\\/\\/([a-zA-Z0-9][a-zA-Z0-9-]{1,61}[a-zA-Z0-9]\\.[a-zA-Z]{2,})/",
    string: "In website https://gatographql.com there is more information"
  )
}

……将产生:

{
  "data": {
    "_strRegexFindMatches": [
      [
        "https:\/\/gatographql.com"
      ],
      [
        "gatographql.com"
      ]
    ]
  }
}

通过此功能,我们可以使用 Gato GraphQL 从 Poedit 文件中提取空字符串,将其翻译为任意语言,并为该语言创建对应的 Poedit 文件。

请观看演示视频 Translating all strings in a Poedit file for any language 了解其工作原理:

新增 siteURL 字段

通过「Site」模块,GraphQL 模式新增了以下字段:

  • Root.siteURL

例如,执行以下 query:

query {
  siteURL
}

……将产生:

{
  "data": {
    "siteURL": "https://mysite.com"
  }
}

新增用于获取多站点数据的字段

GraphQL 模式现在支持通过新的「Multisite」模块从 WordPress 多站点网络获取数据。

该模块向 GraphQL 模式添加了以下字段:

  • Root.networkSites
  • Root.networkSiteCount

networkSites 字段返回包含网络中所有站点的数组,每个站点为新的 NetworkSite 类型,包含以下字段:

  • id
  • name
  • url
  • locale
  • language

这些字段仅在多站点启用时(即 is_multisite() 方法返回 true 时)才会生效。

例如,执行以下 query:

query {
  networkSiteCount
  networkSites {
    id
    name
    url
    locale
    language
  }
}

可能会返回:

{
  "data": {
    "networkSiteCount": 3,
    "networkSites": [
     {
        "id": 1,
        "name": "Site in English",
        "url": "https://mymultisite.com",
        "locale": "en_US",
        "language": "en"
      },
     {
        "id": 2,
        "name": "Site in Spanish",
        "url": "https://es.mymultisite.com",
        "locale": "es_AR",
        "language": "es"
      },
     {
        "id": 3,
        "name": "Site in French",
        "url": "https://fr.mymultisite.com",
        "locale": "fr_FR",
        "language": "fr"
      }
    ]
  }
}

新增预定义的持久化 Query

Gato GraphQL 新增了以下持久化 Query:

[PRO] 新增自动化规则

Gato GraphQL PRO 新增了以下自动化规则:

  • MultilingualPress:发布文章时,将其翻译为所有语言(Gutenberg)
  • MultilingualPress:发布文章时,将其翻译为所有语言(Classic editor)

订阅我们的新闻通讯

及时了解 Gato GraphQL 的所有更新。