Image
Image

Cyr-To-Lat

Descrición

Converte os caracteres cirílicos dos slugs de entradas, páxinas e termos en caracteres latinos. Útil para crear URL lexibles.

Características

  • O único plugin cunha táboa de transliteración totalmente editable. Permite engadir, eliminar e editar pares como ‘Я’ => ‘Ya’, ou mesmo ‘Пиво’ => ‘Beer’
  • Converte os slugs de entradas, páxinas, tipos de contido personalizados e termos a través de rutas explícitas de gardado de WordPress e de REST/Gutenberg
  • Converte calquera número de slugs existentes de entradas, páxinas e termos en procesos en segundo plano ou con WP-CLI
  • Mantén a integridade das ligazóns permanentes das entradas e páxinas existentes
  • Realiza a transliteración dos nomes dos arquivos adxuntos
  • É compatible cos fluxos de slugs de produto, taxonomía de produto, atributo global, atributo local, variación e carriño da portada de WooCommerce, sen migración automática dos atributos existentes
  • O plugin é compatible con caracteres rusos, bielorrusos, ucraínos, búlgaros, macedonios, serbios, gregos, armenios, xeorxianos, casaxes, hebreos e chineses
  • Ten moitas vantaxes sobre plugins similares
  • Oficialmente compatible con WPML

Baseado no plugin orixinal Rus-To-Lat de Anton Skorobogatov.

Patrocinado por Blackfire.

Soporte do plugin

Capturas

Instalación

  1. Sube o cartafol cyr2lat ao directorio /wp-content/plugins/.
  2. Active o complemento a través do menú ‘Complementos’ en WordPress.

Notas de actualización para a 7.0

A versión 7.0 céntrase na arquitectura. Mantén estables a táboa de transliteración existente, os filtros de idioma, as ferramentas de conversión de entradas e termos e o comando de WP-CLI, ao tempo que move a xestión de slugs a servizos explícitos.

As entradas, páxinas, termos, nomes de arquivo e datos de produto de WooCommerce existentes non se reescriben de forma destrutiva durante a actualización do plugin. Usa a páxina Conversor ou wp cyr2lat regenerate cando queiras rexenerar intencionadamente os slugs de entradas e termos existentes.

Os atributos de WooCommerce creados antes da 7.0 non se migran automaticamente. As taxonomías globais pa_* existentes e as claves de atributos locais ou de variación existentes deben revisarse por separado; calquera migración futura debe usar un fluxo de traballo dedicado que comece en modo de proba (dry-run).

Cyr-To-Lat 7.0.1 mantén os atributos de variación locais herdados de WooCommerce, incluídas as variacións Any, aliñados entre o formulario do produto, a solicitude de engadir ao carriño e a sesión do carriño.

Preguntas frecuentes

Como podo definir as miñas propias substitucións?

Engade este código ao arquivo functions.php do teu tema:

/**
 * 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' );

Como podo redefinir un idioma non estándar?

Por exemplo, se o teu idioma non estándar é uk_UA, podes redefinilo como uk engadindo o seguinte código ao arquivo function.php do teu tema:

/**
 * 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' );

Como podo definir a miña propia transliteración dos títulos?

Engade un código similar ao arquivo functions.php do teu tema:

/**
 * 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 );

Como podo controlar o bridge herdado de sanitize_title?

A versión 7.0 usa xestores de slug explícitos para entradas, termos, atributos de WooCommerce e outras rutas de gardado coñecidas. Un bridge herdado de sanitize_title mantense como alternativa de compatibilidade para chamadas xerais nas que aínda poidan apoiarse integracións máis antigas.

Podes desactivar o mecanismo alternativo xeral con este código:

add_filter( 'ctl_enable_legacy_sanitize_title_bridge', '__return_false' );

O filtro recibe o valor por defecto actual, $title, $raw_title e $context. Os contextos coñecidos explícitos, como o tratamento de gardado de WordPress, seguen a usar as rutas de slug dedicadas de 7.0.

Para depurar chamadas descoñecidas ao bridge, define CYR_TO_LAT_DEBUG_LEGACY_SANITIZE_TITLE_BRIDGE como true. Este rexistro de diagnóstico está desactivado por defecto e non se activa con WP_DEBUG.

Como podo definir a miña propia transliteración dos nomes de arquivo?

Engade un código similar ao arquivo functions.php do teu tema:

/**
 * 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 );

Como podo permitir que o plugin funcione na portada?

Engade o seguinte código ao arquivo principal do teu plugin (ou mu-plugin). Este código non funcionará se se engade ao arquivo functions.php dun tema.

/**
 * 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' );

Como podo limitar os tipos de contido para a conversión en segundo plano?

Engade un código similar ao arquivo functions.php do teu tema:

/**
 * 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' );

Como podo converter moitas entradas/termos usando wp-cli?

Usa o seguinte comando na consola:

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

Onde
-post_type é unha lista de tipos de contido,
-post_status é unha lista de estados de publicación.

Que comportamento dos atributos de WooCommerce é compatible na 7.0?

Cyr-To-Lat 7.0 xestiona explicitamente os slugs de produtos de WooCommerce novos e actualizados, os slugs de categorías e etiquetas de produto, os slugs de atributos globais, os slugs de termos de atributos globais, as claves de atributos locais de produto, as claves de atributos de variación, as solicitudes de engadir ao carriño na portada, a carga da sesión do carriño, os gardados por REST/API e os fluxos de gardado da administración.

Os atributos existentes de WooCommerce non se migran automaticamente durante a actualización do plugin. Isto significa que as taxonomías globais pa_* existentes, as claves de atributos locais de produto e as claves de atributos de variación manteñen os seus valores almacenados actuais ata que os cambies intencionadamente. Unha futura ferramenta de migración debería ser independente e funcionar primeiro en modo de proba (dry-run) para que os propietarios da tenda poidan revisar o impacto antes de calquera reescritura.

Como podo rexenerar miniaturas de forma segura?

A rexeneración de miniaturas co comando wp media regenerate pode romper ligazóns en entradas antigas, xa que os nomes de arquivo pasan a estar transliterados.

Para evitalo, desactiva o plugin cyr2lat durante a rexeneración:

wp media regenerate --skip-plugins=cyr2lat

Podo contribuír?

Si, podes!

Onde informo dos erros de seguridade atopados neste plugin?

Informa das vulnerabilidades de seguridade por correo electrónico a:

security@kagg.eu

Ao informar dunha vulnerabilidade, inclúe a maior cantidade de información posible para axudarnos a reproducir e investigar o problema, como:

  • Unha descrición clara da vulnerabilidade
  • Pasos para reproducilo
  • Código de proba de concepto ou de explotación (se está dispoñible)
  • Versións afectadas

Revisaremos o teu informe e responderemos o antes posible.

Comentarios

Image
12 de Maio de 2026 5 respostas
Cyr-To-Lat Версия 6.7.0 не работает при создании и быстром редактировании категории woocommerce в шаблоне woodmart (тестировалось с 8.3.9 и 8.4.1), при обычном редактировании все корректно. Предыдущая версия Cyr-To-Lat 6.6.0 функционировала без проблем. P.S. в версии 6.8.0 все исправлено.
Image
22 de Novembro de 2024 1 resposta
Рос мову прибрали в плагіні чи це глюк ? Якщо прибрали то до якої версії вона була?
Image
6 de Maio de 2024 2 respostas
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 de Febreiro de 2024 1 resposta
С последним обновлением стали корректно работать ранее созданные атрибуты, раньше после выгрузки отключал плагин, сейчас работает как надо. Спасибо!
Image
15 de Outubro de 2023 3 respostas
Плагин отличный (6.0.5), транслитерировал урлы (слаги для продвинутых) записей, страниц и меню и всего остального.Обратите внимание, что транслитерацию урлов всех меток (/tag/) и категорий (/category/) он тоже сделает, а в настройках нет отдельных пунктов отвечающих за метки и категории.
Ler todas as 98 opinións

Colaboradores e desenvolvedores

“Cyr-To-Lat” é un software de código aberto. As seguintes persoas colaboraron con este plugin.

Colaboradores

“Cyr-To-Lat” foi traducido a 13 idiomas. Grazas aos desenvolvedores polas súas contribucións.

Traduce “Cyr-To-Lat” ao teu idioma.

Interesado no desenvolvemento?

Revisa o código, bota unha ollada aorepositorio SVN, ou subscríbete ao log de desenvolvemento por RSS.

Rexistro de cambios

7.1.0 (08.08.2026)

  • Reforzáronse a transliteración de nomes de arquivo e os axustes de multisitio.
  • Reforzouse a validación de datos na administración.
  • Corrixiuse a xeración de slugs para os novos borradores creados por Yoast Duplicate Post cando a copia do slug orixinal está desactivada.
  • Evitouse un erro fatal cando WooCommerce dispara o gancho de lectura de produto sen un obxecto de produto.

7.0.2 (24.05.2026)

  • Corrixíronse os atributos de variación locais herdados de WooCommerce con puntuación nos nomes dos atributos tras actualizar desde versións anteriores á 7.0.

7.0.1 (20.05.2026)

  • Cambiouse o diagnóstico do bridge herdado de sanitize_title para usar a constante dedicada CYR_TO_LAT_DEBUG_LEGACY_SANITIZE_TITLE_BRIDGE en lugar de WP_DEBUG.
  • Corrixíronse os atributos de variación locais herdados de WooCommerce, incluídas as variacións Any, tras actualizar desde versións anteriores á 7.0.
  • Corrixiuse a duplicación de slugs de produtos de WooCommerce cando se actualiza un produto existente cun slug baleiro.

7.0.0 (18.05.2026)

  • Refactorizouse a xestión de slugs en servizos explícitos para entradas, termos, nomes de arquivo, atributos de WooCommerce, atributos de variación, conversión en segundo plano e rutas de WP-CLI.
  • Mellorouse a cobertura de Gutenberg mediante a xestión de slugs por REST/servidor.
  • Mellorouse a compatibilidade con WooCommerce nos fluxos de gardado de produto, taxonomía, atributo global, atributo local, variación, carriño da portada, REST/API e administración.
  • Engadiuse o filtro de compatibilidade ctl_enable_legacy_sanitize_title_bridge para o comportamento xeral herdado de sanitize_title.
  • Documentouse que os atributos existentes de WooCommerce non se migran automaticamente na 7.0; o traballo de migración futuro debe ser un fluxo independente que comece en modo de proba (dry-run).
  • Documentouse a estratexia de probas centrada na parte servidora sen dependencias obrigatorias de Codeception ou Playwright na versión.

Consulta o rexistro de cambios de todas as versións.