고급
고급헬퍼 쿼리 만들기

헬퍼 쿼리 만들기

번역 작업을 진행하다 보면 사이트 전체에서 특정 콘텐츠를 파악·분석·처리해야 하는 다양한 상황이 생길 수 있습니다. 예를 들면:

  • 번역할 수 없는 특정 Gutenberg 블록이 포함된 게시물 찾기
  • 손상되거나 잘못된 데이터가 포함된 게시물 파악하기
  • 수동 검토나 마이그레이션이 필요한 콘텐츠 찾기
  • 일괄 작업을 위한 게시물, 페이지 또는 기타 콘텐츠 유형 목록 가져오기

Gato AI Translations for Polylang은 내부적으로 Gato GraphQL을 실행하므로, 이 도구를 활용하여 커스텀 GraphQL 쿼리를 작성하고 WordPress 사이트의 정보를 검색·필터링·가져올 수 있습니다.

고급 모드 활성화

GraphQL 쿼리를 실행하려면 먼저 플러그인 설정에서 고급 모드를 활성화해야 합니다.

설정 > 플러그인 구성 > 고급 사용으로 이동한 후 고급 모드 활성화를 선택합니다:

고급 모드 활성화
고급 모드 활성화

활성화되면 Queries 커스텀 게시물 유형이 WordPress 관리 메뉴에서 사용 가능해집니다:

Queries CPT 활성화 상태
Queries CPT 활성화 상태

WordPress 관리 메뉴에서 Queries로 이동하여 새 항목을 추가합니다. 쿼리의 내용을 명확하게 나타내는 설명적인 제목을 붙여 주세요.

예시

특정 블록이 포함된 게시물 찾기

자주 쓰이는 사용 사례 중 하나는 번역할 수 없는 특정 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
  }
}

쿼리에 변수를 전달할 수 있으므로 다양한 블록에 재사용할 수 있습니다.

예를 들어, Yoast FAQ 블록이 포함된 게시물을 찾으려면 GraphQL 변수를 다음과 같이 설정하세요:

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

그런 다음 쿼리를 실행합니다:

GraphQL 쿼리 실행
GraphQL 쿼리 실행

응답에서 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이라는 제목으로 새 항목을 만들고 다음 쿼리를 사용하세요:

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

예를 들어, ID 26066인 미디어 항목의 손상된 데이터 오류를 수정하려면 GraphQL 변수를 다음과 같이 설정하세요:

{
  "mediaItemID": 26066
}

그런 다음 쿼리를 실행합니다.