Описание
Преобразует кириллические символы в ярлыках записей, страниц и рубрик в латинские. Полезно для создания URL-ов, легко читаемых людьми.
Особенности
- The only plugin with a fully editable transliteration table. Allows to add/remove and edit pairs like ‘Я’ => ‘Ya’, or even ‘Пиво’ => ‘Beer’
- Конвертирует любое количество ярлыков существующих постов, страниц и терминов в фоновых процессах
- Сохраняет целостность постоянных ссылок уже существующих записей и страниц
- Выполняет транслитерацию названий файлов из вложений
- The plugin supports Russian, Belorussian, Ukrainian, Bulgarian, Macedonian, Serbian, Greek, Armenian, Georgian, Kazakh, Hebrew, and Chinese characters
- Имеет много преимуществ перед аналогичными плагинами
- Официально совместим с WPML
Основано на оригинальном плагине Rus-To-Lat от Антона Скоробогатова.
Спонсируется проектом Blackfire.
Поддержка плагина
Скриншоты
Установка
- Upload the
cyr2latfolder to the/wp-content/plugins/directory. - Активируйте плагин на странице «Плагины» в панели управления 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может сломать ссылки в старых постах, потому что имена файлов транлитерируются.To avoid it, deactivate the cyr2lat plugin during regeneration:
wp media regenerate --skip-plugins=cyr2lat -
Могу ли я внести свой вклад?
-
Да, вы можете!
- Присоединяйтесь к нашему репозиторию GitHub
- Присоединяйтесь к нашей группе в Телеграм
-
Where do I report security bugs found in this plugin?
-
Please report security bugs found in the source code of the undefined plugin through the Patchstack Vulnerability Disclosure Program. The Patchstack team will assist you with verification, CVE assignment, and notify the developers of this plugin.
Отзывы
Участники и разработчики
«Cyr-To-Lat» — проект с открытым исходным кодом. В развитие плагина внесли свой вклад следующие участники:
Участники«Cyr-To-Lat» переведён на 10 языков. Благодарим переводчиков за их работу.
Перевести «Cyr-To-Lat» на ваш язык.
Заинтересованы в разработке?
Посмотрите код, проверьте SVN репозиторий, или подпишитесь на журнал разработки по RSS.
Журнал изменений
6.6.0 (30.11.2025)
- Fixed the deprecated function message in Main.php with WordPress 6.9.
- Протестировано с PHP 8.4.
- Tested with WordPress 6.9.
- Tested with WooCommerce 10.3.
6.5.0 (24.10.2025)
- Fixed transliteration of tags during editing.
6.4.1 (03.05.2025)
- Fixed the layout of messages on the Tables page.
- Tested with WordPress 6.8.
- Tested with WooCommerce 9.8.
6.3.0 (22.12.2024)
- Added a warning message on the Tables page when the active table does not match the site locale.
- Удалено исправление для перевода после 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.
- Tested with WordPress 6.7.
- Tested with WooCommerce 9.4.
6.1.0 (09.03.2024)
- Tested with WordPress 6.5.
- Tested with WooCommerce 8.6.
- Fixed error on the System Info tab when post types or post statuses are not set.
6.0.8 (14.02.2024)
- Улучшено обнаружение редактора Gutenberg.
- Исправлена обработка атрибутов товара.
6.0.7 (11.02.2024)
- Протестировано с WooCommerce 8.5.
- Добавлено перенаправление с кириллического заголовка записи при создании новой записи.
- Добавлено описание типов записей и статусов записей на странице Конвертера.
- Исправлено отображение всех описаний файлов в редакторе темы в текущей локали.
- Fixed PHP warning in the SettingsBase.
- Fixed the output of variable product attributes.
6.0.6 (14.01.2024)
- Протестировано с WordPress 6.4.
- Протестировано с WooCommerce 8.4.
- Протестировано с использованием PHP 8.3.
- Исправлена документация по фильтру ctl_allow.
- Fixed the improper display of the «rate plugin» message on options.php.
6.0.5 (09.10.2023)
- Исправлено отображение описания в Редакторе Темы; сейчас в текущей локали.
6.0.4 (23.09.2023)
- Исправлено исчезновение описания на странице Редактора Темы.
6.0.3 (29.07.2023)
- Fixed the fatal error with Jetpack sync.
6.0.2 (26.07.2023)
- Исправлена фатальная ошибка с admin_footer_text().
6.0.1 (26.07.2023)
- Fixed the fatal error on the System Info page with empty options.
6.0.0 (26.07.2023)
- Прекращена поддержка PHP 5.6. Минимально требуемая версия PHP теперь 7.0.
- Протестировано с WordPress 6.3.
- Протестировано с WooCommerce 7.9.
- Добавлена вкладка Системная Информация.
- Добавлен фильтр ‘ctl_allow’
- Исправлена консольная ошибка при сохранении табличных данных.
- Fixed the current table setting on the Tables page with WPML.




