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
- Sube la carpeta
cyr2latal directorio/wp-content/plugins/. - 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.phpde 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
ukañadiendo el siguiente código al archivofunctions.phpde 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.phpde 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_titlepermanece 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_titley$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_BRIDGEcomotrue. Este registro de diagnóstico está desactivado por defecto y no se activa conWP_DEBUG. -
¿Cómo puedo definir mi propia transliteración de nombres de archivo?
-
Añade un código similar al archivo
functions.phpde 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.phpde 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 regeneratepuede 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!
- Únete a nuestro repositorio de GitHub
- Únete a nuestro grupo de Telegram
-
¿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
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_bridgepara el comportamiento general heredado desanitize_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.
