Как исправить проблему с переводом постоянных ссылок (Permalinks) в WordPress

Одна из частых проблем при создании многоязычных сайтов на 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 или некорректными ссылками, начните с проверки перевода слагов таксономий и типов записей, а также обновления правил перезаписи.

Как использовать WPML для одновременного перевода страниц в WordPress
30.12.2025
Как добавить автоперевод сообщений об ошибках в WordPress
19.01.2026
Как передавать текст в автопереводчик в WordPress через хуки
26.02.2026
Автоматический перевод сообщений в формах WordPress
15.03.2026
Как создать многоязычный сайт на WordPress с помощью Polylang
09.11.2025