Если после установки CyrtoLat вы видите, что в истории записей меняются не только текущие тексты, но и ревизии, автосохранения или черновики, это уже не косметическая проблема. В админке начинает путаться история правок, diff становится шумным, а откат к старой версии может вернуть уже «переписанный» текст. Для редакции и разработчика это неудобно вдвойне: непонятно, где исходный контент, а где результат автоподмены.
Ниже — практический сценарий: как понять, что именно затронуто, как отключить автоподмену в ревизиях и автосохранениях, и как проверить, что после правки плагин перестал вмешиваться в историю записей.
Когда проблема действительно в ревизиях, а не в текущей записи
Сначала стоит отделить обычную автоподмену в контенте от изменения истории. В WordPress ревизии и автосохранения хранятся отдельно от опубликованной версии, и если плагин фильтрует их на сохранении, вы увидите это в нескольких местах:
- в списке ревизий старые версии уже содержат заменённые слова;
- при сравнении версий diff показывает изменения там, где редактор ничего не правил;
- после отката к старой ревизии текст снова «подменяется»;
- автосохранение в редакторе отличается от того, что было набрано вручную.
Если проблема проявляется только в опубликованном контенте, а история чистая, значит искать нужно в другом сценарии. Эта статья именно про сохранённые версии и автосейвы.
Что проверить в первую очередь
- Откройте запись и посмотрите список ревизий справа или в блоке «Ревизии».
- Сравните текст текущей версии и одной из старых версий.
- Сделайте тестовую правку в черновике и сохраните автосохранение.
- Проверьте, не меняется ли текст уже в момент сохранения, а не только при выводе на сайте.
Как понять, на каком этапе CyrtoLat вмешивается в данные
Удобнее всего проверить это на тестовой записи. Возьмите короткий фрагмент с тем словом, которое плагин обычно подменяет, и сохраните его в черновик. Затем откройте ревизию и сравните значения. Если подмена уже попала в ревизию, значит фильтрация работает на этапе сохранения поста, а не только на фронтенде.
Для быстрой диагностики полезно временно отключить все сторонние плагины, кроме CyrtoLat, и повторить тест. Если поведение сохраняется, вы сузили источник до самого плагина или до его настроек. Если нет — ищите конфликт с плагином редактора, оптимизации или безопасности, который тоже может трогать сохранение постов.
Минимальный тест без риска для боевого контента
- Создайте новую тестовую запись.
- Вставьте фразу с кириллическим и латинским фрагментом, который обычно подменяется.
- Сохраните как черновик.
- Откройте ревизию и сравните текст.
- Сделайте автосохранение, не публикуя запись.
Если на тестовой записи проблема воспроизводится стабильно, можно переходить к отключению автоподмены именно для ревизий и автосохранений.
Как отключить автоподмену в ревизиях и автосохранениях
В CyrtoLat это лучше делать не глобально, а точечно: оставить автоподмену там, где она нужна, и исключить только системные версии контента. Если в интерфейсе плагина есть отдельные настройки для ревизий, автосохранений или истории правок, используйте их в первую очередь. Это безопаснее, чем править весь контентный поток через код.
Если в вашей версии плагина такой опции нет, рабочий путь — исключить сохранение ревизий из фильтрации на уровне WordPress-хуков. Ниже пример, который можно использовать как основу в мини-плагине или в functions.php дочерней темы. Логику нужно адаптировать под конкретные фильтры CyrtoLat, если они доступны в вашей сборке.
<?php
/**
* Не применять автоподмену к ревизиям и автосохранениям.
*/
add_filter( 'wp_insert_post_data', function( $data, $postarr ) {
if ( ! empty( $postarr['post_type'] ) && $postarr['post_type'] === 'revision' ) {
return $data;
}
if ( defined( 'DOING_AUTOSAVE' ) && DOING_AUTOSAVE ) {
return $data;
}
return $data;
}, 20, 2 );Этот пример сам по себе не отключает CyrtoLat, но показывает, где обычно имеет смысл ставить исключение: на этапе сохранения ревизий и автосейвов. Если у CyrtoLat есть собственный фильтр или настройка исключений, используйте именно её, а код оставьте как запасной вариант для точечной доработки.
Когда лучше не трогать код
Если на сайте нет отдельной среды для тестов, не вносите изменения сразу в боевую тему. Для таких задач лучше использовать дочернюю тему или маленький mu-plugin. Это снижает риск потерять правку после обновления и упрощает откат.
Сравнение подходов: настройка, код, компромисс
| Подход | Что даёт | Минус |
|---|---|---|
| Настройка в интерфейсе CyrtoLat | Быстрое и безопасное отключение для нужного сценария | Зависит от того, есть ли нужная опция в версии плагина |
| Код через хуки WordPress | Точный контроль над ревизиями и автосохранениями | Нужно тестировать и сопровождать при обновлениях |
| Полное отключение автоподмены | Убирает риск вмешательства в историю контента | Теряется полезная автоматизация для обычных записей |
Проверка результата после внедрения
После изменения настройки или кода важно не ограничиваться визуальной проверкой записи. Нужны именно контрольные действия, которые покажут, что история перестала переписываться.
- Создайте новую тестовую запись и сохраните несколько ревизий.
- Откройте список ревизий и убедитесь, что старые версии не меняются после сохранения.
- Сделайте автосохранение и сравните его с ручной версией.
- Откатитесь к старой ревизии и проверьте, что текст возвращается в исходном виде.
- Если используется кэш редактора или объектный кэш, очистите его и повторите тест.
Если после отката текст снова подменяется, значит исключение сработало не на том этапе. В таком случае ищите, где именно CyrtoLat подключается к сохранению: до записи в базу или уже при выводе данных в админке.
Частые ошибки и как их исправить
Отключили не ревизии, а весь контент
Такое бывает, когда правят слишком общий фильтр. В результате автоподмена исчезает и там, где она была нужна. Исправление простое: сузить условие до revision и DOING_AUTOSAVE, а не отключать обработку для всех записей.
Проверяли только опубликованную запись
Проблема в ревизиях может быть незаметна на фронтенде. Всегда сравнивайте именно историю правок, иначе можно решить, что всё работает, хотя старые версии уже испорчены.
Не очистили кэш редактора или страницы админки
Иногда кажется, что плагин продолжает менять текст, хотя на самом деле вы видите старую версию из кэша. После изменения настроек очистите кэш плагинов оптимизации и повторите сохранение в новой тестовой записи.
Проверяли на уже испорченной ревизии
Если старые версии были изменены раньше, отключение автоподмены не восстановит исходный текст автоматически. Для таких случаев нужен откат из резервной копии или ручная правка ревизий, если это вообще оправдано.
Практические советы по безопасности и производительности
Любые изменения, связанные с сохранением контента, лучше делать аккуратно. Минимальный набор правил здесь такой:
- сначала тестовая среда, потом боевой сайт;
- перед изменениями — резервная копия базы;
- не вносить правки в родительскую тему, если есть дочерняя;
- не смешивать логику CyrtoLat с другими фильтрами, которые тоже меняют контент при сохранении;
- после внедрения проверить не только запись, но и ревизии, автосейвы и откат.
Если на сайте уже используется набор для технической чистки и SEO, вроде Clearfy Pro, это может помочь убрать лишние дубли и шум в админке, но саму проблему ревизий всё равно нужно решать в CyrtoLat или на уровне кода. Не стоит рассчитывать, что один плагин исправит поведение другого без точной настройки.
Короткий чек-лист перед публикацией
- Проверена тестовая запись, а не только боевой контент.
- Сравнены текущая версия, ревизия и автосохранение.
- Отключение затронуло только ревизии и автосейвы.
- После отката текст возвращается без лишних замен.
- Кэш админки и плагинов очищен.
Если после этого история записей остаётся чистой, а текущий контент продолжает обрабатываться там, где это нужно, значит сценарий настроен правильно: CyrtoLat не ломает ревизии и не мешает откату к старым версиям.