Распространённые проблемы
Распространённые проблемыPolylang ведёт себя некорректно

Polylang ведёт себя некорректно

При использовании расширения Polylang, если вы замечаете следующие проблемы при получении данных через GraphQL из публичного endpoint:

  • Polylang не определяет корректно текущий язык для запросов GraphQL
  • Контент, специфичный для языка, не фильтруется должным образом
  • Вы получаете контент на неправильном языке или не получаете его вовсе

...и вы выполнили любое из следующих действий в Gato GraphQL:

  • Обновили путь GraphQL Single Endpoint
  • Обновили базовый slug для Custom Endpoints или Persisted Queries
  • Отключили любой endpoint (отключив соответствующий модуль)

...тогда вы должны применить то же самое изменение через hook, чтобы избежать конфликта.

Почему это происходит

Существует конфликт по времени между инициализацией Polylang и настройкой сервисного контейнера Gato GraphQL.

Polylang устанавливает фильтры pll_model и pll_context в процессе своей инициализации. Поскольку Gato GraphQL ещё не инициализирован, он не может получить корректные пути endpoint из базы данных, чтобы определить, поступает ли запрос от GraphQL endpoint, и переопределить модель и контекст на корректные (PLL_Admin_Model и PLL_Admin соответственно).

Обходное решение

Когда Polylang устанавливает фильтры pll_model и pll_context, Gato GraphQL предполагает пути по умолчанию для GraphQL endpoints.

Поэтому, если вы изменяете путь любого публичного endpoint через настройки плагина, вы должны применить то же самое изменение через hook.

Прочитайте руководство Репликация обновлений пути GraphQL endpoint через hooks для получения решения.