Почему происходит редирект в Polylang на другую версию языка?
Вынуждена обратиться за помощью. Мониторила вопрос в нете и у многих разработчиков возникает такая проблема.
Сайт Landing WordPress, мультиязычность реализована Polylang.
example.com автоматически редиректит на example.com/en. А если включаешь какой-то плагин кеширования то вообще не работают переключатели языков. Google Page Speed при запросе example.com пишет что "Запрашиваемый URL выполняет переадресацию на следующий URL: example.com/en/.
На одном из форумов предлагали решение - отключить “Detect browser language” в Polylang. Пробовала, переключатели языков работают, но переадресация остается. К тому же эта функция важна. Хотя может есть способ как это сделать без плагина.
Всем буду благодарна за помощь.
Мультиязычный сайт на вордпрессе - это извращение.
"Мультиязычный сайт на вордпрессе - это извращение."
Значит вы не умеете с ним работать
Вам нужно убрать переадресацию для Google Page Speed? Какой адреса сайта?
Не то чтобы для Google page speed, эта ошибка заметна и без него если включить на сайте плагин кеширования. avrora-trading.ru
Напоминает несовместимость плагинов. С такими проблемами с polylang не доводилось сталкиваться, но вот нормальный плагин для кеширования, который бы был совмести с мультисайтом когда-то пришлось поискать. Я на вашем места попробовал бы подобрать другой плагин для кеширования, благо их хватает, к примеру Comet Cache. Но лучше экспериментировать на копии сайта или хотя бы сделать бекап.
Это механика полилэнга, ничего с этим не сделать. Он всегда ставит редирект, вне зависимости от включения/отключения определения языка браузера. Теоретически это исправить можно. Но на практике проще другой плагин попробовать, если для вас это критично.
Мне удалось решить проблему этими настройками в Polylang.
Нашел решение проблемы на GitHub
Заходим в polylang/frontend/frontend-static-pages.php
ищем текст
/** * Prevents canonical redirection if we are on a static front page * * @since 1.8 * * @param string $redirect_url * @return bool|string */ public function pll_check_canonical_url( $redirect_url ) {и меняем то что начинается public на
public function pll_check_canonical_url( $redirect_url ) { return $this->options['redirect_lang'] && ! empty( $this->curlang->page_on_front ) && ( is_page( $this->curlang->page_on_front ) ? false : $redirect_url ); }Проверено, работает!
https://b4m.org.ua - тут можно еще что то почитать