Image
Image

Cyr-To-Lat

Описание

Converts Cyrillic characters in post, page, and term slugs to Latin characters. Useful for creating human-readable URLs.

Особенности

  • The only plugin with a fully editable transliteration table. Allows adding/removing and editing pairs like ‘Я’ => ‘Ya’, or even ‘Пиво’ => ‘Beer’
  • Converts any number of existing post, page, and term slugs in background processes
  • Сохраняет целостность постоянных ссылок уже существующих записей и страниц
  • Выполняет транслитерацию названий файлов из вложений
  • Плагин поддерживает русские, белорусские, украинские, болгарские, македонские, сербские, греческие, армянские, грузинские, казахские, ивритские и китайские символы.
  • Имеет много преимуществ перед аналогичными плагинами
  • Официально совместим с WPML

Основано на оригинальном плагине Rus-To-Lat от Антона Скоробогатова.

Спонсируется проектом Blackfire.

Поддержка плагина

Скриншоты

  • Image
    Страница опций таблиц
  • Image
    Страница опций конвертера
  • Image
    Блочный редактор с транслитерированным слагом
  • Image
    Сертификат WPML

Установка

  1. Загрузите папку cyr2lat в директорию /wp-content/plugins/
  2. Активируйте плагин на странице «Плагины» в панели управления WordPress.

Часто задаваемые вопросы

Как назначить свои правила для замены?

Добавьте этот код к файлу functions.php вашей темы:

/**
 * Modify conversion table.
 *
 * @param array $table Conversion table.
 *
 * @return array
 */
function my_ctl_table( $table ) {
   $table['Ъ'] = 'U';
   $table['ъ'] = 'u';

   return $table;
}
add_filter( 'ctl_table', 'my_ctl_table' );

Как я могу переопределить нестандартную локаль?

Например, если ваша нестандартная локаль uk_UA, вы можете переопределить её в uk добавлением следующего кода в function.php вашей темы:

/**
 * Use non-standard locale.
 *
 * @param string $locale Current locale.
 *
 * @return string
 */
function my_ctl_locale( $locale ) {
    if ( 'uk_UA' === $locale ) {
        return 'uk';
    }

    return $locale;
}
add_filter( 'ctl_locale', 'my_ctl_locale' );

Как я могу определить собственную транслитерацию заголовков?

Добавьте примерно такой код в functions.php вашей темы.

/**
 * Filter title before sanitizing.
 *
 * @param string|false $result Sanitized title.
 * @param string       $title  Title.
 *
 * @return string|false
 */
function my_ctl_pre_sanitize_title( $result, $title ) {
    if ( 'пиво' === $title ) {
        return 'beer';
    }

    return $result;
}
add_filter( 'ctl_pre_sanitize_title', 10, 2 );

Как вы могу определить собственную транслитерацию имён файлов?

Добавьте примерно такой код в functions.php вашей темы.

/**
 * Filter filename before sanitizing.
 *
 * @param string|false $result   Sanitized filename.
 * @param string       $filename Title.
 *
 * @return string|false
 */
function my_ctl_pre_sanitize_filename( $result, $filename ) {
    if ( 'пиво' === $filename ) {
        return 'beer';
    }

    return $result;
}
add_filter( 'ctl_pre_sanitize_filename', 10, 2 );

Как я могу разрешить плагину работать на фронтенде?

Добавьте следующий код в основной файл вашего плагина (или mu-плагина). Этот код не будет работать, если добавить его в файл functions.php темы.

/**
 * Filter status allowed Cyr To Lat plugin to work.
 *
 * @param bool $allowed
 *
 * @return bool
 */
function my_ctl_allow( bool $allowed ): bool {
    $uri = isset( $_SERVER['REQUEST_URI'] ) ?
        sanitize_url( wp_unslash( $_SERVER['REQUEST_URI'] ) ) :
        '';

    if ( 0 === strpos( $uri, '/divi-comments' ) ) {
        return true;
    }

    return $allowed;
}

add_filter( 'ctl_allow', 'my_ctl_allow' );

Как я могу ограничить типы постов для фоновой конвертации?

Добавьте примерно такой код в functions.php вашей темы.

/**
 * Filter post types allowed for background conversion.
 *
 * @param array $post_types Allowed post types.
 *
 * @return array
 */
function my_ctl_post_types( $post_types ) {
    return [
        'post'          => 'post',
        'page'          => 'page',
        'attachment'    => 'attachment',
        'product'       => 'product',
        'nav_menu_item' => 'nav_menu_item',
    ];
}
add_filter( 'ctl_post_types', 'my_ctl_post_types' );

Как я могу сконвертировать много постов/терминов, используя wp-cli?

Используйте следующую команду в консоли:

wp cyr2lat regenerate [--post_type=<post_type>] [--post_status=<post_status>]

Где
-post_type список типов постов,
-post_status список статусов постов.

Как я могу безопасно регенерировать миниатюры?

Регенерация миниатюр командой wp media regenerate может сломать ссылки в старых постах, потому что имена файлов транлитерируются.

Во избежание этого, отключите плагин cyr2lat во время регенерации:

wp media regenerate --skip-plugins=cyr2lat

Могу ли я внести свой вклад?

Да, вы можете!

Куда мне сообщить об ошибках безопасности, обнаруженных в этом плагине?

Please report security vulnerabilities by email to:

security@kagg.eu

When reporting a vulnerability, please include as much information as possible to help us reproduce and investigate the issue, such as:

  • A clear description of the vulnerability
  • Steps to reproduce
  • Proof-of-concept or exploit code (if available)
  • Affected versions

We will review your report and respond as quickly as possible.

Отзывы

Image
06.05.2024 2 ответа
The plugin supports Russian, Belorussian, Ukrainian, Bulgarian, Macedonian, Serbian and Kazakh characters. Unfortunately, support for other languages (Greek, Armenian, Georgian, Hebrew, and Chinese) does not work at all.
Image
12.02.2024 1 ответ
С последним обновлением стали корректно работать ранее созданные атрибуты, раньше после выгрузки отключал плагин, сейчас работает как надо. Спасибо!
Image
15.10.2023 3 ответа
Плагин отличный (6.0.5), транслитерировал урлы (слаги для продвинутых) записей, страниц и меню и всего остального.Обратите внимание, что транслитерацию урлов всех меток (/tag/) и категорий (/category/) он тоже сделает, а в настройках нет отдельных пунктов отвечающих за метки и категории.
Посмотреть все 96 отзывов

Участники и разработчики

«Cyr-To-Lat» — проект с открытым исходным кодом. В развитие плагина внесли свой вклад следующие участники:

Участники

«Cyr-To-Lat» переведён на 10 языков. Благодарим переводчиков за их работу.

Перевести «Cyr-To-Lat» на ваш язык.

Заинтересованы в разработке?

Посмотрите код, проверьте SVN репозиторий, или подпишитесь на журнал разработки по RSS.

Журнал изменений

6.7.0 (01.04.2026)

  • The minimum required PHP version is now 7.4.
  • The minimum required WordPress version is now 6.0.
  • Fixed a fatal error occurred with WP-CLI in a rare case.
  • Fixed transliteration of WC local attributes.
  • Tested with WordPress 7.0.

6.6.0 (30.11.2025)

  • Исправлено сообщение об устаревшей функции в main.php в WordPress 6.9.
  • Протестировано с PHP 8.4.
  • Протестировано на WordPress 6.9.
  • Протестировано с WooCommerce 10.3.

6.5.0 (24.10.2025)

  • Исправлена транслитерация меток при редактировании.

6.4.1 (03.05.2025)

  • Исправлено расположение сообщений на странице таблиц.
  • Протестировано на WordPress 6.8.
  • Протестировано с WooCommerce 9.8.

6.3.0 (22.12.2024)

  • Добавлено предупреждающее сообщение на странице таблиц, когда активная таблица не соответствует языковому стандарту сайта.
  • Удалено исправление для перевода после WordPress 6.5+ из-за проблем с производительностью.

6.2.3 (24.11.2024)

  • Исправлена ​​ошибка устаревания в PHP 8.4.
  • Протестировано с PHP 8.4.

6.2.2 (15.11.2024)

  • Исправлено уведомление _load_textdomain_just_in_time в WordPress 6.7.
  • Некоторые переводы были пустыми в WordPress 6.5+.

6.2.1 (13.11.2024)

  • Исправлен макет страницы конвертера.
  • Исправлены проблемы, о которых сообщил плагин Plugin Check.

6.2.0 (13.11.2024)

  • Прекращена поддержка PHP 7.0 и 7.1. Минимальная требуемая версия PHP теперь 7.2.
  • Минимальная требуемая версия WordPress теперь — 5.3.
  • Исправлено уведомление о неправильном вызове функции _load_textdomain_just_in_time.
  • Протестировано на WordPress 6.7.
  • Протестировано с WooCommerce 9.4.

6.1.0 (09.03.2024)

  • Протестировано на WordPress 6.5.
  • Протестировано с WooCommerce 8.6.
  • Исправлена ошибка на вкладке информации о системе, когда типы записей или статусы записей не были заданы.

6.0.8 (14.02.2024)

  • Улучшено обнаружение редактора Gutenberg.
  • Исправлена ​​обработка атрибутов товара.

6.0.7 (11.02.2024)

  • Протестировано с WooCommerce 8.5.
  • Добавлено перенаправление с кириллического заголовка записи при создании новой записи.
  • Добавлено описание типов записей и статусов записей на странице Конвертера.
  • Исправлено отображение всех описаний файлов в редакторе темы в текущей локали.
  • Исправлено предупреждение PHP в разделе настроек.
  • Исправлен вывод атрибутов вариативного товара.

6.0.6 (14.01.2024)

  • Протестировано с WordPress 6.4.
  • Протестировано с WooCommerce 8.4.
  • Протестировано с использованием PHP 8.3.
  • Исправлена документация по фильтру ctl_allow.
  • Исправлено неправильное отображение сообщения об оценке плагина в options.php.

6.0.5 (09.10.2023)

  • Исправлено отображение описания в Редакторе Темы; сейчас в текущей локали.

6.0.4 (23.09.2023)

  • Исправлено исчезновение описания на странице Редактора Темы.

6.0.3 (29.07.2023)

  • Исправлена фатальная ошибка при синхронизации с Jetpack.

6.0.2 (26.07.2023)

  • Исправлена фатальная ошибка с admin_footer_text().

6.0.1 (26.07.2023)

  • Исправлена фатальная ошибка на странице системной информации с пустыми параметрами.

6.0.0 (26.07.2023)

  • Прекращена поддержка PHP 5.6. Минимально требуемая версия PHP теперь 7.0.
  • Протестировано с WordPress 6.3.
  • Протестировано с WooCommerce 7.9.
  • Добавлена вкладка Системная Информация.
  • Добавлен фильтр ‘ctl_allow’
  • Исправлена консольная ошибка при сохранении табличных данных.
  • Исправлена текущая настройка таблицы на странице таблиц с помощью WPML.

См. журнал изменений для всех версий.