Как в CyrtoLat отключить автоподмену в тексте для конкретной роли пользователя

Сценарий типичный: на сайте уже работает автоподмена в тексте, но часть команды должна видеть и редактировать контент без преобразований. Чаще всего это нужно для редакторов, контент-менеджеров, SEO-специалистов или клиентов, которые проверяют исходный текст перед публикацией. Если автоподмена включена для всех, в админке быстро появляются ложные правки, а при повторном сохранении можно получить неожиданные изменения в тексте.

У CyrtoLat это решается не через «выключить всё», а через точечное ограничение по роли. Такой подход удобен, когда на сайте есть и рабочая редактура, и уже опубликованные материалы, где автоподмена нужна только на фронтенде или только для части пользователей.

Когда это действительно нужно

Отключать автоподмену для конкретной роли имеет смысл, если вы видите хотя бы один из этих симптомов:

  • редакторы открывают запись и видят в визуальном редакторе не тот текст, который ожидали;
  • при повторном сохранении контент меняется сильнее, чем должен;
  • нужно оставить автоподмену для посетителей, но убрать её для авторов и редакторов в админке;
  • на сайте несколько ролей, и только одной из них нельзя показывать преобразованный текст;
  • после импорта или массового редактирования сложно понять, где исходник, а где уже результат подмены.

Что важно проверить до настройки

Сначала посмотрите, где именно возникает проблема: в админке, на фронтенде или в обоих местах. Это важно, потому что отключение для роли пользователя не равно полному отключению функции. Если текст искажается только в редакторе, обычно достаточно ограничить обработку для авторизованных ролей. Если же подмена ломает публичные страницы, нужно отдельно проверить общие настройки CyrtoLat и исключения по разделам, типам записей и словам.

Диагностика: кто именно видит автоподмену

Самая частая ошибка — пытаться лечить симптом не там, где он возникает. Для начала ответьте на три вопроса:

  1. Проблема видна только в админке или и на сайте тоже?
  2. Какая роль у пользователя, который видит «лишнюю» подмену?
  3. Срабатывает ли автоподмена в классическом редакторе, Gutenberg или в обоих?

Если у вас есть доступ к тестовой учётке, проверьте одну и ту же запись под разными ролями. Это быстро показывает, связано ли поведение с правами пользователя, кэшем или глобальной настройкой плагина.

Для технической проверки удобно временно вывести роль текущего пользователя в шаблон или в небольшой mu-plugin. Это не постоянное решение, а способ убедиться, что логика фильтрации работает так, как вы ожидаете.

<?php
add_action('admin_notices', function () {
    if (!is_user_logged_in()) {
        return;
    }

    $user = wp_get_current_user();
    if (empty($user->roles)) {
        return;
    }

    echo '<div class="notice notice-info"><p>Текущая роль: ' . esc_html(implode(', ', $user->roles)) . '</p></div>';
});

Если роль определена верно, а текст всё равно меняется, дальше уже имеет смысл смотреть в сторону фильтра CyrtoLat и исключений по роли.

Как отключить автоподмену в тексте для конкретной роли

Логика обычно строится так: вы оставляете автоподмену включённой глобально, но для выбранной роли возвращаете исходный текст без преобразования. Это безопаснее, чем пытаться вручную редактировать каждый материал или отключать плагин целиком.

Ниже пример подхода через фильтр, который можно добавить в mu-plugin или в functions.php дочерней темы. Название фильтра и сигнатуру всегда сверяйте с документацией CyrtoLat, но сама схема остаётся одинаковой: проверяем роль и при совпадении пропускаем обработку.

<?php
add_filter('cyrtolat_text_autoplace_enabled', function ($enabled, $context = []) {
    if (!is_user_logged_in()) {
        return $enabled;
    }

    $user = wp_get_current_user();
    $roles_to_skip = ['editor', 'author'];

    if (array_intersect($roles_to_skip, (array) $user->roles)) {
        return false;
    }

    return $enabled;
}, 10, 2);

Если в вашей версии CyrtoLat используется другой фильтр для текста, принцип тот же: проверка роли через wp_get_current_user() и возврат false для тех, кому автоподмена не нужна. Важно не делать это через грубое отключение всего плагина для авторизованных пользователей, иначе вы потеряете и другие полезные функции.

Если нужно исключить только админку

Иногда задача проще: редакторы должны видеть исходный текст только в панели управления, а на фронтенде автоподмена должна работать как раньше. Тогда фильтр можно ограничить проверкой is_admin(). Это особенно полезно, если команда работает в Gutenberg и жалуется на «прыгающий» текст при редактировании.

<?php
add_filter('cyrtolat_text_autoplace_enabled', function ($enabled) {
    if (is_admin() && current_user_can('edit_posts')) {
        return false;
    }

    return $enabled;
});

Такой вариант не привязан к конкретной роли, а ориентируется на права. Это удобно на сайтах, где роли кастомные и список пользователей часто меняется.

Сравнение подходов: роль, права или полное отключение

ПодходКогда подходитМинус
Отключение по ролиЕсть чёткий список ролей, которым нельзя показывать подменуНужно следить за кастомными ролями
Отключение по capabilityПрава важнее названия ролиСложнее отлаживать на нестандартных установках
Полное отключение для авторизованныхНужно убрать искажения в админке вообще для всехПубличная часть может остаться без нужной логики

На практике чаще всего выигрывает вариант с capability. Он переживает смену ролей лучше, чем жёсткий список editor или author. Но если у вас небольшая редакция, список ролей проще поддерживать и быстрее объяснить команде.

Проверка результата после внедрения

После настройки не ограничивайтесь визуальной проверкой одной записи. Нужна короткая, но повторяемая проверка:

  • откройте запись под учёткой нужной роли и убедитесь, что текст не преобразуется;
  • проверьте ту же запись под ролью, для которой автоподмена должна остаться;
  • сохраните запись повторно и сравните исходный текст до и после;
  • очистите кэш страницы и объектный кэш, если он используется;
  • проверьте не только редактор, но и предпросмотр записи на фронтенде.

Если после изменения фильтра в админке всё ещё видны старые данные, проблема может быть не в CyrtoLat, а в кэше браузера, плагине кэширования или серверном кэше. В таком случае сначала сбросьте кэш, а уже потом ищите ошибку в коде.

Частые ошибки и как их исправить

Фильтр добавили в родительскую тему

Если код лежит в functions.php родительской темы, он может исчезнуть после обновления. Для таких правок лучше использовать дочернюю тему или mu-plugin. Для настройки, завязанной на поведение плагина, mu-plugin обычно надёжнее.

Проверяют только роль, но не контекст

Иногда автоподмена должна быть отключена только в админке, а на фронтенде — нет. Если не добавить is_admin() или аналогичную проверку контекста, вы случайно отключите нужную обработку для публичной части сайта.

Смешивают роли и capability

На сайтах с кастомными ролями название роли может ничего не говорить о реальных правах. Если у вас есть роль content_manager, но она наследует права редактора, проверка по имени роли может дать неверный результат. В таких случаях лучше ориентироваться на capability, например edit_posts или edit_pages.

Не учитывают кэш

Если страница кэшируется, вы можете менять логику фильтра и не видеть эффекта. Это не баг CyrtoLat, а обычная проблема кэширования. После правок всегда проверяйте страницу в режиме без кэша или после его очистки.

Практические советы по безопасности и поддержке

Не вставляйте такой код напрямую в произвольный файл темы на боевом сайте без резервной копии. Если фильтр написан с ошибкой, можно получить белый экран в админке. Безопаснее сначала проверить код на staging-копии и только потом переносить в продакшен.

Для поддержки команды полезно оставить короткий комментарий рядом с фильтром: кто и зачем исключён, в какой роли это проверять и что делать, если список ролей изменится. Через пару месяцев это экономит время лучше любой «памятки» в чате.

Если на сайте уже используются другие инструменты для чистки дублей и SEO-оптимизации, например Clearfy Pro, не смешивайте их логику с CyrtoLat в одном месте без необходимости. Сначала добейтесь предсказуемого поведения автоподмены, а потом уже смотрите, нет ли пересечений с другими фильтрами контента.

В итоге рабочая схема простая: определяете, кому именно мешает автоподмена, ограничиваете обработку по роли или capability, проверяете результат под разными учётками и только потом закрываете задачу. Для таких точечных правок CyrtoLat удобнее всего использовать именно как инструмент с управляемым поведением, а не как «всё или ничего».

Добавь в закладки и поделись с друзьями:

⭐⭐⭐⭐⭐
Как в CyrtoLat убрать дубли из meta title и description после автоподмены slugов
04.09.2026
Как в CyrtoLat проверить и убрать дубли slug после миграции с кириллицы на латиницу
26.08.2026
Как в CyrtoLat отключить автоподмену в админке и редакторе для отдельных пользователей
18.09.2026
Как в CyrtoLat отключить автоподмену в тексте для конкретной роли пользователя
14.09.2026
Как в CyrtoLat проверить и отладить автоподмену слов в slug после массового импорта
26.08.2026
×

AI-плагин

WPGPT
Сам создает статьи для вашего сайта WordPress

SEO и мета-теги

Парсинг конкурентов

Изображения

Комментарии

Подробнее