Как сделать переключатель языков в коде, на Polylang?
Мне нужно сделать переключатель языков на сайте на wp, код фронта на скрине и вид его тоже, какая должна быть php часть чтобы он работал не понимаю, никакие туторы не помогли
Дополнительно:
Нарушение правил 3.8 и 5.12
можете взять за основу и переделать под свой внешний вид
https://qna.habr.com/q/688307
- Оно не работает чего-то, даже без стилей и т.д.
- Bogdan Bukievskiy, ну если вы не напишите какая ошибка при попытке запустить, то и посоветовать ничего не получится
Ответы:
Что именно из документации плагина не понятно?
https://polylang.pro/doc/the-language-switcher/
Визуально можно сделать как угодно при помощи html и css, но с этим плагином, скорее всего, такого html кода у вас не будет.
Опишите проблему, и специалист поможет с настройкой, исправлением ошибки или доработкой сайта. Подберём понятный план работ без лишней переписки.
Пока нет других ответов. Будьте первым, кто поможет автору.
Ответить на вопрос


В Polylang не нужно вручную собирать ссылки на языки через свои SQL-запросы. У плагина есть функция
pll_the_languages(), которая умеет вернуть массив языков. Его удобно использовать для кастомного переключателя в шапке или меню.Пример вывода своего HTML:
if (function_exists('pll_the_languages')) { $languages = pll_the_languages([ 'raw' => 1, 'hide_if_empty' => 0, ]); if (!empty($languages)) { echo '<ul class="lang-switcher">'; foreach ($languages as $lang) { $class = !empty($lang['current_lang']) ? ' is-active' : ''; echo '<li class="lang-switcher__item' . esc_attr($class) . '">'; echo '<a href="' . esc_url($lang['url']) . '" hreflang="' . esc_attr($lang['locale']) . '">'; echo esc_html(strtoupper($lang['slug'])); echo '</a>'; echo '</li>'; } echo '</ul>'; } }
CSS:
.lang-switcher { display: flex; gap: 8px; list-style: none; padding: 0; margin: 0; } .lang-switcher a { display: inline-flex; padding: 6px 10px; border-radius: 6px; text-decoration: none; } .lang-switcher .is-active a { background: #1f6bff; color: #fff; }
Если используете кэш, проверьте, что ссылки не кэшируются неправильно между языками. И не забывайте: переключатель языка должен вести на перевод текущей страницы, если он есть. Polylang сам отдаёт правильный URL в массиве
raw.Если перевода текущей страницы нет, решите заранее, что показывать: ссылку на главную выбранного языка, неактивный пункт или скрытый язык. Для SEO обычно лучше не вести пользователя на 404 и не подставлять случайную страницу другого языка.
Также проверьте
hreflangв исходном коде. Переключатель языка в шапке — это только навигация для пользователя, а поисковикам нужны корректные альтернативные языковые URL. Polylang обычно выводит их сам, если переводы связаны между собой.