คิวรีเนื้อหาตามภาษาจากส่วนหน้าเว็บไซต์ของคุณ
ทุกคิวรีของ WPGraphQL จะได้รับอาร์กิวเมนต์ language กรองโพสต์ ประเภทโพสต์แบบกำหนดเอง เทอมของอนุกรมวิธาน เมนู รายการเมนู และความคิดเห็นตามภาษาได้ในฟิลด์เดียว โดยไม่ต้องกรองหลังการคิวรีที่ส่วนหน้าเว็บไซต์ ไม่ต้องเพิ่มปริมาณคำขอเป็นสองเท่า และไม่ต้องเดาภาษา
query PostsES {
posts(where: { language: "es" }) {
nodes { slug uri title }
}
}
เมื่อคุณกรองโหนดระดับบนสุดตามภาษา รายการที่เชื่อมโยงกัน (หมวดหมู่ แท็ก อนุกรมวิธานที่กำหนดเอง) จะใช้ภาษาเดียวกันโดยอัตโนมัติ ผลลัพธ์จะมีความสอดคล้องกันโดยไม่ต้องใช้อาร์กิวเมนต์เพิ่มเติมสำหรับแต่ละฟิลด์ที่ซ้อนกัน
ต้องการทุกอย่างโดยไม่คำนึงถึงภาษาสำหรับไซต์แมป XML หรือการนับรวมใช่หรือไม่ ส่งค่า 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 ทำงานร่วมกับเราเพื่อให้เลเยอร์หลายภาษาสามารถทำงานไปพร้อมกับสคีมาได้ เมื่อ WPGraphQL ออกเวอร์ชันที่เผยแพร่ใหม่ WPML GraphQL ก็จะรองรับตามมาทันที
ทำงานร่วมกับ ACF เมื่อคุณเพิ่ม ACFML และ WPGraphQL for ACF
เว็บไซต์ Headless จำนวนมากสร้างโมเดลเนื้อหาของตนใน Advanced Custom Fields และแสดงผลผ่าน WPGraphQL เพิ่ม ACFML และ WPGraphQL for ACF แล้วข้อมูล ACF ของคุณจะปฏิบัติตามกฎภาษาเดียวกันกับส่วนที่เหลือของสคีมา
คิวรีหน้าตัวเลือก ACF ในภาษาใดก็ได้
หน้าตัวเลือกจะอยู่นอกโพสต์ใด ๆ ดังนั้นจึงใช้อาร์กิวเมนต์ language ของตัวเอง ฟิลด์ย่อยภายใน Repeater และเนื้อหาแบบยืดหยุ่นจะส่งคืนในภาษานั้นด้วย คิวรีด้านล่างจะอ่าน Repeater 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 นั้น และจะเก็บ ID ต้นฉบับไว้เมื่อยังไม่มีคำแปล คุณสามารถตั้งค่าตัวเลือกนี้สำหรับแต่ละฟิลด์ได้ในตัวแก้ไขกลุ่มฟิลด์ ACF ภายใต้ Translation preferences ดู ฟิลด์ความสัมพันธ์ ในคู่มือการแปลฟิลด์กำหนดเองของ ACF ของเรา
query BlendsES {
posts(where: { language: "es" }) {
nodes {
title
postExtras {
relatedGuide {
nodes { ... on Post { title languageCode } }
}
}
}
}
}
โพสต์ภาษาสเปนจะส่งคืนคู่มือภาษาสเปน
กำหนดภาษาในทุกคำขอ คิวรีที่อ่านโพสต์หนึ่งรายการตาม ID หรือสลักจะไม่มีตัวกรอง language จากนั้นคิวรีจะทำงานในภาษาเริ่มต้น และโพสต์ที่เกี่ยวข้องก็จะส่งคืนในภาษาเริ่มต้นด้วยเช่นกัน
วิธีที่คุณกำหนดภาษาจะขึ้นอยู่กับรูปแบบ URL ของ WPML ของคุณ สำหรับโดเมนต่อภาษา ให้เรียกใช้ปลายทางของภาษานั้น: 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" }
]
}
}
}
]
}
}
}
ฟิลด์นี้ชี้ไปที่คู่มือสองรายการ มีเพียงรายการเดียวที่แปลเป็นภาษาสเปน ดังนั้นคิวรีภาษาสเปนจึงส่งคืนหนึ่งรายการ ส่วนหน้าเว็บไซต์ของคุณจะได้รับรายการที่สั้นลง และจะไม่มีการผสมภาษา แปลโพสต์ที่หายไป แล้วโพสต์นั้นจะปรากฏในคิวรีเดียวกัน
รายการจะอยู่ในภาษาเดียวเมื่อประเภทโพสต์สามารถแปลได้ หากคุณตั้งค่าประเภทโพสต์เป็น Display as translated WPML จะส่งคืนคู่มือที่ไม่ได้แปลในภาษาเริ่มต้น จากนั้นรายการจะผสมภาษา