wpgenerate.ru wordpress wpgenerate.ru

Как отключить emoji в WordPress без поломки редактора и кэша

В WordPress emoji-поддержка включена по умолчанию и тянет за собой отдельные скрипты и стили. На небольшом сайте это редко заметно, но на проектах с жёсткой оптимизацией фронтенда лишние запросы и код в <head> обычно только мешают. Если задача — убрать именно технический оверхед, а не запретить пользователям ставить смайлы в контент, это можно сделать безопасно.

Ниже — рабочий сценарий: сначала быстро диагностируем, что именно грузится, потом отключаем emoji через код или плагин, а затем проверяем, что ничего не сломалось в редакторе и в кэше.

Что именно грузит WordPress и почему это мешает

По умолчанию WordPress добавляет поддержку emoji через набор хуков. На фронтенде это обычно выражается в подключении скрипта wp-emoji-release.min.js и связанных inline-обработчиков. На части сайтов это не критично, но если вы уже вычищаете лишние запросы, отключаете эмодзи — нормальный шаг в той же логике, что и удаление неиспользуемых эмбедов или лишних мета-тегов.

Важно понимать: отключение emoji не удаляет символы из контента. Пользователь по-прежнему может вставить Unicode-эмодзи, а браузер отрисует их как обычные символы, если шрифт это поддерживает. Речь только о старом механизме подмены и совместимости.

Диагностика проблемы: как понять, что emoji реально грузятся

Перед изменениями проверьте страницу в браузере и исходный код. Откройте DevTools, вкладку Network, и отфильтруйте по emoji. Если на странице есть запрос к wp-emoji-release.min.js, значит механизм активен. Ещё один быстрый способ — посмотреть HTML-код страницы и найти упоминание emoji или wp-emoji-release.min.js.

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

Что проверить до правки

  • Открывается ли фронтенд без ошибок в консоли браузера.
  • Есть ли в исходнике wp-emoji-release.min.js.
  • Не используется ли на сайте кастомный JS, который зависит от старых emoji-обработчиков.
  • Есть ли кэш страницы, CDN или серверный кэш, который может скрыть изменения.

Пошаговое решение: отключаем emoji через код

Самый предсказуемый вариант — добавить код в functions.php дочерней темы или в собственный мини-плагин. Для продакшена мини-плагин даже удобнее: он не зависит от смены темы.

Ниже код, который снимает стандартные действия WordPress, связанные с emoji, и не трогает сам контент:

add_action( 'init', function () {
    remove_action( 'wp_head', 'print_emoji_detection_script', 7 );
    remove_action( 'admin_print_scripts', 'print_emoji_detection_script' );
    remove_action( 'wp_print_styles', 'print_emoji_styles' );
    remove_action( 'admin_print_styles', 'print_emoji_styles' );
    remove_filter( 'the_content_feed', 'wp_staticize_emoji' );
    remove_filter( 'comment_text_rss', 'wp_staticize_emoji' );
    remove_filter( 'wp_mail', 'wp_staticize_emoji_for_email' );
    remove_filter( 'the_content', 'wp_staticize_emoji' );
    remove_filter( 'comment_text', 'wp_staticize_emoji' );
} );

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

Если нужен более аккуратный вариант для мини-плагина

Когда вы не хотите править тему, создайте простой плагин в wp-content/plugins/disable-emoji/disable-emoji.php и активируйте его. Так проще откатить изменения, если на сайте появится зависимость от старого поведения.

<?php
/**
 * Plugin Name: Disable Emoji Support
 */

add_action( 'init', function () {
    remove_action( 'wp_head', 'print_emoji_detection_script', 7 );
    remove_action( 'admin_print_scripts', 'print_emoji_detection_script' );
    remove_action( 'wp_print_styles', 'print_emoji_styles' );
    remove_action( 'admin_print_styles', 'print_emoji_styles' );
    remove_filter( 'the_content_feed', 'wp_staticize_emoji' );
    remove_filter( 'comment_text_rss', 'wp_staticize_emoji' );
    remove_filter( 'wp_mail', 'wp_staticize_emoji_for_email' );
    remove_filter( 'the_content', 'wp_staticize_emoji' );
    remove_filter( 'comment_text', 'wp_staticize_emoji' );
} );

Если у вас есть доступ к WP-CLI и вы ведёте изменения через репозиторий, такой мини-плагин удобнее, чем разбрасывать код по теме.

Альтернатива через плагин: когда код лучше не трогать

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

Из практики удобнее, когда отключение emoji идёт вместе с другими техническими чистками: удалением лишних скриптов, мета-тегов и дублей. Если вы уже используете Clearfy Pro, имеет смысл проверить его настройки оптимизации и отключать только то, что реально не нужно. У продукта есть отдельная страница: https://wpshop.ru/plugins/clearfy.

ПодходПлюсыМинусы
Код в теме или мини-плагинеПолный контроль, без лишних зависимостейНужно не забыть про обновления и деплой
Плагин оптимизацииБыстро включить и откатить, удобно для редакторовЕщё один плагин в системе
Не трогать ничегоНоль риска для текущей конфигурацииЛишний технический оверхед остаётся

Как проверить, что решение сработало

После внедрения не ограничивайтесь визуальной проверкой. Сначала очистите весь кэш: плагин, сервер, CDN, браузер. Затем откройте главную страницу и любую внутреннюю страницу в режиме инкогнито.

Проверка должна быть конкретной:

  • в исходном коде страницы больше нет wp-emoji-release.min.js;
  • в Network нет запроса на emoji-скрипт;
  • в консоли браузера нет новых ошибок после загрузки страницы;
  • в админке редактор записей открывается без визуальных артефактов;
  • в письмах WordPress не появились странные символы вместо эмодзи, если вы используете их в шаблонах.

Если у вас есть автоматизированная проверка фронтенда, можно добавить простой контроль по HTML. Например, через curl и grep:

curl -s https://example.com/ | grep -i emoji

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

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

Удалили не те хуки и сломали админку

Иногда пытаются отключить emoji слишком агрессивно и заодно задевают другие фильтры. Если после правки в админке появились ошибки, откатите изменения и проверьте, что вы убрали только стандартные emoji-хуки, а не общий вывод скриптов в wp_head.

Проверили без очистки кэша

Это самая частая причина ложного вывода. Страница может продолжать отдавать старый HTML из кэша, и кажется, что код не работает. Сначала очищайте кэш плагина, потом серверный кэш, потом CDN.

Отключили emoji в теме, а потом сменили тему

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

Пытались убрать emoji через обрезку HTML

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

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

Отключение emoji само по себе не делает сайт быстрее радикально, но это хороший элемент общей технической чистки. Если вы уже оптимизируете фронтенд, держите изменения небольшими и проверяемыми. Не складывайте в один коммит отключение emoji, удаление jQuery Migrate и переписывание шаблонов — потом будет сложно понять, что именно сломало страницу.

Для безопасной работы:

  • вносите правки через дочернюю тему, мини-плагин или mu-plugin;
  • храните изменения в git, а не только в админке;
  • после правки проверяйте не только главную, но и запись, архив, страницу поиска и админку;
  • если используете CDN, убедитесь, что он не отдаёт старую версию HTML;
  • не отключайте emoji «на всякий случай» на сайтах, где контент активно редактируют через старые интеграции или почтовые шаблоны.

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

×
Прокачай свой сайт WordPress!

WordPress

-20% на премиум темы и плагины

Создай сайт своей мечты ⋙