Как локализовать дочернюю тему Вордпресс

23 июля 2020

Как сделать, чтобы при использовании дочерней темы Вордпресс, файлы локализации загружались из неё, а не из родительской темы, как это происходит в Вордпресс по умолчанию.

Внимание! Зарубежные маркетплейсы не принимают к оплате карты российских банков

Поддержка дочерних тем в Вордпресс появилась в третьей версии, почти ровно десять лет назад. И все эти годы вопросов по дочерним темам меньше не становится. Механизм на самом деле очень нужный и полезный, сильно упрощает работу с коммерческими темами — позволяет не вносить изменения в код основной темы, что даёт возможность своевременно обновлять тему без каких-либо потерь.

Дочерняя тема WordPress — это тема, которая расширяет функционал другой темы, называемой родительской темой, и позволяет изменять или дополнять функционал родительской темы.

WordPress Codex

Всё это прекрасно работает, пока не касаешься локализации дочерней темы. Файлы с переводами (.mo) обычно лежат в директории languages основной темы. Если их оставить там, они затрутся при первом же обновлении темы. Естественно, локализация темы слетит без возможности восстановления и интерфейс сайта будет снова на дефолтном английском языке. Если локализационные файлы просто скопировать в дочернюю тему, работать они вот так сразу не будут. Об этом сначала нужно известить Вордпресс. Делается это очень просто с помощью хука after_setup_theme и функции load_child_theme_textdomain().

Хук after_setup_theme вызывается после инициализации страницы перед хуком init и используется для установки базовых возможностей темы, а функция load_child_theme_textdomain() загружает файл перевода дочерней темы (.mo) в память, для дальнейшей работы с ним.

Добавляем такой код в файл functions.php дочерней темы

add_action( 'after_setup_theme', 'my_child_theme_setup' );
function my_child_theme_setup(){
    load_child_theme_textdomain( 'domain', get_stylesheet_directory() . '/languages' );
}

Вместо domain указываем уникальный текстовый домен темы.

Найти его можно в разных местах. Например, в style.css родительской темы.

В популярной теме «Bridge» это выглядит так

Как локализовать дочернюю тему Вордпресс
Bridge WordPress Theme: style.css

У «Avada» так

Как локализовать дочернюю тему Вордпресс
Avada WordPress Theme: style.css

Текстовый домен можно найти и в коде темы. Например, в дефолтной Вордпресс теме «2020» это выглядит так

Как локализовать дочернюю тему Вордпресс
Twenty Twenty: functions.php

В других темах аналогично.

Иван Данилин
Автор Иван Данилин

Фулстек веб‑разработчик, специализируюсь на платформе WordPress

Подробнее
Комментарии
  1. А что дальше то? Продолжения не будет?) Как создавать файлы перевода и куда их класть?
Добавить комментарий