Trên trang này:
- Plugin bắt buộc
- Bạn có thể làm gì với WPML GraphQL ?
- Truy vấn thông tin về ngôn ngữ và bản dịch
- Lọc ngôn ngữ
- Truy vấn các bài đăng cụ thể trên nhiều ngôn ngữ
- Truy vấn dữ liệu từ các ngôn ngữ đã cài đặt
- Sử dụng WPML GraphQL với Gatsby và ACF
- Bắt đầu với WPML GraphQL
- Cần trợ giúp?
Plugin bắt buộc
Để bắt đầu, hãy cài đặt và kích hoạt các plugin sau:
- WPGraphQL
- WPML
- WPML String Translation
- WPML GraphQL
Để bao gồm các trường đa ngôn ngữ từ plugin ACF trong lược đồ WPGraphQL, hãy cài đặt thêm:
- Advanced Custom Fields Multilingual ( ACFML )
- WPGraphQL cho Advanced Custom Fields
Bạn có thể làm gì với WPML GraphQL ?
WPML GraphQL tích hợp với WPGraphQL để cho phép bạn truy vấn nội dung đa ngôn ngữ được tạo bằng WPML .
Từ GraphQL → GraphQL IDE , bạn có thể sử dụng Query Composer để:
- Nhận thông tin ngôn ngữ cho bất kỳ nội dung nào bạn truy vấn
- Truy cập bản dịch cho bài đăng, phân loại và bình luận
- Lọc truy vấn của bạn theo ngôn ngữ
- Truy vấn các bài đăng cụ thể trên nhiều ngôn ngữ theo ID hoặc slug của chúng
Ví dụ, như hình ảnh bên dưới hiển thị, bạn có thể dễ dàng kéo lên danh sách tất cả các bài đăng trên trang web của mình, kèm theo mã ngôn ngữ, slug, URI và thông tin chi tiết về bản dịch.
Bên dưới, chúng tôi sẽ sử dụng một trang web thử nghiệm đa ngôn ngữ để chỉ cho bạn cách sử dụng WPML GraphQL để truy vấn nội dung và bản dịch của nội dung đó.
Truy vấn thông tin về ngôn ngữ và bản dịch
Với WPML GraphQL , bạn có thể sử dụng các trường ngôn ngữ và bản dịch trong truy vấn của mình:
- Các
language
trường này cho phép bạn lấy các thông tin chi tiết như mã ngôn ngữ, URL cờ quốc gia, tên gốc, tên đã dịch và URL trang chủ cho các loại bài đăng, phân loại, menu, mục menu và bình luận. - Các
languageCode
trường này lấy mã ngôn ngữ cho các bài đăng, thuật ngữ phân loại, menu, mục menu và bình luận mà không có thông tin chi tiết ngôn ngữ bổ sung. - Các
translations
trường này lấy các bản dịch cho các loại bài đăng và thuật ngữ phân loại.
Khi bạn truy vấn các bình luận,language
VàlanguageCode
các trường khớp với ngôn ngữ của bài đăng mà chúng thuộc về.
Sau đây là ví dụ về truy vấn lấy các bài đăng cùng với thông tin chi tiết liên quan, bao gồm slug bài đăng, URI, mã ngôn ngữ, danh mục và bất kỳ bản dịch nào hiện có:
query Posts{
posts(where: {language: "en"}) {
nodes {
slug
uri
language {
code
}
categories {
nodes {
name
}
}
translations {
slug
uri
language {
code
}
categories {
nodes {
name
}
}
}
}
}
}
Chạy truy vấn này sẽ trả về thông tin ngôn ngữ và bản dịch cho mỗi bài đăng, cùng với các mục được kết nối như danh mục. Các kết nối tự động theo ngôn ngữ của mục cấp cao nhất (trong trường hợp này là bài đăng):
{
"data": {
"posts": {
"nodes": [
{
"slug": "bye-world",
"uri": "/2023/05/18/bye-world/",
"language": {
"code": "en"
},
"categories": {
"nodes": [
{
"name": "End of the day"
},
{
"name": "Greetings"
}
]
},
"translations": [
{
"slug": "adios-mundo",
"uri": "/es/2023/05/18/adios-mundo/",
"language": {
"code": "es"
},
"categories": {
"nodes": [
{
"name": "Fin del día"
},
{
"name": "Saludos"
}
]
}
},
{
"slug": "tchau-mundo",
"uri": "/pt-pt/2023/05/18/tchau-mundo/",
"language": {
"code": "pt-pt"
},
"categories": {
"nodes": [
{
"name": "Fim do dia"
},
{
"name": "Saudações"
}
]
}
}
]
},
{
"slug": "hello-world",
"uri": "/2018/07/05/hello-world/",
"language": {
"code": "en"
},
"categories": {
"nodes": [
{
"name": "Greetings"
},
{
"name": "Start of the day"
}
]
},
"translations": [
{
"slug": "hola-mundo",
"uri": "/es/2018/07/05/hola-mundo/",
"language": {
"code": "es"
},
"categories": {
"nodes": [
{
"name": "Inicio del día"
},
{
"name": "Saludos"
}
]
}
},
{
"slug": "ola-mundo",
"uri": "/pt-pt/2018/07/05/ola-mundo/",
"language": {
"code": "pt-pt"
},
"categories": {
"nodes": [
{
"name": "Começo do dia"
},
{
"name": "Saudações"
}
]
}
}
]
}
]
}
}
}
Lọc ngôn ngữ
WPML GraphQL cho phép bạn sử dụng bộ lọc ngôn ngữ để:
- Lọc bài đăng, thuật ngữ phân loại, menu, mục menu hoặc bình luận theo ngôn ngữ cụ thể
- Truy xuất nội dung bằng ngôn ngữ cụ thể bằng cách thiết lập bộ lọc phù hợp
- Nhận tất cả nội dung, bất kể ngôn ngữ, bằng cách đặt giá trị bộ lọc thành tất cả
WPML GraphQL hỗ trợ kết nối, vì vậy khi bạn lọc một mục cấp cao nhất như bài đăng theo ngôn ngữ, tất cả các mục liên quan, chẳng hạn như danh mục và thẻ, sẽ tự động theo cùng một ngôn ngữ. Điều này làm cho truy vấn của bạn nhất quán và chính xác.
Sau đây là ví dụ về truy vấn lấy các bài đăng bằng tiếng Tây Ban Nha, bao gồm slug, URI và danh mục được kết nối:
query PostsES{
posts(where: {language: "es"}) {
nodes {
slug
uri
categories {
nodes {
name
}
}
}
}
}
Sau đây là kết quả trả về của truy vấn:
{
"data": {
"posts": {
"nodes": [
{
"slug": "adios-mundo",
"uri": "/es/2023/05/18/adios-mundo/",
"categories": {
"nodes": [
{
"name": "Fin del día"
},
{
"name": "Saludos"
}
]
}
},
{
"slug": "hola-mundo",
"uri": "/es/2018/07/05/hola-mundo/",
"categories": {
"nodes": [
{
"name": "Inicio del día"
},
{
"name": "Saludos"
}
]
}
}
]
}
}
}
Truy vấn các bài đăng cụ thể trên nhiều ngôn ngữ
Với WPMLGraphQL, bạn cũng có thể truy vấn từng bài đăng bằng bất kỳ ngôn ngữ nào theo ID bài đăng hoặc slug của bài đăng đó.
Ví dụ, nếu bạn có bài đăng có tiêu đề ¡Hola mundo! (bản dịch tiếng Tây Ban Nha của Hello world !), với phần mở đầu là hola-mundo và ID bài đăng là 2 , bạn có thể sử dụng các truy vấn sau để truy xuất bài đăng:
query PostBySlug {
post(id: "hola-mundo", idType: SLUG) {
title
slug
uri
}
}
query PostById {
post(id: "2", idType: DATABASE_ID) {
title
slug
uri
}
}
Cả hai truy vấn đều sẽ trả về chính xác dữ liệu bài đăng, bao gồm tiêu đề, slug và URI cho bài đăng ¡Hola mundo!:
{
"data": {
"post": {
"title": "¡Hola mundo!",
"slug": "hola-mundo",
"uri": "/es/2018/07/05/hola-mundo/"
}
}
}
Truy vấn dữ liệu từ các ngôn ngữ đã cài đặt
WPML GraphQL cung cấp hai truy vấn để truy cập dữ liệu về các ngôn ngữ được cài đặt trên trang web của bạn:
- Truy vấn ngôn ngữ lấy tất cả các ngôn ngữ đã đăng ký cùng với dữ liệu có liên quan cho từng ngôn ngữ
- Truy vấn defaultLanguage sẽ lấy thông tin về ngôn ngữ mặc định được đặt trên trang web của bạn
Những truy vấn này có thể hữu ích nếu bạn muốn xây dựng các tính năng như trình chuyển đổi ngôn ngữ.
Ví dụ, để lấy dữ liệu cho tất cả các ngôn ngữ đã cài đặt, bạn có thể chạy truy vấn sau:
query Languages {
languages {
code
country_flag_url
default_locale
native_name
translated_name
url
}
}
Truy vấn trên tạo ra kết quả sau:
{
"data": {
"languages": [
{
"code": "en",
"country_flag_url": "http://site.com/wp-content/plugins/sitepress-multilingual-cms-release/res/flags/en.svg",
"default_locale": "en_US",
"native_name": "English",
"translated_name": "English",
"url": "http://site.com"
},
{
"code": "es",
"country_flag_url": "http://site.com/wp-content/plugins/sitepress-multilingual-cms-release/res/flags/es.svg",
"default_locale": "es_ES",
"native_name": "Español",
"translated_name": "Spanish",
"url": "http://site.com/es/"
},
{
"code": "it",
"country_flag_url": "http://site.com/wp-content/plugins/sitepress-multilingual-cms-release/res/flags/it.svg",
"default_locale": "it_IT",
"native_name": "Italiano",
"translated_name": "Italian",
"url": "http://site.com/it/"
}
]
}
}
Sử dụng WPML GraphQL với Gatsby và ACF
Gatsby cho phép bạn lấy dữ liệu từ WordPress và với WPML GraphQL , bạn có thể cung cấp nội dung đa ngôn ngữ và dữ liệu theo ngôn ngữ cụ thể cho trang web Gatsby của mình.
Nếu bạn đang sử dụng WP GraphQL với plugin ACF, WPML GraphQL và ACF Multilingual sẽ mở rộng chức năng này, cho phép bạn truy vấn dữ liệu trường tùy chỉnh bằng nhiều ngôn ngữ khác nhau.
Ví dụ, giả sử bạn cài đặt Gatsby với gói bổ trợ gatsby-source-graphql và trang WordPress của bạn có WPML (với tiếng Tây Ban Nha là ngôn ngữ phụ) và ACF.
Bạn có thể truy xuất các bài đăng đa ngôn ngữ cùng tiêu đề, mã ngôn ngữ và các trường ACF tùy chỉnh trong Gatsby bằng cách sử dụng truy vấn GraphQL đơn giản.
export const doQuery = graphql`
{
wordpress {
posts(where: {language: "en"}) {
nodes {
title
language {
code
}
postfields{
subtitle
}
translations {
title
language {
code
}
postfields{
subtitle
}
}
}
}
}
}
`;
Bắt đầu với WPML GraphQL
Để sử dụng WPML GraphQL , bạn cần có gói WPML Multilingual CMS hoặc WPML Multilingual Agency . Cả hai gói đều cung cấp quyền truy cập vào plugin WPML và nhiều tiện ích bổ sung khác, tất cả đều không mất thêm phí.
Xem gói nào phù hợp nhất với trang web của bạn .
Cần trợ giúp?
Nếu bạn gặp sự cố khi sử dụng WPML GraphQL , hãy truy cập trang Sự cố đã biết và Giải pháp của chúng tôi để biết mẹo khắc phục sự cố.
Bạn vẫn cần trợ giúp? Hãy gửi phiếu hỗ trợ .