Вопрос или проблема
Итак, я установил Polylang, и проблема, с которой я столкнулся, связана с функцией предварительного просмотра постов на моем сайте WordPress. Когда я предварительно просматриваю пост на языке, отличном от стандартного, меня переводит на страницу с ошибкой 404, если я вручную не изменю домен с текущего на домен “.cz”. (Я использую разные доменные зоны верхнего уровня для каждого языка). Я хочу найти решение, которое позволит функции предварительного просмотра постов работать правильно с плагином Polylang на каждом языке.
Все обновления установлены, все актуально.
Спасибо!
Я знаю, что я опоздал на 2 часа, но у меня была такая же проблема. Я переписал URL, чтобы игнорировать функциональность polylang следующим образом:
if ( (isset($_GET['page_id'])) || (isset($_GET['preview']) && $_GET['preview'] === 'true') ) {
$query->query_vars['pagename'] = '';
}
Проблема в том, что polylang добавляет /{new-language}/ к URL, но WP рассматривает это как страницу. Эта функция игнорирует это и тем самым решает проблему.
Ответ или решение
Ошибка 404 при попытке предпросмотра черновика поста на другом языке в WordPress с плагином Polylang – это распространённая проблема, связанная с неправильным перенаправлением на странице предпросмотра. В этой статье мы рассмотрим причины возникновения данной ошибки и возможные способы её решения.
Причины возникновения ошибки 404
Когда вы устанавливаете плагин Polylang, он добавляет функциональность, позволяющую создавать многоязычный контент, однако это может повлиять на управление URL-адресами. Если вы используете разные доменные зоны (TLD) для каждого языка, ошибки могут возникать при предпросмотре черновиков, так как WordPress обрабатывает URL-адреса без учета языкового контекста.
По умолчанию, когда вы пытаетесь просмотреть пост на другом языке, Polylang добавляет к URL адресу текущий язык, что может вызвать конфликт с маршрутизацией WordPress, особенно если страница еще не опубликована.
Способы решения проблемы
-
Проверка настроек Polylang: Убедитесь, что все настройки Polylang корректно сконфигурированы для работы с несколькими доменами. Перейдите в раздел "Языки" и убедитесь, что для каждого языка установлен соответствующий домен.
-
Изменение структуры постоянных ссылок: Попробуйте сохранить настройки постоянных ссылок. Перейдите в "Настройки" » "Постоянные ссылки" и нажмите "Сохранить изменения". Это может помочь в обновлении пермалинков и устранении временных ошибок.
-
Код для игнорирования языковых параметров: Как вы упомянули, можно использовать кастомный код для обработки предпросмотра. Приведенный вами фрагмент кода может быть улучшен для обработки URL-адресов при предпросмотре черновиков. Вот пример кода, который может помочь:
add_action('pre_get_posts', function($query) { if (is_preview() && (isset($_GET['page_id']) || (isset($_GET['preview']) && $_GET['preview'] === 'true'))) { // Игнорируем текущий язык на странице предпросмотра unset($query->query_vars['lang']); } });
Этот код должен добавляться в файл
functions.php
вашей темы или в отдельный плагин, чтобы избежать проблем с обновлениями темы. -
Проверка других плагинов и конфликтов: Иногда другие плагины могут конфликтовать с Polylang. Отключите временно все плагины, кроме Polylang, и проверьте, сохраняется ли ошибка 404. Затем постепенно включайте плагины, чтобы выявить потенциальный конфликт.
-
Тестирование на чистой установке WordPress: Если проблема продолжает возникать, попробуйте установить WordPress на локальном сервере или на другом хостинге и настройте только Polylang. Это поможет вам определить, является ли проблема специфической для вашего окружения или конфигурации.
Заключение
Решение проблемы с ошибкой 404 при предпросмотре черновиков на разных языках в WordPress с использованием Polylang требует проверки различных настроек. Следуя вышеуказанным рекомендациям и подходам, вы сможете диагностировать и устранить проблему. Если же ни один из методов не сработает, стоит рассмотреть возможность обращения к разработчику плагина или консультанту по WordPress для более детального анализа ситуации.