ในหน้านี้:
- ปลั๊กอินที่จำเป็น
- คุณสามารถทำอะไรได้บ้างด้วย WPML GraphQL ?
- การสืบค้นภาษาและข้อมูลการแปล
- การกรองภาษา
- การค้นหาโพสต์เฉพาะข้ามภาษา
- การสืบค้นข้อมูลจากภาษาที่ติดตั้ง
- การใช้ WPML GraphQL กับ Gatsby และ ACF
- เริ่มต้นใช้งาน WPML GraphQL
- ต้องการความช่วยเหลือหรือไม่?
ปลั๊กอินที่จำเป็น
ในการเริ่มต้น ให้ติดตั้งและเปิดใช้งานปลั๊กอินต่อไปนี้:
- ดับเบิ้ลยูพี กราฟคิวแอล
- WPML
- WPML String Translation
- WPML GraphQL
หากต้องการรวมฟิลด์หลายภาษาจากปลั๊กอิน ACF ในสคีมา WPGraphQL ให้ติดตั้งด้วย:
- Advanced Custom Fields Multilingual ( ACFML )
- WPGraphQL สำหรับ Advanced Custom Fields
คุณสามารถทำอะไรได้บ้างด้วย WPML GraphQL ?
WPML GraphQL รวมเข้ากับ WPGraphQL เพื่อให้คุณสามารถค้นหาเนื้อหาหลายภาษาที่สร้างด้วย WPML ได้
จาก GraphQL → GraphQL IDE คุณสามารถใช้ Query Composer เพื่อ:
- รับข้อมูลภาษาสำหรับเนื้อหาใด ๆ ที่คุณสอบถาม
- เข้าถึงการแปลสำหรับโพสต์ อนุกรมวิธาน และความคิดเห็น
- กรองคำถามของคุณตามภาษา
- ค้นหาโพสต์เฉพาะในภาษาต่างๆ โดยใช้ ID หรือสลัก
ตัวอย่างเช่น ตามที่แสดงในภาพด้านล่าง คุณสามารถดึงรายการโพสต์ทั้งหมดในไซต์ของคุณขึ้นมาได้อย่างง่ายดาย พร้อมด้วยรหัสภาษา สลัก URI และรายละเอียดสำหรับการแปล
ด้านล่างนี้ เราจะใช้ไซต์ทดสอบหลายภาษาเพื่อแสดงให้คุณเห็นวิธีการใช้ WPML GraphQL เพื่อค้นหาเนื้อหาและการแปล
การสืบค้นภาษาและข้อมูลการแปล
ด้วย WPML GraphQL คุณสามารถใช้ฟิลด์ ภาษา และ การแปล ในแบบสอบถามของคุณได้:
- การ
language
ฟิลด์นี้ช่วยให้คุณค้นหารายละเอียดต่างๆ เช่น รหัสภาษา, URL ธงชาติ, ชื่อพื้นเมือง, ชื่อที่แปล และ URL โฮมเพจสำหรับประเภทโพสต์, อนุกรมวิธาน, เมนู, รายการเมนู และความคิดเห็น - การ
languageCode
ฟิลด์จะได้รับรหัสภาษาสำหรับโพสต์ เงื่อนไขทางอนุกรมวิธาน เมนู รายการเมนู และความคิดเห็นโดยไม่มีรายละเอียดภาษาเพิ่มเติม - การ
translations
ฟิลด์ดึงข้อมูลการแปลสำหรับประเภทโพสต์และเงื่อนไขทางอนุกรมวิธาน
เมื่อคุณสอบถามความคิดเห็นlanguage
และlanguageCode
ฟิลด์ที่ตรงกับภาษาของโพสต์ที่พวกเขาเป็นสมาชิกอยู่
นี่คือตัวอย่างของแบบสอบถามที่ดึงโพสต์พร้อมรายละเอียดที่เกี่ยวข้อง รวมถึงสลักโพสต์, URI, รหัสภาษา, หมวดหมู่ และการแปลใดๆ ที่มีอยู่:
query Posts{
posts(where: {language: "en"}) {
nodes {
slug
uri
language {
code
}
categories {
nodes {
name
}
}
translations {
slug
uri
language {
code
}
categories {
nodes {
name
}
}
}
}
}
}
การเรียกใช้คิวรีนี้จะส่งคืนข้อมูลภาษาและการแปลสำหรับแต่ละโพสต์ พร้อมกับรายการที่เชื่อมต่อกัน เช่น หมวดหมู่ การเชื่อมต่อจะทำตามภาษาของรายการระดับบนสุดโดยอัตโนมัติ (ในกรณีนี้คือโพสต์)
{
"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"
}
]
}
}
]
}
]
}
}
}
การกรองภาษา
WPML GraphQL ช่วยให้คุณสามารถใช้ตัวกรอง ภาษา เพื่อ:
- กรองโพสต์ คำศัพท์ทางอนุกรมวิธาน เมนู รายการเมนู หรือความคิดเห็นตามภาษาเฉพาะ
- ดึงข้อมูลเนื้อหาในภาษาใดภาษาหนึ่งโดยตั้งค่าตัวกรองให้เหมาะสม
- รับเนื้อหาทั้งหมดโดยไม่คำนึงถึงภาษาโดยตั้งค่าตัวกรองเป็น ทั้งหมด
WPML GraphQL รองรับการเชื่อมต่อ ดังนั้นเมื่อคุณกรองรายการระดับบนสุด เช่น โพสต์ตามภาษา รายการที่เกี่ยวข้องทั้งหมด เช่น หมวดหมู่และแท็ก จะเป็นไปตามภาษาเดียวกันโดยอัตโนมัติ ซึ่งจะทำให้การค้นหาของคุณสอดคล้องและแม่นยำ
นี่คือตัวอย่างของแบบสอบถามที่ดึงข้อมูลโพสต์เป็นภาษาสเปน รวมถึงสลัก URI และหมวดหมู่ที่เชื่อมต่อกัน:
query PostsES{
posts(where: {language: "es"}) {
nodes {
slug
uri
categories {
nodes {
name
}
}
}
}
}
นี่คือสิ่งที่แบบสอบถามส่งคืน:
{
"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"
}
]
}
}
]
}
}
}
การค้นหาโพสต์เฉพาะข้ามภาษา
ด้วย WPMLGraphQL คุณยังสามารถค้นหาโพสต์แต่ละรายการในภาษาใดก็ได้โดยใช้ ID โพสต์หรือสลัก
ตัวอย่างเช่น หากคุณมีโพสต์ที่มีชื่อว่า ¡Hola mundo! (คำแปลภาษาสเปนของคำว่า Hello world !) พร้อมด้วย slug ของคำว่า hola-mundo และ ID โพสต์เป็น 2 คุณสามารถใช้คิวรีต่อไปนี้เพื่อดึงข้อมูลโพสต์ดังกล่าวได้:
query PostBySlug {
post(id: "hola-mundo", idType: SLUG) {
title
slug
uri
}
}
query PostById {
post(id: "2", idType: DATABASE_ID) {
title
slug
uri
}
}
ทั้งสองแบบสอบถามจะส่งคืนข้อมูลโพสต์อย่างถูกต้อง รวมถึงหัวเรื่อง สลัก และ URI สำหรับโพสต์ ¡Hola mundo!
{
"data": {
"post": {
"title": "¡Hola mundo!",
"slug": "hola-mundo",
"uri": "/es/2018/07/05/hola-mundo/"
}
}
}
การสืบค้นข้อมูลจากภาษาที่ติดตั้ง
WPML GraphQL มีแบบสอบถามสองแบบสำหรับการเข้าถึงข้อมูลเกี่ยวกับภาษาที่ติดตั้งบนเว็บไซต์ของคุณ:
- การสอบถาม ภาษา จะเรียกค้นภาษาที่ลงทะเบียนทั้งหมดพร้อมกับข้อมูลที่เกี่ยวข้องสำหรับแต่ละภาษา
- แบบสอบถาม defaultLanguage จะดึงข้อมูลเกี่ยวกับชุดภาษาเริ่มต้นบนเว็บไซต์ของคุณ
คำถามเหล่านี้อาจมีประโยชน์หากคุณต้องการสร้างฟีเจอร์ต่างๆ เช่น ตัวเปลี่ยนภาษา
ตัวอย่างเช่น หากต้องการรับข้อมูลสำหรับภาษาที่ติดตั้งทั้งหมด คุณสามารถรันแบบสอบถามต่อไปนี้:
query Languages {
languages {
code
country_flag_url
default_locale
native_name
translated_name
url
}
}
แบบสอบถามข้างต้นให้ผลลัพธ์ต่อไปนี้:
{
"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/"
}
]
}
}
การใช้ WPML GraphQL กับ Gatsby และ ACF
Gatsby ช่วยให้คุณสามารถดึงข้อมูลจาก WordPress และด้วย WPML GraphQL คุณสามารถให้บริการเนื้อหาหลายภาษาและข้อมูลเฉพาะภาษาบนไซต์ Gatsby ของคุณได้
หากคุณใช้ WP GraphQL ร่วมกับปลั๊กอิน ACF, WPML GraphQL และ ACF Multilingual จะขยายฟังก์ชันนี้ ช่วยให้คุณสามารถสอบถามข้อมูลฟิลด์ที่กำหนดเองในภาษาต่างๆ ได้
ตัวอย่างเช่น สมมติว่าคุณติดตั้ง Gatsby พร้อมด้วย แพ็กเกจเสริม gatsby-source-graphql และไซต์ WordPress ของคุณมี WPML (โดยมีภาษาสเปนเป็นภาษารอง) และติดตั้ง ACF ไว้
คุณสามารถเรียกค้นโพสต์หลายภาษาพร้อมด้วยหัวเรื่อง รหัสภาษา และฟิลด์ ACF ที่กำหนดเองใน Gatsby ได้โดยใช้แบบสอบถาม GraphQL ง่ายๆ
export const doQuery = graphql`
{
wordpress {
posts(where: {language: "en"}) {
nodes {
title
language {
code
}
postfields{
subtitle
}
translations {
title
language {
code
}
postfields{
subtitle
}
}
}
}
}
}
`;
เริ่มต้นใช้งาน WPML GraphQL
หากต้องการใช้ WPML GraphQL คุณต้องมีแผน WPML Multilingual CMS หรือ WPML Multilingual Agency ทั้งสองแผนให้สิทธิ์เข้าถึงปลั๊กอิน WPML และส่วนเสริมเพิ่มเติมมากมาย โดยไม่มีค่าใช้จ่ายเพิ่มเติม
ดูว่าแผนใดเหมาะกับไซต์ของคุณที่สุด
ต้องการความช่วยเหลือหรือไม่?
หากคุณประสบปัญหาในการใช้ WPML GraphQL โปรดไปที่หน้า ปัญหาที่ทราบและวิธีแก้ไข ของเราเพื่อดูเคล็ดลับในการแก้ไขปัญหา
ยังต้องการความช่วยเหลือหรือไม่? ส่งตั๋วการสนับสนุน