Cyr-To-Lat

Описание

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

Особенности

  • Единственный плагин с полностью редактируемой таблицей транслитерации. Позволяет добавлять/удалять пары, например: ‘Я’ => ‘Ya’, или даже ‘Пиво’ => ‘Beer’
  • Конвертирует любое количество ярлыков существующих постов, страниц и терминов в фоновых процессах
  • Сохраняет целостность постоянных ссылок уже существующих записей и страниц
  • Выполняет транслитерацию названий файлов из вложений
  • The plugin supports Russian, Belorussian, Ukrainian, Bulgarian, Macedonian, Serbian, Greek, Armenian, Georgian, Kazakh, Hebrew, and Chinese characters
  • Имеет много преимуществ перед аналогичными плагинами
  • Официально совместим с WPML

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

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

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

Скриншоты

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

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

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

Отзывы

12.02.2024 1 ответ
С последним обновлением стали корректно работать ранее созданные атрибуты, раньше после выгрузки отключал плагин, сейчас работает как надо. Спасибо!
15.10.2023 3 ответа
Плагин отличный (6.0.5), транслитерировал урлы (слаги для продвинутых) записей, страниц и меню и всего остального.Обратите внимание, что транслитерацию урлов всех меток (/tag/) и категорий (/category/) он тоже сделает, а в настройках нет отдельных пунктов отвечающих за метки и категории.
02.05.2023 4 ответа
Українська транслітерація не відповідає постанові Кабінету Міністрів України від 27 січня 2010 р. № 55, яка визначає стандарт для транслітерації української мови, треба вручну виправляти.
Посмотреть все 93 отзыва

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

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

Участники

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

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

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

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

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

6.1.0 (09.03.2024)

  • Tested with WordPress 6.5.
  • Tested with WooCommerce 8.6.
  • Fixed error on System Info tab when post types or post statuses are not set.

6.0.8 (14.02.2024)

  • Improved detection of the Gutenberg editor.
  • Fixed processing of product attributes.

6.0.7 (11.02.2024)

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

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)

  • 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.

See changelog for all versions.