Emoji в WordPress сами по себе не проблема, но на старых или нагруженных проектах они добавляют лишние подключения скриптов и стилей, которые часто не нужны. Обычно это заметно на сайтах, где контент пишут без смайлов, а тема и плагины всё равно тянут поддержку emoji в <head> и в админке.
Если задача простая — убрать этот функционал без побочных эффектов — лучше отключать его точечно, а не править ядро или удалять файлы вручную. Ниже разберём, как понять, что emoji действительно лишние, как отключить их безопасно и как проверить результат.
Когда отключение Emoji действительно имеет смысл
Отключать emoji стоит не ради «чистоты кода», а когда есть конкретная причина. На практике это полезно, если:
- сайт работает на слабом хостинге и вы хотите убрать лишние HTTP-запросы;
- в теме и контенте emoji не используются вообще;
- нужно сократить количество подключаемых скриптов в
<head>и в админке; - вы оптимизируете сайт после аудита PageSpeed или просто чистите фронтенд от необязательных зависимостей.
Важно понимать: речь не о «тяжёлой» нагрузке, а о небольшом, но лишнем функционале. На одном сайте это почти незаметно, на другом — часть общей зачистки, которая помогает убрать мусор из шаблона и ускорить рендер.
Диагностика: как понять, что emoji подключаются
Проверка занимает пару минут. Откройте исходный код страницы и найдите строки, связанные с emoji. Обычно WordPress добавляет inline-скрипт и подключение wp-emoji-release.min.js. Если сайт использует стандартное поведение ядра, вы увидите что-то похожее на это:
<script type="text/javascript">
window._wpemojiSettings = { ... };
</script>
<script src="https://example.com/wp-includes/js/wp-emoji-release.min.js?ver=6.x" type="text/javascript"></script>Ещё один способ — открыть DevTools и посмотреть вкладку Network. Если на странице есть запрос к wp-emoji-release.min.js, значит поддержка emoji активна. На практике это чаще всего видно и без инструментов: достаточно просмотреть <head> или воспользоваться поиском по исходнику страницы.
Что именно отключаем
WordPress не просто показывает emoji в редакторе. Он подключает набор фильтров и скриптов, которые отвечают за совместимость старых браузеров и замену символов. Если вы отключаете emoji, важно убрать именно эти подключения, а не пытаться удалить файл из ядра. Иначе после обновления WordPress всё вернётся обратно или сайт начнёт вести себя непредсказуемо.
Пошаговое решение через код
Самый надёжный вариант — добавить код в functions.php дочерней темы или в собственный мини-плагин. Для продакшена мини-плагин даже удобнее: он не зависит от темы и не пропадёт при смене шаблона.
Ниже рабочий набор для отключения emoji на фронтенде и в админке:
<?php
/**
* Disable WordPress emoji support.
*/
function wpall_disable_emojis() {
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' );
}
add_action( 'init', 'wpall_disable_emojis' );Этот код убирает стандартные подключения WordPress, не трогая редактор и не ломая сохранение контента. Если в тексте уже есть emoji, они останутся в базе и на странице будут отображаться как обычные символы, если браузер их поддерживает.
Если нужен вариант через мини-плагин
Когда править тему неудобно, создайте простой плагин. Это особенно полезно на проектах, где технические правки должны жить отдельно от дизайна.
<?php
/**
* Plugin Name: Disable Emoji Support
* Description: Removes WordPress emoji scripts and styles.
* Version: 1.0.0
*/
if ( ! defined( 'ABSPATH' ) ) {
exit;
}
function wpall_disable_emojis() {
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' );
}
add_action( 'init', 'wpall_disable_emojis' );Такой плагин можно положить в wp-content/plugins/disable-emoji-support/disable-emoji-support.php и активировать из админки. Для небольших сайтов это часто удобнее, чем держать код в теме.
Сравнение подходов: код, плагин или ничего не делать
| Подход | Когда подходит | Плюсы | Минусы |
|---|---|---|---|
| Код в дочерней теме | Если тема уже под контролем разработчика | Быстро, без лишних зависимостей | Привязан к теме |
| Мини-плагин | Если нужно отделить технастройки от дизайна | Не зависит от темы, легко переносится | Нужно хранить и обновлять отдельный файл |
| Ничего не делать | Если emoji реально используются в контенте и админке | Ноль риска для совместимости | Лишние скрипты остаются |
Если проект уже оброс техническими правками, мини-плагин обычно практичнее. Если вы ведёте один сайт и у вас есть дочерняя тема, код в functions.php тоже нормальный вариант.
Проверка результата после внедрения
После добавления кода не ограничивайтесь визуальной проверкой. Нужно убедиться, что WordPress действительно перестал выводить emoji-скрипты.
- Откройте главную страницу сайта в режиме инкогнито.
- Посмотрите исходный код и найдите
wp-emoji-release.min.js. - Проверьте, что в
<head>больше нет inline-блокаwindow._wpemojiSettings. - Откройте админку и убедитесь, что редактор и форма комментариев работают как раньше.
- Если используете кэш-плагин или серверный кэш, очистите его и повторите проверку.
Если у вас есть Lighthouse или PageSpeed Insights, можно сравнить отчёт до и после. Не ждите большого скачка метрик: здесь важнее факт удаления лишнего ресурса и уменьшение количества запросов.
Частые ошибки и как их исправить
Код добавили не туда
Если вставить фрагмент в файл с синтаксической ошибкой или в неподходящее место, сайт может уйти в белый экран. Безопаснее сначала добавить код в дочернюю тему или мини-плагин и проверить на staging-копии.
Отключили emoji, но скрипт остался
Так бывает, если код подключён слишком поздно или тема уже вывела часть логики раньше. В таком случае проверьте, что функция висит на init, а не на более позднем хуке, и что кэш не отдаёт старую версию страницы.
Сломали отображение emoji в письмах
Если вы используете emoji в письмах уведомлений, не убирайте фильтр wp_staticize_emoji_for_email без понимания последствий. Для большинства проектов это не критично, но если в шаблонах писем emoji нужны, лучше оставить email-часть как есть и отключить только фронтенд.
Проверяли только в браузере, но не очистили кэш
Это типичная причина ложных выводов. После правки кода обязательно очищайте:
- кэш плагина;
- серверный кэш, если он есть;
- CDN-кэш;
- кэш браузера при ручной проверке.
Практические советы по безопасности и производительности
Если вы регулярно делаете такие технические правки, не редактируйте основной functions.php без резервной копии. Для небольших оптимизаций удобнее держать отдельный файл с набором отключаемых функций или использовать мини-плагин. Так проще откатить изменения и не смешивать их с логикой темы.
На проектах, где нужно системно убирать лишние элементы WordPress, имеет смысл собрать техническую чистку в одном месте: отключение emoji, эмодзи в RSS и письмах, ненужные мета-теги, лишние embed-скрипты. Если вы используете Clearfy Pro, часть таких задач можно закрыть через интерфейс без ручного кода, но кодовый вариант всё равно полезно держать под рукой для точечных правок.
И ещё один практический момент: не отключайте то, что не проверили на своём контенте. Если в текстах, комментариях или письмах реально используются emoji, сначала протестируйте отображение на staging-версии. В WordPress такие изменения обычно безопасны, но лучше проверить сценарий, чем потом искать, почему в письмах или комментариях пропали символы.