Одна из частых проблем при создании многоязычных сайтов на WordPress — это корректный перевод постоянных ссылок (Permalinks). Особенно это актуально для сайтов, где URL-адреса содержат части на разных языках, например, названия рубрик, таксономий или пользовательские сегменты URL. Если не настроить перевод постоянных ссылок, то посетители могут сталкиваться с некорректными страницами, ошибками 404 или проблемами индексации поисковыми системами.
Почему возникает проблема с переводом постоянных ссылок в WordPress
WordPress по умолчанию формирует постоянные ссылки на основе слагов таксономий, типов записей и названий страниц. В многоязычных сайтах эти слаги должны отражать язык контента, иначе URL не будут соответствовать языковому контексту.
Например, рубрика «Новости» в английской версии должна иметь URL /en/news/, а в русской — /ru/novosti/. Без правильной настройки WordPress может показывать одну и ту же ссылку для всех языков или вовсе некорректный адрес.
Это происходит из-за того, что WordPress не имеет встроенного механизма для динамического перевода слагов, и многие плагины для многоязычности требуют дополнительной настройки или кода.
Решение через плагины: WPML и Polylang
Если вы используете популярные плагины для многоязычности, такие как WPML или Polylang, то они уже содержат функционал для перевода постоянных ссылок, но иногда возникают нюансы с настройками.
Перевод слагов в WPML
WPML позволяет переводить слаги таксономий через интерфейс:
- Откройте «WPML» → «Настройки» → «Перевод таксономий».
- Выберите нужную таксономию, например, рубрики или метки.
- Нажмите «Перевести» и введите переводы слагов для каждого языка.
После сохранения нужно сбросить правила постоянных ссылок в «Настройки» → «Постоянные ссылки». Это перегенерирует .htaccess и устранит ошибки.
Перевод слагов в Polylang
Polylang также поддерживает перевод слагов таксономий, но в бесплатной версии этот функционал ограничен. Для полного контроля рекомендуется использовать платное расширение Polylang Pro.
В Polylang Pro перевод слагов происходит через интерфейс:
- В разделе «Языки» выберите настройку для перевода таксономий.
- Для каждой таксономии задайте переводы слагов.
- Перегенерируйте постоянные ссылки.
Если вы не используете платную версию, можно применить пользовательский код для перевода.
Решение через код: динамический перевод слагов таксономий
Если вы хотите реализовать перевод постоянных ссылок самостоятельно, можно использовать фильтры WordPress для замены слагов в зависимости от текущего языка. Ниже пример такой реализации, назовём функцию с префиксом wptranslate для уникальности.
Пример кода для перевода слага рубрики
function wptranslate_filter_category_base($category_base) {
$current_lang = apply_filters('wpml_current_language', null); // Если используете WPML
if (!$current_lang) {
$current_lang = get_locale(); // Альтернативно получить язык
}
$translations = array(
'ru_RU' => 'novosti',
'en_US' => 'news',
'de_DE' => 'nachrichten'
);
if (isset($translations[$current_lang])) {
return $translations[$current_lang];
}
return $category_base;
}
add_filter('category_rewrite_rules', 'wptranslate_filter_category_base');
add_filter('category_base', 'wptranslate_filter_category_base');
Этот код заменяет базу рубрик на нужную в зависимости от текущего языка. Аналогично можно сделать для других таксономий и кастомных типов записей.
Перегенерация правил постоянных ссылок после изменений
После внесения изменений в слаги обязательно нужно обновить правила постоянных ссылок. Это можно сделать вручную через админку WordPress в «Настройки» → «Постоянные ссылки» → нажать кнопку «Сохранить изменения» без изменения настроек.
Для автоматизации в коде можно добавить:
function wptranslate_flush_rewrite_rules() {
flush_rewrite_rules();
}
register_activation_hook(__FILE__, 'wptranslate_flush_rewrite_rules');
Это обеспечит сброс правил при активации плагина с вашим кодом.
Советы для правильного перевода постоянных ссылок
- Используйте однородные слаги для каждого языка. Избегайте смешивания языков в URL.
- Тестируйте все языковые версии. Проверьте, что все ссылки ведут на правильные страницы и не выдают 404.
- Обратите внимание на SEO. Перевод URL должен соответствовать ключевым словам и структуре сайта.
- Используйте возможности плагинов. Если вы используете WPML или Polylang, изучите их документацию по переводу таксономий.
- Регулярно обновляйте правила перезаписи. Это поможет избежать проблем с доступом к страницам.
Заключение по теме перевода постоянных ссылок
Перевод постоянных ссылок — одна из технически сложных, но важных задач при создании многоязычных WordPress-сайтов. Правильная настройка и, при необходимости, использование дополнительного кода или плагинов позволит сделать URL удобными и понятными для пользователей на любом языке.
Если вы столкнулись с ошибками 404 или некорректными ссылками, начните с проверки перевода слагов таксономий и типов записей, а также обновления правил перезаписи.