Polylang ทำงานผิดปกติ
เมื่อใช้งาน Polylang extension และพบปัญหาดังต่อไปนี้ขณะดึงข้อมูลผ่าน GraphQL จาก public endpoint:
- Polylang ไม่สามารถตรวจจับภาษาปัจจุบันสำหรับ GraphQL requests ได้อย่างถูกต้อง
- เนื้อหาที่เฉพาะเจาะจงตามภาษาไม่ถูกกรองอย่างถูกต้อง
- คุณได้รับเนื้อหาในภาษาที่ผิด หรือไม่ได้รับเนื้อหาเลย
...และคุณได้ดำเนินการอย่างใดอย่างหนึ่งต่อไปนี้ใน Gato GraphQL:
- อัปเดต path ของ GraphQL Single Endpoint
- อัปเดต base slug ของ Custom Endpoints หรือ Persisted Queries
- ปิดใช้งาน endpoint ใดๆ (โดยการปิดใช้งาน module ที่เกี่ยวข้อง)
...คุณต้องนำการแก้ไขเดียวกันนั้นไปใช้ผ่าน hook เพื่อหลีกเลี่ยงความขัดแย้ง
เหตุใดจึงเกิดปัญหานี้
มีความขัดแย้งด้านเวลาระหว่างการเริ่มต้นของ Polylang และการตั้งค่า service container ของ Gato GraphQL
Polylang ตั้งค่า pll_model และ pll_context filters ในระหว่างกระบวนการเริ่มต้นใช้งาน เนื่องจาก Gato GraphQL ยังไม่ได้เริ่มต้น จึงไม่สามารถดึง endpoint paths ที่ถูกต้องจากฐานข้อมูลได้ เพื่อตรวจสอบว่า request มาจาก GraphQL endpoint หรือไม่ และเพื่อแทนที่ model และ context ด้วยค่าที่ถูกต้อง (ได้แก่ PLL_Admin_Model และ PLL_Admin ตามลำดับ)
วิธีแก้ปัญหาชั่วคราว
เมื่อ Polylang ตั้งค่า pll_model และ pll_context filters, Gato GraphQL จะสมมติว่าเป็น default paths สำหรับ GraphQL endpoints
ดังนั้น หากคุณแก้ไข path ของ public endpoint ใดๆ ผ่านการตั้งค่าของ plugin คุณต้องนำการแก้ไขเดียวกันนั้นไปใช้ผ่าน hook ด้วย
อ่านคู่มือ การจำลองการอัปเดต GraphQL endpoint path ผ่าน hooks เพื่อดูวิธีแก้ปัญหา