ข้ามไปยังเนื้อหาหลัก ข้ามไปยังแถบด้านข้าง

Home » เอกสารประกอบ WPML » โครงการที่เกี่ยวข้อง » WPML GraphQL – เพิ่มฟังก์ชันการทำงานหลายภาษาให้กับ WPGraphQL Schema

WPML GraphQL – เพิ่มฟังก์ชันการทำงานหลายภาษาให้กับ WPGraphQL Schema

WPML GraphQL ช่วยให้คุณสามารถสืบค้น กรอง และดึงข้อมูลเนื้อหาเฉพาะภาษาและคำแปลจาก WPGraphQL schema ได้

คุณสมบัติที่สำคัญ

กรองเนื้อหาตามภาษา รวมถึงเรื่อง (posts) อนุกรมวิธาน (taxonomies) ความคิดเห็น เมนู และรายการเมนู

ขยาย WPGraphQL ด้วยฟิลด์ภาษาเพื่อดึงข้อมูลเฉพาะจากปลั๊กอิน WPML

สอบถามข้อมูลในภาษาที่ติดตั้งทั้งหมดหรือเน้นเฉพาะภาษาที่เจาะจง

ปลั๊กอินที่จำเป็น

เพื่อเริ่มต้น ติดตั้งและเปิดใช้งานปลั๊กอินต่อไปนี้:

  • WPGraphQL
  • WPML
  • WPML String Translation
  • WPML GraphQL

หากต้องการรวมฟิลด์หลายภาษาจากปลั๊กอิน ACF ใน WPGraphQL schema โปรดติดตั้งสิ่งต่อไปนี้ด้วย:

คุณสามารถทำอะไรกับ WPML GraphQL ได้บ้าง?

WPML GraphQL ทำงานร่วมกับ WPGraphQL เพื่อให้คุณสามารถสืบค้นเนื้อหาหลายภาษาที่สร้างด้วย WPML ได้

จาก GraphQL → GraphQL IDE คุณสามารถใช้ Query Composer เพื่อ:

  • รับข้อมูลภาษาสำหรับเนื้อหาใดๆ ที่คุณสืบค้น
  • เข้าถึงคำแปลสำหรับเรื่อง อนุกรมวิธาน และความคิดเห็น
  • กรองคำถามของคุณตามภาษา
  • สืบค้นเรื่องเฉพาะในภาษาต่างๆ ด้วย ID หรือสลัก (slug)

ตัวอย่างเช่น ดังที่แสดงในภาพด้านล่าง คุณสามารถดึงรายการเรื่องทั้งหมดบนเว็บไซต์ของคุณได้อย่างง่ายดาย พร้อมด้วยรหัสภาษา สลัก URI และรายละเอียดสำหรับคำแปลของเรื่องเหล่านั้น

การใช้ฟิลด์ภาษาใน Query Composer เพื่อดึงข้อมูลเรื่องในทุกภาษา

ด้านล่างนี้ เราจะใช้ไซต์ทดสอบแบบหลายภาษาเพื่อแสดงวิธีใช้ WPML GraphQL ในการสืบค้นเนื้อหาและคำแปล

การสืบค้นข้อมูลภาษาและคำแปล

ด้วย WPML GraphQL คุณสามารถใช้ฟิลด์ language และ translation ในการสืบค้นของคุณได้:

  • ฟิลด์ 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 ช่วยให้คุณใช้ตัวกรอง language เพื่อ:

  • กรองเรื่อง รายการอนุกรมวิธาน เมนู รายการเมนู หรือความคิดเห็นตามภาษาที่กำหนด
  • ดึงเนื้อหาในภาษาใดภาษาหนึ่งโดยการตั้งค่าตัวกรองตามความเหมาะสม
  • รับเนื้อหาทั้งหมดโดยไม่คำนึงถึงภาษา โดยตั้งค่าตัวกรองเป็น all

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"
  }
  ]
  }
  }
  ]
  }
  }
}

การสืบค้นเรื่องเฉพาะในภาษาต่างๆ

ด้วย WPML GraphQL คุณยังสามารถสืบค้นเรื่องแต่ละเรื่องในภาษาใดก็ได้ด้วย ID ของเรื่องหรือสลัก

ตัวอย่างเช่น หากคุณมีเรื่องชื่อ ¡Hola mundo! (คำแปลภาษาสเปนของ Hello world!) โดยมีสลักคือ 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 ร่วมกับ ACF

หากคุณใช้ WPGraphQL ร่วมกับปลั๊กอิน ACF ส่วนเสริม WPML GraphQL และ ACFML (ACF Multilingual) จะช่วยขยายฟังก์ชันการทำงานนี้ ซึ่งช่วยให้คุณสามารถสืบค้นข้อมูลฟิลด์ที่กำหนดเองในภาษาต่างๆ ได้

WPGraphQL พร้อมส่วนขยาย ACF จะแสดงหน้าตัวเลือก ACF (Options Pages) เป็นออบเจ็กต์ราก ส่วนเสริม WPML GraphQL และ ACFML จะเพิ่มพารามิเตอร์ภาษาให้กับการสืบค้นหน้าตัวเลือก โดยต้องการรหัสภาษาที่ตรงกับภาษาใดภาษาหนึ่งที่ใช้งานอยู่บนไซต์ของคุณ (เช่น “de”, “pt-pt”) ซึ่งช่วยให้คุณสามารถสืบค้นข้อมูลในภาษาที่ต้องการได้:

query NewQuery {
  myOptionPage(language: "de") {
  addressFieldGroup {
  addressTitle
  repeaterAddressDetails {
  addressDetails
  }
  }
  }
}

เริ่มต้นใช้งาน WPML GraphQL

หากต้องการใช้ WPML GraphQL คุณต้องมีแผน WPML Multilingual CMS หรือ WPML Multilingual Agency ทั้งสองแผนจะให้สิทธิ์เข้าถึงปลั๊กอิน WPML และส่วนเสริมเพิ่มเติมที่หลากหลาย ซึ่งรวมอยู่ด้วยโดยไม่มีค่าใช้จ่ายเพิ่มเติม

ดูว่าแผนใดเหมาะสมที่สุดสำหรับไซต์ของคุณ

ต้องการความช่วยเหลือหรือไม่?

หากคุณมีปัญหาในการใช้ WPML GraphQL โปรดไปที่หน้า ปัญหาที่ทราบและแนวทางแก้ไข ของเราเพื่อดูเคล็ดลับในการแก้ปัญหา

ยังต้องการความช่วยเหลือหรือไม่? ส่งตั๋วการสนับสนุน

อัปเดตแล้ว
6 พฤษภาคม 2026