WPML

프런트엔드에서 언어별로 콘텐츠 쿼리

모든 WPGraphQL 쿼리에 language 인수가 추가됩니다. 단일 필드에서 글, 사용자 정의 글 유형, 분류 체계 용어, 메뉴, 메뉴 항목 및 댓글을 언어별로 필터링할 수 있습니다. 프런트엔드에서 쿼리 후 필터링을 하거나, 요청 볼륨을 두 배로 늘리거나, 언어를 추측할 필요가 없습니다.

query PostsES {
  posts(where: { language: "es" }) {
    nodes { slug uri title }
  }
}

최상위 노드를 언어별로 필터링하면 연결된 항목(카테고리, 태그, 사용자 정의 분류체계)이 자동으로 동일한 언어를 따릅니다. 중첩된 필드마다 추가 인수 없이도 결과가 일관되게 유지됩니다.

사이트맵이나 총계 계산을 위해 언어에 관계없이 모든 항목을 원하시나요? language: "all"를 전달하세요.

단일 쿼리로 노드의 모든 번역 가져오기

글 및 분류 체계 용어의 translations 필드는 노드의 다른 모든 언어 버전을 반환합니다. 여기에는 슬러그, URI, 언어 코드 및 요청한 모든 중첩 필드가 포함됩니다. 한 번의 쿼리와 왕복으로 페이지의 모든 언어 버전을 가져올 수 있습니다.

프런트엔드에서 관련 쿼리 체인을 따르지 않고도 페이지 콘텐츠 옆에 렌더링되는 언어 전환기에 필요한 데이터입니다.

다국어 메뉴, 분류 체계, 댓글 및 언어 데이터

WPML GraphQL은 글 외에도 동일한 language 인수 및 번역 처리를 다음 항목으로 확장합니다.

  • 메뉴 및 메뉴 항목. 언어별 네비게이션을 위한 menus(where: { language: "fr" }) 및 menuItems(where: { language: "fr" })입니다.
  • 분류 체계 용어. 카테고리, 태그 및 사용자 정의 분류체계는 기본적으로 해당 글의 언어를 따르며 언어별로 직접 쿼리할 수 있습니다.
  • 댓글. 특정 언어의 글과 연결된 댓글을 반환합니다.
  • languages 및 defaultLanguage 쿼리. 사이트에 설치된 모든 언어를 코드, 로캘, 고유 명칭, 국가 국기 URL 및 홈 URL과 함께 나열합니다. 사용자 정의 언어 전환기에 적합한 데이터 형태입니다.

언어에 관계없이 ID 또는 슬러그로 특정 글 쿼리

언어별 식별자를 통해 번역된 단일 글을 가져오는 두 가지 쿼리 형태는 다음과 같습니다.

query PostBySlug {
  post(id: "hola-mundo", idType: SLUG) {
    title slug uri
  }
}
query PostById {
  post(id: "2", idType: DATABASE_ID) {
    title slug uri
  }
}

두 형태 모두 프런트엔드에 별도의 “이것이 번역인가요?”라는 로직 없이 번역된 제목, 슬러그 및 URI와 함께 번역된 글을 반환합니다.

현재 WPGraphQL 릴리스에 맞춘 유지 관리

WPML GraphQL 5.2.0을 WPGraphQL 2.24.1 및 WPGraphQL for ACF 3.0.0과 함께 테스트했습니다. WPGraphQL을 유지 관리하는 팀은 다국어 레이어가 스키마와 함께 계속 발전할 수 있도록 WPML과 협력하고 있습니다. WPGraphQL의 새 릴리스가 출시되면 WPML GraphQL도 곧바로 이를 지원합니다.

ACFML 및 WPGraphQL for ACF를 추가할 때 ACF와 함께 작동

많은 헤드리스 사이트가 Advanced Custom Fields에서 콘텐츠 모델을 구축하고 WPGraphQL을 통해 노출합니다. ACFML 및 WPGraphQL for ACF를 추가하면 ACF 데이터가 스키마의 나머지 부분과 동일한 언어 규칙을 따릅니다.

언어에 관계없이 ACF 옵션 페이지 쿼리

옵션 페이지는 글 외부에 있으므로 자체적인 language 인수를 사용합니다. 반복 필드 및 유연한 콘텐츠 내부의 하위 필드도 해당 언어로 반환됩니다. 아래 쿼리는 offices 반복 필드와 promos 유연한 콘텐츠 필드를 읽습니다. WPGraphQL for ACF 3.0.0부터 옵션 페이지는 해당 페이지에 대해 show_in_graphql을 켤 때만 스키마에 포함됩니다.

query StoreSettingsES {
  storeSettings(language: "es") {
    storeContact {
      heading
      offices { city openingHours }
      promos {
        ... on StoreContactPromosBannerLayout { bannerText }
      }
    }
  }
}

번역된 글을 반환하는 관계 필드

글 및 사용자 정의 글 유형의 ACF 필드는 자체적인 language 인수를 사용하지 않습니다. 대신 요청의 언어를 따릅니다. 아래 쿼리에서는 where: { language: "es" }이 전체 쿼리에 대한 언어를 설정합니다.

복사로 설정된 관계 필드에는 이미 번역된 ID가 포함되어 있습니다. WPML이 필드를 번역으로 복사할 때 ACFML은 각 ID를 해당 번역으로 바꿉니다. 아직 번역이 존재하지 않는 경우에는 원본 ID를 유지합니다. 이 기본 설정은 ACF 필드 그룹 에디터의 Translation preferences에서 필드별로 설정합니다. ACF 사용자 정의 필드 번역 가이드의 관계 필드를 참조하세요.

query BlendsES {
  posts(where: { language: "es" }) {
    nodes {
      title
      postExtras {
        relatedGuide {
          nodes { ... on Post { title languageCode } }
        }
      }
    }
  }
}

스페인어 글은 스페인어 가이드를 반환합니다.

모든 요청에서 언어를 설정하세요. ID 또는 슬러그로 하나의 글을 읽는 쿼리에는 language 필터가 포함되지 않습니다. 따라서 기본 언어로 실행되며, 관련 글도 기본 언어로 반환됩니다.

언어를 설정하는 방법은 WPML URL 형식에 따라 다릅니다. 언어당 도메인의 경우 해당 언어의 엔드포인트를 호출합니다(https://es.example.com/graphql). 언어 파라미터의 경우 엔드포인트에 추가합니다(/graphql?lang=es). 디렉토리 형식에는 언어별 엔드포인트가 없으므로 쿼리 내부에서 언어별로 필터링합니다.

번역이 누락된 경우

WPML은 기본 언어로 대체하지 않습니다. 관련 글에 요청한 언어의 번역이 없으면 결과에서 제외됩니다.

{
  "data": {
    "posts": {
      "nodes": [
        {
          "title": "Nuestras mezclas de la casa",
          "postExtras": {
            "relatedGuide": {
              "nodes": [
                { "title": "Guía de compra de espresso", "languageCode": "es" }
              ]
            }
          }
        }
      ]
    }
  }
}

필드는 두 개의 가이드를 가리킵니다. 그중 하나만 스페인어로 번역되어 있으므로 스페인어 쿼리는 하나만 반환합니다. 프런트엔드에는 더 짧은 목록이 제공되며 언어가 혼합되지 않습니다. 누락된 글을 번역하면 동일한 쿼리에 나타납니다.

글 유형이 번역 가능한 경우 목록은 한 가지 언어로 유지됩니다. 글 유형을 번역된 것으로 표시로 설정하면 WPML은 번역되지 않은 가이드를 기본 언어로 반환합니다. 그러면 목록에 언어가 혼합됩니다.

WPML GraphQL은 WPML에 포함되어 있습니다

WPML GraphQL은 Multilingual CMS 및 Multilingual Agency와 함께 제공됩니다. 별도로 구매하거나 사이트당 요금을 지불할 필요가 없습니다. WPML을 한 번 구매하면 헤드리스 다국어 스택에 언어 레이어가 추가됩니다. 이미 WPML을 보유하고 있는 경우 WPML 다운로드 페이지에서 WPML GraphQL을 활성화하세요.