자주 발생하는 문제Polylang이 올바르게 작동하지 않는 경우
Polylang이 올바르게 작동하지 않는 경우
Polylang 확장 기능을 사용할 때, 공개 엔드포인트에서 GraphQL로 데이터를 가져오는 과정에서 다음과 같은 문제가 발생하는 경우:
- Polylang이 GraphQL 요청의 현재 언어를 올바르게 감지하지 못함
- 언어별 콘텐츠가 올바르게 필터링되지 않음
- 잘못된 언어의 콘텐츠가 반환되거나 콘텐츠가 전혀 반환되지 않음
...그리고 Gato GraphQL에서 다음 중 하나의 작업을 수행한 경우:
- GraphQL Single Endpoint의 경로를 업데이트함
- Custom Endpoints 또는 Persisted Queries의 기본 슬러그를 업데이트함
- 엔드포인트를 비활성화함(해당 모듈을 비활성화하여)
...그렇다면 충돌을 피하기 위해 동일한 변경 사항을 훅(hook)을 통해 적용해야 합니다.
이 문제가 발생하는 이유
Polylang의 초기화와 Gato GraphQL의 서비스 컨테이너 설정 사이에 타이밍 충돌이 있습니다.
Polylang은 초기화 과정에서 pll_model 및 pll_context 필터를 설정합니다. Gato GraphQL이 아직 초기화되지 않은 상태이므로, 요청이 GraphQL 엔드포인트에서 오는지 여부를 판단하고 모델과 컨텍스트를 올바른 값(각각 PLL_Admin_Model과 PLL_Admin)으로 재정의하기 위해 데이터베이스에서 올바른 엔드포인트 경로를 가져올 수 없습니다.
해결 방법
Polylang이 pll_model 및 pll_context 필터를 설정할 때, Gato GraphQL은 GraphQL 엔드포인트의 기본 경로를 가정합니다.
따라서 플러그인 설정에서 공개 엔드포인트의 경로를 변경한 경우, 동일한 변경 사항을 훅을 통해 적용해야 합니다.
해결책은 가이드 훅을 통한 GraphQL 엔드포인트 경로 업데이트 복제를 참조하시기 바랍니다.