高级
高级创建辅助 Queries

创建辅助 Queries

在进行翻译工作时,您可能会遇到各种需要识别、分析或处理站点内特定内容的情况。例如:

  • 查找包含某个无法翻译的特定 Gutenberg 块的文章
  • 识别包含损坏或格式错误数据的文章
  • 找到需要人工审核或迁移的内容
  • 获取用于批量操作的文章、页面或其他内容类型的列表

由于 Gato AI Translations for Polylang 在底层运行 Gato GraphQL,您可以方便地使用该工具创建自定义 GraphQL queries,以搜索、过滤和检索 WordPress 站点中的信息。

启用高级模式

要执行 GraphQL queries,您必须首先在插件设置中启用高级模式

前往 设置 > 插件配置 > 高级使用,然后选择启用高级模式

启用高级模式
启用高级模式

启用后,Queries 自定义文章类型将在您的 WordPress 管理菜单中显示:

Queries CPT 已启用
Queries CPT 已启用

在 WordPress 管理菜单中导航至 Queries 并添加一个新条目。为其起一个能清晰说明该 query 用途的描述性标题。

示例

查找包含特定块的文章

一个常见的使用场景是识别包含无法翻译的特定 Gutenberg 块的文章。该 query 可帮助您找出所有需要迁移到其他可翻译块的文章。

创建一个标题为 Find posts containing a certain block 的新条目,并使用以下 query:

query FindPostsContainingBlock(
  $blockName: String!
) {
  customPostCount(
    filter: {
      status: any,
      search: $blockName
    }
  )
  customPosts(
    filter: {
      status: any,
      search: $blockName
    },
    pagination: { limit: -1 }
  ) {
    id
    title
    customPostType
    url
    wpAdminEditURL
  }
}

注意,我们可以向 query 提供变量,因此可以针对不同的块重复使用它。

例如,要查找包含 Yoast FAQ 块的文章,将 GraphQL 变量设置为:

{
  "blockName": "yoast/faq-block"
}

然后执行该 query:

执行 GraphQL query
执行 GraphQL query

从响应结果中,您可以看到包含 Yoast FAQ 块的文章列表。点击任意 url 将在前端打开该文章,点击任意 wpAdminEditURL 链接将在 WordPress 编辑器中打开该文章。

{
  "data": {
    "customPostCount": 6,
    "customPosts": [
      {
        "id": 38602,
        "title": "BTS B",
        "customPostType": "page",
        "url": "https://www.mysite.com/bts-dietetique-b/",
        "wpAdminEditURL": "https://www.mysite.com/wp-admin/post.php?post=38602&action=edit"
      },
      {
        "id": 38024,
        "title": "Merci",
        "customPostType": "page",
        "url": "https://www.mysite.com/merci/",
        "wpAdminEditURL": "https://www.mysite.com/wp-admin/post.php?post=38024&action=edit"
      },
      {
        "id": 38633,
        "title": "BTS A",
        "customPostType": "page",
        "url": "https://www.mysite.com/bts-dietetique-a/",
        "wpAdminEditURL": "https://www.mysite.com/wp-admin/post.php?post=38633&action=edit"
      },
      {
        "id": 34871,
        "title": "Collagène marin B",
        "customPostType": "page",
        "url": "https://www.mysite.com/meilleurs-collagenes-marin/",
        "wpAdminEditURL": "https://www.mysite.com/wp-admin/post.php?post=34871&action=edit"
      },
      {
        "id": 34853,
        "title": "Collagène marin A",
        "customPostType": "page",
        "url": "https://www.mysite.com/meilleur-collagene-marin/",
        "wpAdminEditURL": "https://www.mysite.com/wp-admin/post.php?post=34853&action=edit"
      },
      {
        "id": 33987,
        "title": "Meilleur collagène en 2025 : l’avis d’un médecin (15 marques)",
        "customPostType": "page",
        "url": "https://www.mysite.com/meilleur-collagene/",
        "wpAdminEditURL": "https://www.mysite.com/wp-admin/post.php?post=33987&action=edit"
      }
    ]
  }
}

修复损坏的数据错误

另一个常见的使用场景是修复损坏的数据错误。

例如,如果某个媒体项包含一个不存在的父级引用,插件将无法翻译该内容。您可以通过删除父级引用来解决此问题。

创建一个标题为 Remove parent reference from media item 的新条目,并使用以下 query:

mutation RemoveParentReferenceFromMediaItem($mediaItemID: ID!) {
  updateMediaItem( input: { id: $mediaItemID, customPostID: null } ) {
    status
    errors {
      __typename
      ...on GenericErrorPayload {
        message
      }
    }
  }
}

例如,要修复 ID 为 26066 的媒体项的损坏数据错误,将 GraphQL 变量设置为:

{
  "mediaItemID": 26066
}

然后执行该 query。