Vấn đề thường gặp
Vấn đề thường gặpPolylang hoạt động sai

Polylang hoạt động sai

Khi sử dụng tiện ích mở rộng Polylang và bạn nhận thấy các sự cố sau khi lấy dữ liệu bằng GraphQL từ một endpoint công khai:

  • Polylang không phát hiện đúng ngôn ngữ hiện tại cho các yêu cầu GraphQL
  • Nội dung dành riêng cho ngôn ngữ không được lọc chính xác
  • Bạn nhận được nội dung sai ngôn ngữ hoặc không có nội dung nào

...và bạn đã thực hiện một trong những thao tác sau trong Gato GraphQL:

  • Cập nhật đường dẫn của GraphQL Single Endpoint
  • Cập nhật slug cơ sở của Custom Endpoints hoặc Persisted Queries
  • Vô hiệu hóa bất kỳ endpoint nào (bằng cách vô hiệu hóa module tương ứng)

...thì bạn phải áp dụng cùng một thay đổi thông qua một hook, để tránh xung đột.

Tại sao điều này xảy ra

Có một xung đột về thời điểm khởi tạo giữa quá trình khởi tạo của Polylang và quá trình thiết lập service container của Gato GraphQL.

Polylang thiết lập các bộ lọc pll_modelpll_context trong quá trình khởi tạo của nó. Vì Gato GraphQL chưa được khởi tạo, nó không thể lấy các đường dẫn endpoint chính xác từ cơ sở dữ liệu, để xác định xem yêu cầu có đến từ một GraphQL endpoint hay không và ghi đè model cùng context bằng các giá trị chính xác (PLL_Admin_ModelPLL_Admin tương ứng).

Giải pháp tạm thời

Khi Polylang thiết lập các bộ lọc pll_modelpll_context, Gato GraphQL giả định các đường dẫn mặc định cho các GraphQL endpoint.

Do đó, nếu bạn thay đổi đường dẫn của bất kỳ endpoint công khai nào thông qua phần Cài đặt của plugin, bạn phải áp dụng cùng một thay đổi thông qua hook.

Đọc hướng dẫn Sao chép các cập nhật đường dẫn GraphQL endpoint thông qua hooks để biết giải pháp.