Описание
Преобразует кириллические символы в ярлыках записей, страниц и рубрик в латинские. Полезно для создания URL-ов, легко читаемых людьми.
Особенности
- Единственный плагин с полностью редактируемой таблицей транслитерации. Позволяет добавлять/удалять пары, например: ‘Я’ => ‘Ya’, или даже ‘Пиво’ => ‘Beer’
- Конвертирует любое количество ярлыков существующих постов, страниц и терминов в фоновых процессах
- Сохраняет целостность постоянных ссылок уже существующих записей и страниц
- Выполняет транслитерацию названий файлов из вложений
- Включает русские, белорусские, украинские, болгарские, македонские, сербские, греческие, армянские, грузинские, казахские, идиш и китайские символы
- Имеет много преимуществ перед аналогичными плагинами
- Официально совместим с WPML
Основано на оригинальном плагине Rus-To-Lat от Антона Скоробогатова.
Спонсируется проектом Blackfire.
Поддержка плагина
Скриншоты
Установка
- Загрузите папку
cyr2lat
в директорию/wp-content/plugins/
. - Активируйте плагин на странице «Плагины» в панели управления 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 );
-
Как я могу разрешить плагину работать на фронтенде?
-
Добавьте примерно такой код в
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
-
Могу ли я внести свой вклад?
-
Да, вы можете!
- Присоединяйтесь к нашему репозиторию GitHub
- Присоединяйтесь к нашей группе в Телеграм
Отзывы
Участники и разработчики
«Cyr-To-Lat» — проект с открытым исходным кодом. В развитие плагина внесли свой вклад следующие участники:
Участники«Cyr-To-Lat» переведён на 9 языков. Благодарим переводчиков за их работу.
Перевести «Cyr-To-Lat» на ваш язык.
Заинтересованы в разработке?
Посмотрите код, проверьте SVN репозиторий, или подпишитесь на журнал разработки по RSS.
Журнал изменений
6.0.5 (09.10.2023)
- Fixed displaying file descriptions in the Theme Editor; now in the current locale.
6.0.4 (23.09.2023)
-
Fixed disappeared file descriptions on the Theme File Editor page.
-
= 6.0.3 (29.07.2023) =
- Исправлена фатальная ошибка с Jetpack sync.
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.
5.5.3 (15.07.2023)
- Протестировано с WooCommerce 7.8.
- Исправлена deprecation error «strpos(): Passing null to parameter», возникавшая в debug.log.
5.5.2 (31.03.2023)
- Исправлена транслитерация тегов с Polylang и WPML.
5.5.1 (21.03.2023)
- Исправлена транслитерация атрибутов на фронтенде WC.
5.5.0 (18.03.2023)
- Протестировано с WordPress 6.2.
- Протестировано с WooCommerce 7.5.
- Улучшено быстродействие страницы настроек Таблицы.
- Исправлен показ постов и тегов на фронтенде.
- Исправлен показ не-транслитерированных кириллических тегов на бэкенде.
5.4.0 (15.12.2022)
- Протестировано с WordPress 6.1 и WooCommerce 7.2.
- Добавлена совместимость с функцией высокопроизводительного хранилища WC (COT).
5.3.0 (23.05.2022)
- Протестировано с WordPress 6.0 и WooCommerce 6.5.
5.2.7 (14.02.2022)
- Протестировано с WooCommerce 6.2.
- Добавлена поддержка PHP 8.1.
5.2.6 (25.12.2021)
- Отменено исправление, сделанное в 5.2.5 для 404 с WPML, поскольку оно создавало несколько проблем во фронтэнде.
- Снова исправлена ошибка 404 в архивах, созданных с помощью WPML перед активацией cyr2lat.
5.2.5 (19.12.2021)
- Протестировано до WordPress 5.9 и WooCommerce 6.0.
- Исправлена проблема с Polylang — не меняйте язык администратора при редактировании записи.
- Исправлена проблема с JetPack — фатальная ошибка при синхронизации.
- Исправлена ошибка 404 в архивах, созданных с помощью WPML перед активацией cyr2lat.
5.2.4 (07.09.2021)
- Исправлена проблема с тем, что WooCommerce Не показывал атрибуты вариативного товара.
- Исправлена проблема с Elementor и WPML, бесконечный цикл.
5.2.3 (07.09.2021)
- Исправлена проблема с плагином WP Foro — транслитерация ярлыка топика, создаваемого на фронтенде.
- Исправлена ошибка Polylang с REST-запросом.
5.2.2 (06.09.2021)
- Исправлена проблема, связанная с ошибкой в синхронизации Jetpack.
- Оптимизирован код, связанный с фильтрацией локали WPML.
- Исправлена бесконечная загрузка страницы таксономии с WPML.
- Исправлено: ‘не найдено’ на странице таксономии с WPML.
5.2.1 (29.07.2021)
- Определение языка WPML производится лишь один раз, для повышения производительности.
- Уведомления о неверном запросе SQL не выводятся, когда таксономия пуста.
5.2.0 (27.07.2021)
- Добавлена поддержка для категорий и тегов на других языках с wpml.
5.1.0 (19.07.2021)
- Исправлено issue-95 — 404 на локализованных терминах, созданных до установки плагина.
- Добавлен сброс кэша после массовой конвертации.
- Протестировано с WordPress 5.8
5.0.4 (17.04.2021)
- Исправлена ошибка в конвертере при отсутствии сохранённых опций
5.0.3 (03.04.2021)
- Добавлен фильтр ‘ctl_locale’
- Исправлен перевод вкладок на странице настроек
- Исправлены зарегистрированные типы постов в настройках конвертера
5.0.2 (27.03.2021)
- Исправлена ошибка при создании тега с тем же слагом, что и категория
5.0.1 (22.03.2021)
- Исправлена фатальная ошибка при загрузке плагина на некоторых серверах
5.0.0 (18.03.2021)
- Реализованы вкладки на странице опций.
- Добавлены опции выбора типов и статусов постов для фоновой конвертации
- Цвета приведены в соответствие с официальной палитрой WP
- Исправлена ошибка с Polylang, когда локаль не совпадает со слагом языка
4.6.4 (03.03.2021)
- Протестировано до WordPress 5.7
4.6.3 (21.02.2021)
- Исправлена ошибка с типом поста attachment, отфильтрованным ‘ctl_post_types’.
- Исправлена ошибка с фоновой конвертацией терминов атрибутов товаров.
4.6.2 (11.02.2021)
- Исправлена ошибка с несуществующие функцией PLL().
4.6.1 (10.02.2021)
- Исправлена ошибка с Polylang.
4.6.0 (10.02.2021)
- Добавлена совместимость с Polylang.
- Добавлен попап подтверждения перед массовой конвертацией слагов.
- Улучшена выборка постов и терминов для конвертации во избежание выборки лишних элементов при массовой конвертации слагов.
- Исправлена ошибка с редиректом со старых слагов но новые после фоновой конвертации слагов.
- Исправлен код js для совместимости со старыми браузерами типа IE
4.5.2 (08.12.2020)
- Исправлена ошибка с деплоем на wp.org.
4.5.1 (07.12.2020)
- Протестировано с WordPress 5.6
- Протестировано на PHP 5.6-8.0
4.5.0 (18.05.2020)
- Добавлены греческий и армянский языки
- Добавлена фоновая конвертация вложений и миниатюр
- Исправлено фоновое конвертирование существующих слагов
4.4.0 (18.04.2020)
- Полная гибкость в редактировании таблицы транслитерации: теперь возможно добавлять/удалять пары на странице настроек
- Возвожность редактирования не только значений, но и ключей в таблице транслитерации
- Сохранение активной таблицы через ajax
- Отслеживание изменений в активной таблице
- Авто-сохранение настроек
- Информация о текущей локали на странице настроек
- Активация таблицы текущей локали во время загрузки страницы настроек
- Добавлен китайский язык
- Исправлено: ярлык не обновлялся при создании копии товара woocommerce
4.3.5 (28.03.2020)
- Протестировано с WordPress 5.4
- Исправлена ошибка с исчезновением атрибутов WooCommerce
4.3.4 (22.02.2020)
- Исправлено не-преобразование ярлыков с WPML
- Ограничена конвертация постов: теперь только публичные и nav_menu_item
- Добавлен фильтр ctl_post_types
4.3.3 (20.02.2020)
- Переработан основной фильтр плагина
- Улучшено быстродействие путём минимизации числа вызовов
- Исправлена таблица грузинского языка
- Исправлено дублирование ярлыков в таксономиях
- Исправлено предупреждение с WooCommerce, когда mbstring не загружена
- Исправлена транслитерация ярлыка черновика поста
- Таблицы сортированы по локальному алфавиту
4.3.2 (29.12.2019)
- Исправлена проблема с установкой max_input_vars на некоторых хостингах
4.3.1 (27.12.2019)
- Добавлено требование иметь max_input_vars >= 5000
- Добавлена автоматическая деактивация плагина, если требования не соблюдены
- Добавлена попытка авто-коррекции значения max_input_variable
4.3 (14.12.2019)
- Добавлена поддержка китайского языка
- Протестировано до WordPress 5.3
- Протестировано до PHP 7.4
- Внешняя библиотека `wp-background-processing` спрятана под неймспейс плагина, чтобы избежать ошибок в некоторых кейсах
4.2.3 (29.08.2019)
- Полифил Symphony Mbstring перенесён в собственное пространство имён, чтобы избежать проблем с автозагрузкой composer на некоторых сайтах.
4.2.2 (28.08.2019)
- Добавлена поддержка плагина ACF (Advanced Custom Fields)
- Добавлена поддержка сербского языка
- Добавлен новый фильтр
ctl_pre_sanitize_filename
- Исправлена неверная конвертация букв
Ё
,ё
,Й
,й
в названиях файлов под операционной системой Mac (старая известная проблема Mac’ов)
4.2.1 (23.06.2019)
- Исправлена проблема с сессиями
- Исправлена последовательность сообщений при конвертации существующих ярлыков.
- Добавлена проверка версии PHP для избежания фатальной ошибки при активации на старых сайтах.
- Добавлены вертикальные табы в настройках плагина.
4.2 (28.05.2019)
- Минимально необходимая версия php поднята до 5.6
- Добавлены phpunit-тесты для всех версий php от 5.6 до 7.3
- Устранено предупреждение php во время конвертации существующих ярлыков
- Исправлен выбор локали при конвертации существующих ярлыков записей, когда активирован WPML
- Исправлена ошибка с бесконечной переадресацией некоторых ярлыков после конвертации существующих ярлыков
4.1.2 (22.05.2019)
- Исправлена фатальная ошибка в Cyr_To_Lat_Converter с php 5.2
4.1.1 (22.05.2019)
- Исправлена фатальная ошибка в Cyr_To_Lat_Converter с php 5.6
4.1 (21.05.2019)
- Добавлена таблица he_IL
- Добавлен перевод плагина на украинский
- Добавлен перевод плагина на шведский
- Добавлены phpunit-тесты. Все классы плагина покрыты на 100%
- Добавлены js-тесты. Весь js-код плагина покрыт на 100%
- Исправлена ошибка с синхронизацией Jetpack
- Исправлена ошибка с пустыми слагами при использовании символов вне локали
4.0 (24.04.2019)
- Добавлена кнопка для конвертации существующих ярлыков, вместо чекбокса
- Добавлены уведомления в консоли во время конвертации существующих ярлыков
- Добавлены параметры post_type и post_status в команду wp-cli
- Исправлен текстовый домен
- Упрощён package.json, чтобы сделать финальный js ещё меньше
- Добавлены phpunit-тесты для главного класса плагина
- Добавлен travis.yml для непрерывной интеграции на GitHub, и улучшения надёжности кода
3.7 (12.04.2019)
- Добавлены белорусская, македонская и казахская таблицы
- Исправлена ошибка с MariaDB во время конвертации существующих ярлыков
- Исправлено: не сохранялись пользовательские правки в дефолтной таблице iso9
3.6.5 (11.02.2019)
- Добавлены очереди для процесса фоновой ковертации существующих ярлыков
3.6.4 (06.02.2019)
- Исправлена ошибка с редиректом
_wp_old_slug
- Исправлена ошибка с
urldecode
в постах.
3.6.3 (04.02.2019)
- Исправлена ошибка с активацией по сети для мультисайта
3.6.2 (01.02.2019)
- Меню перемещено в секцию Настройки.
- Исправлен текстовый домен.
3.6.1 (31.01.2019)
- Текстовый домен скорректирован.
3.6 (31.01.2019)
- Добавлена страница настроек плагина.
- Страница настроек позволяет редактировать таблицы конвертации онлайн.
- Код сконвертирован в ООП.
- Произведён рефакторинг кода в соответствии со стандартами кодирования WordPress.
- JS разработан в соответствии со стандартом ECMA-6.
- Страница настроек также работает при выключенном JS в браузере.
- Добавлены composer и yarn.
- Добавлены ресурсы (баннер, иконка, административная иконка).
3.4 (21.01.2019)
- Протестировано до WP 5.1
- Форматирование кода по WPCS.
- Строгое соответствие.
- Фигурные скобки {} удалены из оператора MySQL, чтобы разрешить проверку имён таблиц в PhpStorm.
- Обновлены .gitignore и README.md
- Добавлен новый фильтр
ctl_pre_sanitize_title
3.3 (18.01.2019)
- wpcs 1.0
- Исправлено много ошибок
- Добавлена поддержка Gutenberg
3.2
- Добавлена транслитерация при публикации через XML-RPC
- Исправлена ошибка «неправильная таксономия» при просмотре часто используемых тегов
3.1
- Исправлена транслитерация при сохранении черновика
3.0
- Добавлена автоматическая конвертация ярлыков существующих постов, страниц и терминов
- Добавлено сохранение существующих постов и интеграция с постоянными ссылками страниц
- Добавлена транслитерация имён файлов вложений
- Таблица транслитерации обновлена в соответствии со стандартом ISO9
- Включает белорусские, украинские, болгарские и греческие символы
- Добавлен фильтр для таблицы транслитерации
2.1
- Оптимизирован вызов фильтра
2.0
- Добавлены проверки существующих терминов
1.0.1
- Обновлено описание
1.0
- Релиз первой версии плагина.