Cyr-To-Lat

Descripción

Convierte los caracteres cirílicos en los slugs de entradas, páginas y términos a caracteres latinos. Útil para crear URL legibles.

Características

  • El único plugin con una tabla de transliteración totalmente editable. Permite añadir, eliminar y editar pares como ‘Я’ => ‘Ya’, o incluso ‘Пиво’ => ‘Beer’
  • Convierte los slugs de entradas, páginas, tipos de contenido personalizados y términos a través de rutas explícitas de guardado de WordPress y REST/Gutenberg
  • Convierte cualquier número de slugs de entradas, páginas y términos existentes en procesos en segundo plano o con WP-CLI
  • Mantiene la integridad de los enlaces permanentes de entradas y páginas existentes
  • Realiza la transliteración de los nombres de archivos adjuntos
  • Admite los flujos de slug de productos de WooCommerce, taxonomías de productos, atributos globales, atributos locales, variaciones y carrito del frontend sin migración automática de los atributos existentes
  • El plugin admite caracteres rusos, bielorrusos, ucranianos, búlgaros, macedonios, serbios, griegos, armenios, georgianos, kazajos, hebreos y chinos
  • Tiene muchas ventajas sobre plugins similares
  • Oficialmente compatible con WPML

Basado en el plugin original Rus-To-Lat de Anton Skorobogatov.

Patrocinado por Blackfire.

Soporte del plugin

Capturas

Instalación

  1. Sube la carpeta cyr2lat al directorio /wp-content/plugins/.
  2. Activa el plugin a través del menú «Plugins» en WordPress.

Notas de actualización para la versión 7.0

La versión 7.0 es un lanzamiento centrado en la arquitectura. Mantiene la tabla de transliteración existente, los filtros de configuración regional, las herramientas de conversión de entradas y términos, y el comando WP-CLI estables, mientras traslada el manejo de slugs a servicios explícitos.

Las entradas, páginas, términos, nombres de archivo y datos de productos de WooCommerce existentes no se reescriben de forma destructiva durante la actualización del plugin. Usa la página del convertidor o wp cyr2lat regenerate cuando quieras regenerar intencionadamente los slugs de entradas y términos existentes.

Los atributos de WooCommerce creados antes de la versión 7.0 no se migran automáticamente. Las taxonomías globales pa_* existentes y las claves de atributos locales o de variación existentes deben revisarse por separado; cualquier migración futura debe usar un flujo de trabajo dedicado con simulación previa.

Cyr-To-Lat 7.0.1 mantiene los atributos de variación local heredados de WooCommerce, incluyendo las variaciones Any, alineados entre el formulario del producto, la solicitud de añadir al carrito y la sesión del carrito.

FAQ

¿Cómo puedo definir mis propias sustituciones?

Añade este código al archivo functions.php de tu 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' );

¿Cómo puedo redefinir una configuración regional no estándar?

Por ejemplo, si tu configuración regional no estándar es uk_UA, puedes redefinirla como uk añadiendo el siguiente código al archivo functions.php de tu 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' );

¿Cómo puedo definir mi propia transliteración de títulos?

Añade un código similar al archivo functions.php de tu 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 );

¿Cómo puedo controlar el puente heredado de sanitize_title?

La versión 7.0 utiliza controladores de slug explícitos para entradas, términos, atributos de WooCommerce y otras rutas de guardado conocidas. Un puente heredado de sanitize_title permanece como alternativa de compatibilidad para llamadas generales en las que las integraciones más antiguas puedan seguir confiando.

Puedes desactivar la alternativa general con este código:

add_filter( 'ctl_enable_legacy_sanitize_title_bridge', '__return_false' );

El filtro recibe el valor predeterminado actual, $title, $raw_title y $context. Los contextos conocidos explícitos, como el manejo de guardado de WordPress, siguen usando las rutas de slug dedicadas de la versión 7.0.

Para depurar llamadas de puente desconocidas, define CYR_TO_LAT_DEBUG_LEGACY_SANITIZE_TITLE_BRIDGE como true. Este registro de diagnóstico está desactivado por defecto y no se activa con WP_DEBUG.

¿Cómo puedo definir mi propia transliteración de nombres de archivo?

Añade un código similar al archivo functions.php de tu 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 );

¿Cómo puedo permitir que el plugin funcione en el frontend?

Añade el siguiente código al archivo principal de tu plugin (o mu-plugin). Este código no funcionará si se añade al archivo functions.php de un 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' );

¿Cómo puedo limitar los tipos de contenido para la conversión en segundo plano?

Añade un código similar al archivo functions.php de tu 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' );

¿Cómo puedo convertir muchas entradas/términos usando wp-cli?

Usa el siguiente comando en la consola:

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

Donde
-post_type es una lista de tipos de contenido,
-post_status es una lista de estados de las entradas.

¿Qué comportamiento de los atributos de WooCommerce es compatible en la versión 7.0?

Cyr-To-Lat 7.0 gestiona explícitamente los slugs de productos nuevos y actualizados de WooCommerce, los slugs de categorías y etiquetas de productos, los slugs de atributos globales, los slugs de términos de atributos globales, las claves de atributos locales de productos, las claves de atributos de variación, las solicitudes de añadir al carrito desde el frontend, la carga de sesiones del carrito, los guardados mediante REST/API y los flujos de guardado del administrador.

Los atributos existentes de WooCommerce no se migran automáticamente durante la actualización del plugin. Esto significa que las taxonomías globales pa_* existentes, las claves de atributos locales de productos y las claves de atributos de variación mantienen sus valores almacenados actuales hasta que los cambies intencionadamente. Una futura herramienta de migración debería ser independiente y ejecutarse primero en modo de simulación para que los propietarios de las tiendas puedan revisar el impacto antes de cualquier reescritura.

¿Cómo puedo regenerar miniaturas de forma segura?

La regeneración de miniaturas con el comando wp media regenerate puede romper enlaces en entradas antiguas, ya que los nombres de archivo se transliteran.

Para evitarlo, desactiva el plugin cyr2lat durante la regeneración:

wp media regenerate --skip-plugins=cyr2lat

¿Puedo contribuir?

¡Sí, puedes!

¿Dónde puedo informar de los errores de seguridad encontrados en este plugin?

Informa de las vulnerabilidades de seguridad por correo electrónico a:

security@kagg.eu

Al informar de una vulnerabilidad, incluye toda la información posible para ayudarnos a reproducir e investigar el problema, como:

  • Una descripción clara de la vulnerabilidad
  • Pasos para reproducir
  • Código de prueba de concepto o exploit (si está disponible)
  • Versiones afectadas

Revisaremos tu informe y responderemos lo antes posible.

Reseñas

12 de mayo de 2026 5 respuestas
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 все исправлено.
22 de noviembre de 2024 1 respuesta
Рос мову прибрали в плагіні чи це глюк ? Якщо прибрали то до якої версії вона була?
6 de mayo de 2024 2 respuestas
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.
12 de febrero de 2024 1 respuesta
С последним обновлением стали корректно работать ранее созданные атрибуты, раньше после выгрузки отключал плагин, сейчас работает как надо. Спасибо!
15 de octubre de 2023 3 respuestas
Плагин отличный (6.0.5), транслитерировал урлы (слаги для продвинутых) записей, страниц и меню и всего остального.Обратите внимание, что транслитерацию урлов всех меток (/tag/) и категорий (/category/) он тоже сделает, а в настройках нет отдельных пунктов отвечающих за метки и категории.
Leer todas las 98 reseñas

Colaboradores y desarrolladores

«Cyr-To-Lat» es un software de código abierto. Las siguientes personas han colaborado con este plugin.

Colaboradores

«Cyr-To-Lat» está traducido en 11 idiomas. Gracias a los traductores por sus contribuciones.

Traduce «Cyr-To-Lat» a tu idioma.

¿Interesado en el desarrollo?

Revisa el código , echa un vistazo al repositorio SVN o suscríbete al registro de desarrollo por RSS.

Registro de cambios

7.1.0 (08.08.2026)

  • Se ha reforzado la transliteración de nombres de archivo y los ajustes multisitio.
  • Se ha reforzado la validación de datos en el administrador.
  • Se ha corregido la generación de slugs para borradores nuevos creados por Yoast Duplicate Post cuando la copia del slug original está desactivada.
  • Se ha evitado un error fatal cuando WooCommerce ejecuta el hook product-read sin un objeto de producto.

7.0.2 (24.05.2026)

  • Se han corregido los atributos de variación local heredados de WooCommerce con signos de puntuación en los nombres de los atributos después de actualizar desde versiones anteriores a la 7.0.

7.0.1 (20.05.2026)

  • Se ha cambiado el diagnóstico del puente heredado de sanitize_title para usar la constante dedicada CYR_TO_LAT_DEBUG_LEGACY_SANITIZE_TITLE_BRIDGE en lugar de WP_DEBUG.
  • Se han corregido los atributos de variación local heredados de WooCommerce, incluyendo las variaciones Any, después de actualizar desde versiones anteriores a la 7.0.
  • Se han corregido los slugs duplicados de productos de WooCommerce cuando se actualiza un producto existente con un slug vacío.

7.0.0 (18.05.2026)

  • Se ha refactorizado el manejo de slugs en servicios explícitos para entradas, términos, nombres de archivo, atributos de WooCommerce, atributos de variación, conversión en segundo plano y rutas de WP-CLI.
  • Se ha mejorado la cobertura de Gutenberg mediante el manejo de slugs a través de REST/backend.
  • Se ha mejorado el soporte de WooCommerce para los flujos de guardado de productos, taxonomías, atributos globales, atributos locales, variaciones, carrito del frontend, REST/API y administrador.
  • Se ha añadido el filtro de compatibilidad ctl_enable_legacy_sanitize_title_bridge para el comportamiento general heredado de sanitize_title.
  • Se ha documentado que los atributos existentes de WooCommerce no se migran automáticamente en la versión 7.0; el trabajo de migración futuro debe ser un flujo de trabajo independiente con simulación previa.
  • Se ha documentado la estrategia de pruebas centrada en el backend sin dependencias de lanzamiento de Codeception o Playwright.

Consulta el registro de cambios de todas las versiones.