Цей спосіб розробки мультимовності для FSE WordPress теми – хороший варіант для невеликих вебсайтів, і ідеальний для тих вебмайстрів, хто не хоче підключати зайві плагіни і хоче зробити все максимально мануально.
Вся суть в тому, щоб зробити мовний варіант для кожної частини шаблону, після цього створити темплейти сторінок під кожну мовну версію, які будуть складатись з попередньо створених частин шаблону. Перемикач мов, у вигляді шорткоду, вставляєм вручну в хедери всіх мовних версій, а для слагу – пишем код, який я нижче вставлю в статті.
Встановлення дочірньої теми і створення всіх сторінок
Отже, почнем з того у вас як вихідні дані вже є встановлений локальний сервер на ПК, встановлений WordPress та будь яка FSE тема.
Далі створюєм дочірню тему і активуєм її. Відео як це зробити дивіться за посиланням. Для цього я встановлюваа плагін Create Block Theme – його використовуєм і видаляєм, постійно його мати непотрібно.
![дочірня тема WordPress](https://victoriaweb.me/wp-content/uploads/image-24-1024x467.png)
Як приклад я створюю сайт на 2х мовах – англійській та французькій. При такому розкладі а в адмінці сайту створюєм потрібні нам сторінки в двох мовних варіантах, які має мати сайт, наприклад в моєму випадку я створюю 6 сторінок – (Homepage + About Us + Contact ) * 2 мовні версії:
Eng Homepage – Fr Homepage
Eng About Us – Fr About us
Eng Contact- Fr Contact
Створення частин шаблону для всіх мовних версій
В моєму випадку я створюю тільки хедер та футер в двох варіантах. В англ. хедері створюєм навігацію, що веде тільки на англійські версії сторінок, і зрозуміло, що весь контент в ньому має бути також англійською. Аналогічно і з французською версією елементів шаблону.
![](https://victoriaweb.me/wp-content/uploads/image-34-1024x546.png)
![](https://victoriaweb.me/wp-content/uploads/image-35-1024x502.png)
![](https://victoriaweb.me/wp-content/uploads/image-26.png)
Створення шаблонів сторінок для всіх мовних версій
Використовуючи попередньо створені частини шаблону, ствоюєм шаблони сторінок по схемі:
![browser icon](https://victoriaweb.me/wp-content/uploads/browser.png)
Шаблон французською
FR Simple Page = fr header+content+Fr footer
![browser icon](https://victoriaweb.me/wp-content/uploads/browser.png)
Шаблон англійською
EN Simple Page = eng header+content+eng footer
Templates -> add new template -> custom template
На відео я скопіювала вихідний код вже існуючого шаблону сторінки і вставила його в новий, відредагувавши – додаєм тільки ті елементи шаблону, які ми створили раніше у мовних версіях (хедер+футер).
![](https://victoriaweb.me/wp-content/uploads/image-27.png)
Налаштування читання
Тепер коли у нас створені головні сторінки, йдемо в налаштування читання і обираєм нашу homepage (eng/fr – під ваш вибір – в мене головна мова це англійська) головною в полі A static page -> homepage.
![](https://victoriaweb.me/wp-content/uploads/image-36.png)
Створюємо перемикачі мов
Код нижче, потрібно вставити у файл дочірньої теми functions.php. Ці два шматки коду для створення шорткодів пермикання мов, які ми вставимо на кожну сторінку сайту.
Перемикач на французьку для англійської версії сторінки
// Shortcode for English to French switcher
function en_to_fr_switcher($atts) {
$atts = shortcode_atts(
array(
'slug' => '',
'path' => '',
),
$atts
);
// Choose between the slug and path based on which is provided
$url_part = isset($atts['path']) && $atts['path'] ? $atts['path'] : (isset($atts['slug']) ? $atts['slug'] : '');
// Get the URL of the French page
$fr_url = get_home_url(null, 'fr/' . $url_part);
// Return the switcher link
return "<a href='{$fr_url}' class='language-switcher'>Français</a>";
}
add_shortcode('en_to_fr', 'en_to_fr_switcher');
Перемикач на англійську для французської версії сторінки
// Shortcode for English to French switcher
function en_to_fr_switcher($atts) {
$atts = shortcode_atts(
array(
'slug' => '',
'path' => '',
),
$atts
);
// Choose between the slug and path based on which is provided
$url_part = (isset($atts['path']) && $atts['path']) ? $atts['path'] : (isset($atts['slug']) ? $atts['slug'] : '');
// Get the URL of the French page
$fr_url = get_home_url(null, 'fr/' . $url_part);
// Return the switcher link
return "<a href='{$fr_url}' class='language-switcher'>Français</a>";
}
add_shortcode('en_to_fr', 'en_to_fr_switcher');
Додавання перемикачів мов на всі сторінки сайту
Додаємо шорткод на кожну сторінку яка має переклад, аргументи шорткоду – це слаг або посилання на сторінку без домену. На прикладі нижче на головній сторінці немає аргументу бо вона головна, проте всі інші сторінки його матимуть.
![](https://victoriaweb.me/wp-content/uploads/image-20-1024x412.png)
![](https://victoriaweb.me/wp-content/uploads/image-21-1024x413.png)
Як виглядатиме шорткод для сторінки About Us: [fr_to_en slug=”about-us”]
де about-us – це слаг сторінки, його можна скопіювати з поля “slug” в розділі Pages
![](https://victoriaweb.me/wp-content/uploads/image-38.png)
![](https://victoriaweb.me/wp-content/uploads/image-37.png)
У випадку коли сторінка матиме свої дочірні сторінки, то слаги для їх шорткодів будуть виглядати як на скріншоті нижче:
![список шорткодів в адмінці вордпрес](https://victoriaweb.me/wp-content/uploads/tempsnip2.jpg)
Зверніть увагу, що у дочірніх сторінок замість slug ми використовуєм path.
Підключення шаблонів до сторінок
В розділі pages -> page вибираєм в полі template відповідні шаблони для кожної сторінки.
![](https://victoriaweb.me/wp-content/uploads/image-25-1024x277.png)
![](https://victoriaweb.me/wp-content/uploads/image-23-1024x287.png)
Генерування тегу lang під кожну мовну версію сторінки
Код нижче для файлу header.php. Він додасть динамічно тег мови на якій зроблена сторінка, зележно від того чи є в її адресі слаг /fr/ або /en/. Припустимо, у вас є сторінки французькою мовою з URL, які починаються з /fr/. Код виглядатиме так:
<!DOCTYPE html>
<html <?php
if (is_page('your-english-page-slug')) {
echo 'lang="en"';
} elseif (is_page('your-french-page-slug')) {
echo 'lang="fr"';
} else {
language_attributes(); // Це встановить мову за замовчуванням
}
?>>
<head>
<meta charset="<?php bloginfo( 'charset' ); ?>">
<?php
if (is_page('your-english-page-slug')) {
echo '<meta http-equiv="Content-Language" content="en">';
} elseif (is_page('your-french-page-slug')) {
echo '<meta http-equiv="Content-Language" content="fr">';
} else {
echo '<meta http-equiv="Content-Language" content="' . get_locale() . '">';
}
?>
<title><?php wp_title(); ?></title>
<?php wp_head(); ?>
</head>
<body <?php body_class(); ?>>
Перевірка перемикача мов
Найголовніше в самому кінці – це перевірити кожну сторінку щоб:
- було підключено правильний шаблон, який відповідає її мовній версії;
- було вставлено на сторінку правильний шорткод (з slug або path);
- переклікати всі перемикачі мов на кожній сторінці і переконатись що вони прауюють правильно;
Висновки
Так як в цьому методі багато мануальної роботи на кожній сторінці, то я рекомендую його використовувати для простих сайтів з невеликою кількісю сторінок та мінімальним функціоналом. Великий плюс методу в тому, що тут не потрібні ніякі плагіни і нічого ваш сайт не буде гальмувати і додавати вразливостей, що для безпеки є дуже важливим. Відео як я практикувала все що тут написано: