Cyr-To-Lat

Описание

Преобразует кириллические символы в ярлыках записей, страниц и рубрик в латинские. Полезно для создания URL-ов, легко читаемых людьми.

Особенности

  • Единственный плагин с полностью редактируемой таблицей транслитерации. Позволяет добавлять/удалять пары, например: ‘Я’ => ‘Ya’, или даже ‘Пиво’ => ‘Beer’
  • Конвертирует любое количество ярлыков существующих постов, страниц и терминов в фоновых процессах
  • Сохраняет целостность постоянных ссылок уже существующих записей и страниц
  • Выполняет транслитерацию названий файлов из вложений
  • Включает русские, белорусские, украинские, болгарские, македонские, сербские, греческие, армянские, грузинские, казахские, идиш и китайские символы
  • Имеет много преимуществ перед аналогичными плагинами
  • Официально совместим с WPML

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

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

Скриншоты

  • Страница опций таблиц
  • Страница опций конвертера
  • Блочный редактор с транслитерированным слагом
  • Сертификат 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 );

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

Добавьте примерно такой код в 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

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

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

Отзывы

19.04.2021
СПАСИБО БОЛЬШОЕ РАЗРАБОТЧИКАМ! СРАЗУ ЖЕ при сохранении страницы производит транслитерацию ссылки на страницу. У Clearfy так не получилось. Это самое лучшее приложение! Супер, рекомендую всем!
05.04.2021
Полный симпл, никакой рекламы... поставил, включил обновление и забыл... хочется верить что плагин таким же и останется!
Посмотреть все 72 отзыва

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

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

Участники

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

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

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

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

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

5.2.1 (29.07.2021)

  • Determine WPML language only once to improve performance.
  • Avoid notice on bad SQL request when taxonomies are empty.

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

  • Релиз первой версии плагина.