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

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

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

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

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

กรองเนื้อหาตามภาษา รวมถึงโพสต์ อนุกรมวิธาน ความคิดเห็น เมนู และรายการเมนู

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

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

WPML GraphQL ไม่เข้ากันได้กับ WPGraphQL 2.0 ในขณะนี้ เรากำลังดำเนินการอย่างจริงจังเพื่อสร้างความเข้ากันได้และจะอัปเดตเมื่อพร้อมใช้งาน

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

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

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

คุณสามารถทำอะไรได้บ้างด้วย 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 โปรดไปที่หน้า ปัญหาที่ทราบและวิธีแก้ไข ของเราเพื่อดูเคล็ดลับในการแก้ไขปัญหา

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

อัปเดตแล้ว
กุมภาพันธ์ 17, 2025