Title: Cyr-To-Lat
Author: Sergey Biryukov
Published: <strong>2 februari 2008</strong>
Last modified: 24 mei 2026

---

Plugins zoeken

![](https://ps.w.org/cyr2lat/assets/banner-772x250.png?rev=2434252)

![](https://ps.w.org/cyr2lat/assets/icon.svg?rev=2834364)

# Cyr-To-Lat

 Door [Sergey Biryukov](https://profiles.wordpress.org/sergeybiryukov/)

[Download](https://downloads.wordpress.org/plugin/cyr2lat.7.0.2.zip)

[Live voorbeeld](https://nl.wordpress.org/plugins/cyr2lat/?preview=1)

 * [Details](https://nl.wordpress.org/plugins/cyr2lat/#description)
 * [Beoordelingen](https://nl.wordpress.org/plugins/cyr2lat/#reviews)
 *  [Installatie](https://nl.wordpress.org/plugins/cyr2lat/#installation)
 * [Ontwikkeling](https://nl.wordpress.org/plugins/cyr2lat/#developers)

 [Ondersteuning](https://wordpress.org/support/plugin/cyr2lat/)

## Beschrijving

Converteert Cyrillische tekens in bericht, pagina en term slugs naar Latijnse tekens.
Nuttig voor het maken van menselijk leesbare URL’s.

#### Kenmerken

 * The only plugin with a fully editable transliteration table. Allows adding/removing
   and editing pairs like ‘Я’ => ‘Ya’, or even ‘Пиво’ => ‘Beer’
 * Converts post, page, custom post type, and term slugs through explicit WordPress
   save and REST/Gutenberg paths
 * Converts any number of existing post, page, and term slugs in background processes
   or with WP-CLI
 * Bewaart bestaande bericht en pagina permalinks integriteit
 * Voert transliteratie uit van bestandsnamen van bijlagen
 * Supports WooCommerce product, product taxonomy, global attribute, local attribute,
   variation, and frontend cart slug flows without automatic migration of existing
   attributes
 * The plugin supports Russian, Belorussian, Ukrainian, Bulgarian, Macedonian, Serbian,
   Greek, Armenian, Georgian, Kazakh, Hebrew, and Chinese characters
 * [Has many advantages over similar plugins](https://kagg.eu/en/the-benefits-of-cyr-to-lat/)
 * [Officially compatible with WPML](https://wpml.org/plugin/cyr-to-lat/)

Gebaseerd op de originele Rus-To-Lat plugin door Anton Skorobogatov.

Sponsored by [Blackfire](https://www.blackfire.io/).

### Plugin ondersteuning

 * [Ondersteuningsforum](https://wordpress.org/support/plugin/cyr2lat/)
 * [Telegram groep](https://t.me/cyr2lat)

## Schermafbeeldingen

[⌊Tabel instellingen pagina⌉⌊Tabel instellingen pagina⌉[

Tabel instellingen pagina

[⌊Converter settings page⌉⌊Converter settings page⌉[

Converter settings page

[⌊Block editor with transliterated slug⌉⌊Block editor with transliterated slug⌉[

Block editor with transliterated slug

[⌊WPML certificaat⌉⌊WPML certificaat⌉[

WPML certificaat

## Installatie

 1. Upload de `cyr2lat` map naar de `/wp-content/plugins/` folder.
 2. De plugin activeren via het ‘Plugin’ menu in WordPress.

#### Upgrade notes for 7.0

Version 7.0 is an architecture-focused release. It keeps the existing transliteration
table, locale filters, post and term conversion tools, and WP-CLI command stable
while moving slug handling to explicit services.

Existing posts, pages, terms, filenames, and WooCommerce product data are not destructively
rewritten during the plugin upgrade. Use the Converter page or `wp cyr2lat regenerate`
when you intentionally want to regenerate existing post and term slugs.

WooCommerce attributes created before 7.0 are not automatically migrated. Existing
global `pa_*` taxonomies and existing local or variation attribute keys should be
reviewed separately; any future migration must use a dedicated dry-run-first workflow.

Cyr-To-Lat 7.0.1 keeps legacy WooCommerce local variation attributes, including `
Any` variations, aligned between the product form, add-to-cart request, and cart
session.

## FAQ

### Hoe kan ik mijn eigen vervangingen bepalen?

Add this code to your theme’s `functions.php` file:

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

### How can I redefine non-standard locale?

For instance, if your non-standard locale is uk_UA, you can redefine it to `uk` 
by adding the following code to your theme’s `function.php` file:

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

### How can I define my own transliteration of titles?

Add similar code to your theme’s `functions.php` file:

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

### How can I control the legacy sanitize_title bridge?

Version 7.0 uses explicit slug handlers for posts, terms, WooCommerce attributes,
and other known save paths. A legacy `sanitize_title` bridge remains as a compatibility
fallback for broad calls that older integrations may still rely on.

You can disable the broad fallback with this code:

    ```
    add_filter( 'ctl_enable_legacy_sanitize_title_bridge', '__return_false' );
    ```

The filter receives the current default value, `$title`, `$raw_title`, and `$context`.
Explicit known contexts, such as WordPress save handling, continue to use the dedicated
7.0 slug paths.

For debugging unknown bridge calls, define `CYR_TO_LAT_DEBUG_LEGACY_SANITIZE_TITLE_BRIDGE`
as `true`. This diagnostic log is disabled by default and is not enabled by `WP_DEBUG`.

### How can I define my own transliteration of filenames?

Add similar code to your theme’s `functions.php` file:

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

### How can I allow the plugin to work on the frontend?

Add the following code to your plugin’s (or mu-plugin’s) main file. This code won’t
work being added to a theme’s functions.php file.

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

### How can I limit post types for background conversion?

Add similar code to your theme’s `functions.php` file:

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

### How can I convert many posts/terms using wp-cli?

Use the following command in the console:

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

Where
 -post_type is a list of post types, -post_status is a list of post statuses.

### What WooCommerce attribute behavior is supported in 7.0?

Cyr-To-Lat 7.0 explicitly handles new and updated WooCommerce product slugs, product
category and tag slugs, global attribute slugs, global attribute term slugs, local
product attribute keys, variation attribute keys, frontend add-to-cart requests,
cart session loading, REST/API saves, and admin save flows.

Existing WooCommerce attributes are not automatically migrated during plugin upgrade.
This means existing global `pa_*` taxonomies, local product attribute keys, and 
variation attribute keys keep their current stored values until you intentionally
change them. A future migration tool should be separate and dry-run-first so store
owners can review the impact before any rewrite.

### How can I regenerate thumbnails safely?

Regeneration of thumbnails with the command `wp media regenerate` can break links
in old posts as file names become transliterated.

To avoid it, deactivate the cyr2lat plugin during regeneration:

    ```
    wp media regenerate --skip-plugins=cyr2lat
    ```

### Can I contribute?

Ja, dat kan je!

 * Join in on our [GitHub repository](https://github.com/mihdan/cyr2lat)
 * Join in on our [Telegram Group](https://t.me/cyr2lat)

### Where do I report security bugs found in this plugin?

Please report security vulnerabilities by email to:

**security@kagg.eu**

When reporting a vulnerability, please include as much information as possible to
help us reproduce and investigate the issue, such as:

 * A clear description of the vulnerability
 * Steps to reproduce
 * Proof-of-concept or exploit code (if available)
 * Affected versions

We will review your report and respond as quickly as possible.

## Beoordelingen

![](https://secure.gravatar.com/avatar/015c100e8f3a6624e354fa8135e5adc7bfcc23b5549f85e8429fcf7c58deb022?
s=60&d=retro&r=g)

### 󠀁[Отличный плагин, регулярные обновления](https://wordpress.org/support/topic/%d0%bd%d0%b5-%d0%ba%d0%be%d1%80%d1%80%d0%b5%d0%ba%d1%82%d0%bd%d0%be-%d1%80%d0%b0%d0%b1%d0%be%d1%82%d0%b0%d0%b5%d1%82-%d1%81-woodmart/)󠁿

 [grisym](https://profiles.wordpress.org/grisym/) 12 mei 2026 5 reacties

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 все исправлено.

![](https://secure.gravatar.com/avatar/cb0988a9ac760bb67cec7d466a13fd6d6d2962774f011a134a881941341d9626?
s=60&d=retro&r=g)

### 󠀁[Рекомендую плагін Cyr-To-Lat для WooCommerce](https://wordpress.org/support/topic/%d1%80%d0%b5%d0%ba%d0%be%d0%bc%d0%b5%d0%bd%d0%b4%d1%83%d1%8e-%d0%bf%d0%bb%d0%b0%d0%b3%d1%96%d0%bd-cyr-to-lat-%d0%b4%d0%bb%d1%8f-woocommerce/)󠁿

 [Theposudka](https://profiles.wordpress.org/dkovtonjuk/) 10 mei 2025 1 reactie

Плагін Cyr-To-Lat відмінно працює на моєму WooCommerce магазині.

![](https://secure.gravatar.com/avatar/b60fde26c92fa6c3c00b6f9fefe9f5f0181168e7f823aed1800b644be3a686ce?
s=60&d=retro&r=g)

### 󠀁[Нема російської мови](https://wordpress.org/support/topic/%d0%bd%d0%b5%d0%bc%d0%b0-%d1%80%d0%be%d1%81%d1%96%d0%b9%d1%81%d1%8c%d0%ba%d0%be%d1%97-%d0%bc%d0%be%d0%b2%d0%b8/)󠁿

 [andr777](https://profiles.wordpress.org/andr777/) 22 november 2024 1 reactie

Рос мову прибрали в плагіні чи це глюк ? Якщо прибрали то до якої версії вона була?

![](https://secure.gravatar.com/avatar/f4fd2fc4d108aac189bd78ec8b66732db397d00abcfe4e5b50d3d69f5a1809cd?
s=60&d=retro&r=g)

### 󠀁[Problems with some languages](https://wordpress.org/support/topic/problems-with-some-languages/)󠁿

 [alexmcmeekin2017](https://profiles.wordpress.org/alexmcmeekin2017/) 6 mei 2024
2 reacties

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.

![](https://secure.gravatar.com/avatar/87b5bcf8f8138281d7dccbe5592209795243a807430b0893b8b5b642bcfe2174?
s=60&d=retro&r=g)

### 󠀁[Ура! Заработало!](https://wordpress.org/support/topic/%d1%83%d1%80%d0%b0-%d0%b7%d0%b0%d1%80%d0%b0%d0%b1%d0%be%d1%82%d0%b0%d0%bb%d0%be/)󠁿

 [vl33](https://profiles.wordpress.org/vl33/) 12 februari 2024 1 reactie

С последним обновлением стали корректно работать ранее созданные атрибуты, раньше
после выгрузки отключал плагин, сейчас работает как надо. Спасибо!

![](https://secure.gravatar.com/avatar/6d0e788a4cf4a21a11ffd20c3b73a91b80dbe34aee5f66f9632190c826b74d57?
s=60&d=retro&r=g)

### 󠀁[Метки и категории не отключаемы](https://wordpress.org/support/topic/%d0%b2-%d0%bd%d0%b0%d1%81%d1%82%d1%80%d0%be%d0%b9%d0%ba%d0%b0%d1%85-%d0%bd%d0%b5%d1%82-%d0%be%d1%82%d0%ba%d0%bb%d1%8e%d1%87%d0%b5%d0%bd%d0%b8%d1%8f-%d0%bc%d0%b5%d1%82%d0%be%d0%ba/)󠁿

 [AndreyPominov](https://profiles.wordpress.org/pominov/) 15 oktober 2023 3 reacties

Плагин отличный (6.0.5), транслитерировал урлы (слаги для продвинутых) записей, 
страниц и меню и всего остального.Обратите внимание, что транслитерацию урлов всех
меток (/tag/) и категорий (/category/) он тоже сделает, а в настройках нет отдельных
пунктов отвечающих за метки и категории.

 [ Lees alle 98 beoordelingen ](https://wordpress.org/support/plugin/cyr2lat/reviews/)

## Bijdragers & ontwikkelaars

“Cyr-To-Lat” is open source software. De volgende personen hebben bijgedragen aan
deze plugin.

Bijdragers

 *   [ Sergey Biryukov ](https://profiles.wordpress.org/sergeybiryukov/)
 *   [ mihdan ](https://profiles.wordpress.org/mihdan/)
 *   [ kaggdesign ](https://profiles.wordpress.org/kaggdesign/)
 *   [ karevn ](https://profiles.wordpress.org/karevn/)
 *   [ webvitalii ](https://profiles.wordpress.org/webvitaly/)

“Cyr-To-Lat” is vertaald in 10 localen. Dank voor [de vertalers](https://translate.wordpress.org/projects/wp-plugins/cyr2lat/contributors)
voor hun bijdragen.

[Vertaal “Cyr-To-Lat” in je eigen taal.](https://translate.wordpress.org/projects/wp-plugins/cyr2lat)

### Interesse in ontwikkeling?

[Bekijk de code](https://plugins.trac.wordpress.org/browser/cyr2lat/), haal de [SVN repository](https://plugins.svn.wordpress.org/cyr2lat/)
op, of abonneer je op het [ontwikkellog](https://plugins.trac.wordpress.org/log/cyr2lat/)
via [RSS](https://plugins.trac.wordpress.org/log/cyr2lat/?limit=100&mode=stop_on_copy&format=rss).

## Changelog

#### 7.0.2 (24.05.2026)

 * Fixed legacy WooCommerce local variation attributes with punctuation in attribute
   names after upgrading from versions before 7.0.

#### 7.0.1 (20.05.2026)

 * Changed legacy sanitize_title bridge diagnostics to use the dedicated CYR_TO_LAT_DEBUG_LEGACY_SANITIZE_TITLE_BRIDGE
   constant instead of WP_DEBUG.
 * Fixed legacy WooCommerce local variation attributes, including `Any` variations,
   after upgrading from versions before 7.0.
 * Fixed duplicate WooCommerce product slugs when an existing product is updated
   with an empty slug.

#### 7.0.0 (18.05.2026)

 * Refactored slug handling into explicit services for posts, terms, filenames, 
   WooCommerce attributes, variation attributes, background conversion, and WP-CLI
   paths.
 * Improved Gutenberg coverage through REST/backend slug handling.
 * Improved WooCommerce support for product, taxonomy, global attribute, local attribute,
   variation, frontend cart, REST/API, and admin save flows.
 * Added the `ctl_enable_legacy_sanitize_title_bridge` compatibility filter for 
   broad legacy `sanitize_title` behavior.
 * Documented that existing WooCommerce attributes are not automatically migrated
   in 7.0; future migration work must be a separate dry-run-first workflow.
 * Documented the backend-first testing strategy without required Codeception or
   Playwright release dependencies.

[See changelog for all versions](https://plugins.svn.wordpress.org/cyr2lat/trunk/changelog.txt).

## Meta

 *  Versie **7.0.2**
 *  Laatst geüpdatet **1 maand geleden**
 *  Actieve installaties **300.000+**
 *  WordPress versie ** 6.0 of nieuwer **
 *  Getest t/m **7.0**
 *  PHP versie ** 7.4 of nieuwer **
 *  Talen
 * [Dutch](https://nl.wordpress.org/plugins/cyr2lat/), [Dutch (Belgium)](https://nl-be.wordpress.org/plugins/cyr2lat/),
   [English (US)](https://wordpress.org/plugins/cyr2lat/), [Georgian](https://ka.wordpress.org/plugins/cyr2lat/),
   [Russian](https://ru.wordpress.org/plugins/cyr2lat/), [Spanish (Chile)](https://cl.wordpress.org/plugins/cyr2lat/),
   [Spanish (Ecuador)](https://es-ec.wordpress.org/plugins/cyr2lat/), [Spanish (Spain)](https://es.wordpress.org/plugins/cyr2lat/),
   [Spanish (Venezuela)](https://ve.wordpress.org/plugins/cyr2lat/), [Swedish](https://sv.wordpress.org/plugins/cyr2lat/)
   en [Ukrainian](https://uk.wordpress.org/plugins/cyr2lat/).
 *  [Vertaal in je eigen taal](https://translate.wordpress.org/projects/wp-plugins/cyr2lat)
 * Tags
 * [cyrillic](https://nl.wordpress.org/plugins/tags/cyrillic/)[multilingual](https://nl.wordpress.org/plugins/tags/multilingual/)
   [slugs](https://nl.wordpress.org/plugins/tags/slugs/)[translation](https://nl.wordpress.org/plugins/tags/translation/)
   [transliteration](https://nl.wordpress.org/plugins/tags/transliteration/)
 *  [Geavanceerde weergave](https://nl.wordpress.org/plugins/cyr2lat/advanced/)

## Waarderingen

 4.7 van 5 sterren.

 *  [  85 5 sterren beoordelingen     ](https://wordpress.org/support/plugin/cyr2lat/reviews/?filter=5)
 *  [  4 4 sterren beoordelingen     ](https://wordpress.org/support/plugin/cyr2lat/reviews/?filter=4)
 *  [  3 3 sterren beoordelingen     ](https://wordpress.org/support/plugin/cyr2lat/reviews/?filter=3)
 *  [  1 2 ster beoordeling     ](https://wordpress.org/support/plugin/cyr2lat/reviews/?filter=2)
 *  [  5 1 sterren beoordelingen     ](https://wordpress.org/support/plugin/cyr2lat/reviews/?filter=1)

[Your review](https://wordpress.org/support/plugin/cyr2lat/reviews/#new-post)

[Bekijk alle beoordelingen](https://wordpress.org/support/plugin/cyr2lat/reviews/)

## Bijdragers

 *   [ Sergey Biryukov ](https://profiles.wordpress.org/sergeybiryukov/)
 *   [ mihdan ](https://profiles.wordpress.org/mihdan/)
 *   [ kaggdesign ](https://profiles.wordpress.org/kaggdesign/)
 *   [ karevn ](https://profiles.wordpress.org/karevn/)
 *   [ webvitalii ](https://profiles.wordpress.org/webvitaly/)

## Ondersteuning

Opgeloste problemen in de laatste twee maanden:

     7 van de 8

 [Het supportforum bekijken](https://wordpress.org/support/plugin/cyr2lat/)