Продвинутый
ПродвинутыйСоздание вспомогательных запросов

Создание вспомогательных запросов

При работе с переводами вы можете столкнуться с различными ситуациями, когда необходимо идентифицировать, проанализировать или обработать определённый контент на вашем сайте. Например:

  • Поиск записей, содержащих определённый блок Gutenberg, который не может быть переведён
  • Выявление записей с повреждёнными или некорректными данными
  • Поиск контента, требующего ручной проверки или миграции
  • Получение списков записей, страниц или других типов контента для пакетных операций

Поскольку Gato AI Translations for Polylang использует Gato GraphQL под капотом, вы можете удобно применять этот инструмент для создания пользовательских запросов GraphQL, позволяющих искать, фильтровать и получать информацию с вашего сайта WordPress.

Включение расширенного режима

Для выполнения запросов GraphQL необходимо сначала включить расширенный режим в настройках плагина.

Перейдите в Настройки > Конфигурация плагина > Расширенное использование и выберите Включить расширенный режим:

Включение расширенного режима
Включение расширенного режима

После включения пользовательский тип записи Queries станет доступен в меню администратора WordPress:

CPT Queries включён
CPT Queries включён

Перейдите в раздел Queries в меню администратора WordPress и добавьте новую запись. Дайте ей описательное название, которое чётко указывает, что делает этот запрос.

Примеры

Поиск записей, содержащих определённый блок

Одним из распространённых вариантов использования является выявление записей, содержащих определённый блок Gutenberg, который не может быть переведён. Этот запрос помогает найти все записи, которые необходимо перенести в другой, переводимый блок.

Создайте новую запись с названием Find posts containing a certain block и используйте этот запрос:

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

Обратите внимание, что мы можем передавать переменные в запрос, что позволяет повторно использовать его для разных блоков.

Например, чтобы найти записи, содержащие блок FAQ от Yoast, установите переменные GraphQL следующим образом:

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

Затем выполните запрос:

Выполнение запроса GraphQL
Выполнение запроса GraphQL

В ответе вы увидите список записей, содержащих блок FAQ от Yoast. При нажатии на любой 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 и используйте этот запрос:

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

Например, чтобы исправить ошибку повреждённых данных для медиафайла с ID 26066, установите переменные GraphQL следующим образом:

{
  "mediaItemID": 26066
}

И выполните запрос.