Вы здесь: Главная » Wordpress » Использование плагина Polylang при разработке темы WordPress

Использование плагина Polylang при разработке темы WordPress

Отличный плагин Polylang, который вы можете скачать с репозитория плагинов WordPress, позволяет сделать ваш сайт мультиязычным путем добавления отдельных страниц, записей, пользовательских типов записей и т.п. на нужных вам языках.

Плюсом этого плагина является то, что он позволяет создавать:

  1. Копии страниц/записей на вашем сайте на другом (других) языках:
    Настройки Polylang для записей (страниц)
  2. Добавлять отдельные виджеты на разных языках:
    Polylang в настройках виджетов
  3. Добавлять переключатель языков в меню:
    Переключатель языка в меню Polylang

Все эти опции вы получаете вместе с установкой, активацией и настройкой языков плагина. Однако при использовании какой-либо темы или при написании своей темы вы, скорей всего, столкнетесь с тем, что часть строк или опций не переведены на все нужные вам языки.

Добавление кода вывода языков в шапке сайта

Допустим, вы решили вынести переключатель языков из меню в шапку сайта отдельным блоком для мобильных и планшетов. Вы можете это сделать с помощью такого кода:

Результатом станет вывод названий языков, которые были заданы в настройках Polylang. Вы можете посмотреть, какие аргументы передавать в функцию pll_the_languages()  в официальной документации.

Переключатели языка в меню

Настройки языков в плагине Polylang

Добавление поддержки перевода строк Polylang в функции темы

Для того чтобы ваш код мог быть переведен на любой язык, доступный в WordPress-плагине Polylang, необходимо использовать специальные функции, описанные в документации этого плагина. Также документацию по функциям можно найти здесь.

В документации описаны 2 функции - pll__('Text') и pll_e('Text'), которые позволяют вывести любую строку в файлах вашей темы с переводом, который определяется в настройках плагина. Разница в них заключается в том, что pll__('Text') вызывает функции перевода, но не выводит строку, а  pll_e('Text') содержит в себе оператор echo для вывода перевода.

Вы можете добавить эти функции в любом месте любого файла вашей темы. Например, для вывода элементов формы:

Для файла single.php вы можете использовать перевод строк в цикле WordPress:

В этом коде мы еще выводим ссылку на архив новостей, т.е. стационарную страницу блога со всеми записями.

Однако, это только полдела.

Для того чтобы нужные вам строки попали в настройки перевода строк, необходимо привязать вызов функции к action init и использовать в ней функции плагина Polylang pll_register_string() c 2 параметрами: вашим названием и текстом строки, который вы ранее использовали в функциях pll_e или pll__. Обратите внимание, что в двух строках используется тег перевода строки <br>, и при этом перевод учитывает его, а затем отображает на страницах сайта.

В результате работы этой функции вы увидите добавление настроек в таблице, доступной через меню Languages → Strings translations. Вам нужно ввести верный перевод для ваших строк в соответствии с указанными языками.

Перевод строк в настройках плагина Polylang

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

Вывод перевода Polylang в низу одиночной записи

Настройки в Customizer для разных языковНастройки Customizer для вывода постов на главной для 2-х языков

С точки зрения разработки темы обычно возникает вопрос о переводе настроек темы, которые на данный момент чаще всего располагаются в Customizer - Настройщике.

Например, вам необходимо в настройках сделать выбор постов для вывода их на главной странице в количестве 3-х штук. Главная страница существует, например, в 2-х вариантах - на русском и на украинском языке. Внешний вид настроек показан на скриншоте слева.

Каким образом можно выбрать отдельно посты для русской версии страницы, отдельно - для украинской? Вариант кода представлен ниже. В нем вы проверяем, входит ли пост в выборку по русскоязычным постам if($post->ID == pll_get_post($post->ID,'ru') или украиноязычным: if(pll_get_post($post->ID,'uk')).

Обратите внимание, что код для файла customizer.php представлен не полностью, а только для выборки постов. В функции theme_slug_customize_register() нужно еще создать панель настроек с помощью $wp_customize->add_panel() и секцию $wp_customize->add_section('theme_slug_homepage_section').

Подключаем файл стилей, записывая в functions.php темы такой код:

Сами стили мы записываем в файле, который размещаем в папке css/admin нашей темы:

В файле front-page.php, который отвечает за формирование статической главной страницы, запишем следующий код:

Небольшие пояснения к коду:

  • theme_slug_get_option() - функция, отвечающая за получение всех настроек темы. Вы можете написать ее сами.
  • THEME_URI - константа, определенная в файле functions.php методом define('THEME_URI', get_template_directory_uri());
  • get_the_post_thumbnail_url( $the_post->ID, 'post-medium')  - получение url изображения записи, которое устанавливается справа внизу в настройках записи для того, чтобы использовать его в качестве фона для блока с записью на главной.

Результат - на разных языках посты выглядят по-разному, подтягивая только статьи на нужном языке:Вывод постов на главной странице дляpolylang

Плагины для перевода настроек с помощью Ploylang

Добавление строк для перевода плагинов и тем

Плагин Theme and plugin translation for Polylang (TTfP) позволяет найти строки в плагинах и темах, которые можно обернуть в функции pll_e('Text') или pll__('Text'). Как правило, в темах и плагинах, которые создаются согласно рекомендациям Кодекса WordPress, вывод строк, предназначенных для перевода на другие языки, формируется с помощью WordPress-функций _e('Text', 'theme_domain') или __('Text', 'theme_domain'). Первый параметр в этих функция 'Text' - это текст для перевода, а второй - 'theme_domain' - это, как правило, название вашей темы (и имя папки с ней).

В результате работы плагина, в меню Languages → Strings translations у вас появятся строки из нужных плагинов/темы, которые вы отмечаете в настройках Theme and plugin translation for Polylang (TTfP):

Настройки плагина для перевода тем и плагинов Строки из плагина для перевода тем и плагинов

Плагин изменения настроек темы в зависимости от языка

Для перевода настроек тем предназначен плагин Customizer Polylang, который добавляет создает переключатель языков в настройках темы и позволяет вам сделать отдельные настройки для каждого из указанных в настройках Polylang языков. На изображении видно, каким образом вы можете использовать этот плагин после установки и активации.

Customizer Polylang

Автор: Админ

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *