Как сделать автоматическую транслитерацию URL в WordPress

Владельцы русскоязычных сайтов на WordPress часто сталкиваются с проблемой: при создании страниц и записей в адресах URL автоматически появляются кириллические символы. Это может привести к проблемам с индексацией сайта, а также ухудшить читаемость и восприятие ссылок. Чтобы решить эту задачу, необходимо настроить автоматическую транслитерацию URL — преобразование кириллических символов в латинские.

Почему важна транслитерация URL в WordPress

Стандартные адреса страниц и постов в WordPress формируются из заголовков, которые могут содержать любые символы, включая кириллицу. В итоге, в адресной строке браузера появляются URL с русскими буквами, например, site.ru/%D0%BF%D1%80%D0%B8%D0%BC%D0%B5%D1%80.

Такой URL выглядит громоздко и плохо воспринимается поисковыми системами. Кроме того, некоторые серверы и браузеры могут некорректно обрабатывать кириллические адреса, что снижает удобство пользователей и влияет на SEO.

Решение — преобразовать заголовки и названия страниц в латиницу при формировании URL, сохранив при этом их читаемость и семантику. Это называется транслитерацией.

Варианты реализации автоматической транслитерации URL в WordPress

Для реализации транслитерации можно использовать готовые плагины или написать собственный код, который будет срабатывать при сохранении записи и изменять слаг (slug) — уникальный идентификатор URL.

Использование плагинов для транслитерации

Среди популярных плагинов, которые позволяют транслитерировать русские URL, можно выделить:

  • Rus-To-Lat — простой и эффективный плагин, который автоматически конвертирует кириллицу в латиницу при создании новых записей и страниц.
  • Translitera — более продвинутый плагин с дополнительными настройками, позволяющими контролировать правила транслитерации и исключения.
  • WP Cyrillic Permalinks — функция обеспечивает преобразование URL для всех типов записей и таксономий.

Преимущество плагинов — простота настройки, но они могут быть избыточными, если нужна только базовая транслитерация.

Собственная функция автоматической транслитерации на PHP

Если вы хотите реализовать транслитерацию без плагинов, можно добавить кастомный код в файл functions.php вашей темы или в собственный плагин. Ниже представлен пример такой функции с префиксом cyrtolat_, которая автоматически преобразует кириллический слаг в латиницу при сохранении записи.

function cyrtolat_transliterate($text) {
    $converter = array(
        'а' => 'a',   'б' => 'b',   'в' => 'v',
        'г' => 'g',   'д' => 'd',   'е' => 'e',
        'ё' => 'e',   'ж' => 'zh',  'з' => 'z',
        'и' => 'i',   'й' => 'y',   'к' => 'k',
        'л' => 'l',   'м' => 'm',   'н' => 'n',
        'о' => 'o',   'п' => 'p',   'р' => 'r',
        'с' => 's',   'т' => 't',   'у' => 'u',
        'ф' => 'f',   'х' => 'h',   'ц' => 'c',
        'ч' => 'ch',  'ш' => 'sh',  'щ' => 'sch',
        'ь' => '',    'ы' => 'y',   'ъ' => '',
        'э' => 'e',   'ю' => 'yu',  'я' => 'ya',
        'А' => 'A',   'Б' => 'B',   'В' => 'V',
        'Г' => 'G',   'Д' => 'D',   'Е' => 'E',
        'Ё' => 'E',   'Ж' => 'Zh',  'З' => 'Z',
        'И' => 'I',   'Й' => 'Y',   'К' => 'K',
        'Л' => 'L',   'М' => 'M',   'Н' => 'N',
        'О' => 'O',   'П' => 'P',   'Р' => 'R',
        'С' => 'S',   'Т' => 'T',   'У' => 'U',
        'Ф' => 'F',   'Х' => 'H',   'Ц' => 'C',
        'Ч' => 'Ch',  'Ш' => 'Sh',  'Щ' => 'Sch',
        'Ь' => '',    'Ы' => 'Y',   'Ъ' => '',
        'Э' => 'E',   'Ю' => 'Yu',  'Я' => 'Ya',
    );
    return strtr($text, $converter);
}

function cyrtolat_custom_slug_translit($slug, $post_ID, $post_status, $post_type) {
    if ($post_type === 'post' || $post_type === 'page') {
        $slug = cyrtolat_transliterate($slug);
        // Дополнительно преобразуем в нижний регистр и заменяем пробелы на дефисы
        $slug = strtolower($slug);
        $slug = preg_replace('/[^a-z0-9-]/', '-', $slug);
        $slug = preg_replace('/-+/', '-', $slug);
        $slug = trim($slug, '-');
    }
    return $slug;
}

add_filter('wp_unique_post_slug', 'cyrtolat_custom_slug_translit', 10, 4);

В этом коде функция cyrtolat_transliterate заменяет русские буквы на их латинские аналоги по заданным правилам. Фильтр wp_unique_post_slug применяется для изменения слага перед сохранением записи. В результате, если вы создадите запись с заголовком «Пример транслитерации», URL будет выглядеть как primer-transliteracii.

Особенности и рекомендации при использовании транслитерации URL

Перед внедрением автоматической транслитерации важно учесть несколько моментов:

  • Уникальность URL: WordPress автоматически проверяет уникальность слага. Если транслитерированный слаг уже используется, к нему будет добавлено число, например primer-transliteracii-2.
  • Совместимость с плагинами SEO: Многие SEO-плагины корректно работают с латинизированными URL, что положительно сказывается на продвижении.
  • Обработка специальных символов: В коде примера все символы, кроме латинских букв, цифр и дефисов, заменяются на дефисы, чтобы избежать ошибок.
  • Обновление старых URL: Если у вас уже есть страницы с кириллическими URL, их можно вручную изменить через редактирование слага в админке или с помощью специальных плагинов для массового переименования URL.

Как обновить URL существующих записей

Для массового обновления URL с кириллицы на латиницу можно использовать плагин Bulk Slug Translator или написать WP-CLI скрипт. Например, простой PHP-скрипт для обновления слагов всех постов:

$posts = get_posts(array('numberposts' => -1, 'post_type' => 'post'));
foreach ($posts as $post) {
    $new_slug = cyrtolat_transliterate($post->post_name);
    $new_slug = strtolower($new_slug);
    $new_slug = preg_replace('/[^a-z0-9-]/', '-', $new_slug);
    $new_slug = preg_replace('/-+/', '-', $new_slug);
    $new_slug = trim($new_slug, '-');
    if ($new_slug !== $post->post_name) {
        wp_update_post(array(
            'ID' => $post->ID,
            'post_name' => $new_slug
        ));
    }
}

Этот скрипт можно запускать в админке через плагин Code Snippets или в консоли WP-CLI с адаптацией под ваш сайт.

Заключение

Автоматическая транслитерация URL в WordPress — это важный шаг к улучшению удобства сайта, SEO и совместимости с различными системами. Выбор между использованием плагинов и собственной реализацией зависит от ваших потребностей и навыков. Представленный код с префиксом cyrtolat_ — надежный и простой способ внедрить транслитерацию без излишних зависимостей.

Регулярно проверяйте корректность URL и следите за уникальностью слагов, чтобы избежать конфликтов и ошибок на сайте.

Добавь в закладки и поделись с друзьями:

⭐⭐⭐⭐⭐
Как автоматизировать удаление пустых комментариев в WordPress
15.04.2026
Как использовать хуки WordPress для эффективного контроля записей
06.12.2025
Как автоматизировать удалённую оптимизацию базы данных WordPress
14.02.2026
Как устроить автоматический перевод контента в WordPress: практическое руководство
06.03.2026
Как избежать проблем с кэшированием в WordPress: практические советы
02.03.2026
×
Оптимизируй свой сайт!

Скидка -15% на премиум плагин Clearfy Pro

Купить плагин сейчас ⋙