Если на сайте WordPress не используются встроенные emoji-иконки, их можно отключить и убрать лишние подключения скрипта и стилей. Это не даст «магического ускорения», но на проектах с аккуратной технической оптимизацией такие мелкие запросы лучше вычищать осознанно: меньше мусора в <head>, меньше поводов для конфликтов с кешированием и минификацией.
Ниже — рабочий способ без плагинов, с проверкой результата и типичными ошибками, из-за которых emoji потом «возвращаются» после обновления темы или плагина.
Когда отключение emoji действительно уместно
Сценарий простой: сайт работает на русском языке, встроенные emoji WordPress не нужны, а в исходном коде страницы видны подключения wp-emoji-release.min.js и inline-скрипт с проверкой поддержки emoji. Если вы ведёте корпоративный сайт, блог или документацию, эти элементы обычно не несут пользы.
Важно понимать границу: речь не о запрете emoji как символов в контенте. Пользователи по-прежнему смогут вставлять обычные Unicode-символы, если они поддерживаются шрифтами и браузером. Мы отключаем только старую служебную обвязку WordPress для совместимости с очень старыми браузерами.
Что именно убирается
- подключение скрипта
wp-emoji-release.min.js; - инлайн-скрипт, который добавляет классы в
<html>; - фильтр на загрузку emoji в админке и на фронтенде;
- лишние запросы, которые появляются только ради этой совместимости.
Диагностика: как понять, что emoji реально грузятся
Перед правкой проверьте исходный код страницы и сетевые запросы. Это быстрее, чем гадать по ощущениям.
- Откройте любую публичную страницу сайта.
- Посмотрите исходный код через «Просмотр кода страницы».
- Найдите
wp-emoji-release.min.jsилиemojiв<head>. - Откройте DevTools → Network и обновите страницу.
- Проверьте, есть ли запрос к
/wp-includes/js/wp-emoji-release.min.js.
Если скрипт есть, а вы его не подключали вручную, значит он добавляется ядром WordPress через стандартные хуки.
Пошаговое решение без плагинов
Самый надёжный вариант — добавить код в functions.php дочерней темы или в собственный мини-плагин. Для боевого сайта мини-плагин предпочтительнее: он не зависит от смены темы.
Вариант через functions.php
<?php
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' );
} );Этот код отключает emoji-обвязку и в админке, и на фронтенде. Если вы хотите оставить админку нетронутой, можно убрать только фронтенд-часть, но на практике это редко нужно.
Вариант через мини-плагин
Если тема часто меняется или сайт обслуживает несколько разработчиков, лучше вынести отключение в отдельный плагин. Так настройка не пропадёт после обновления шаблона.
<?php
/**
* Plugin Name: Disable WP Emoji
* Description: Отключает emoji-скрипты и стили WordPress.
* Version: 1.0.0
*/
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' );
} );Файл можно положить в wp-content/plugins/disable-wp-emoji/disable-wp-emoji.php и активировать как обычный плагин.
Сравнение подходов: код, плагин, ничего не делать
| Подход | Плюсы | Минусы | Когда выбирать |
|---|---|---|---|
| Код в теме | Быстро, без лишних зависимостей | Слетит при смене темы | Если у вас одна стабильная дочерняя тема |
| Мини-плагин | Не зависит от темы, легко переносить | Нужно хранить отдельный файл | Для рабочих проектов и агентской поддержки |
| Ничего не делать | Ноль риска сломать что-то руками | Лишний служебный код остаётся | Если сайт часто меняют неразработчики и оптимизация не приоритет |
Проверка результата после внедрения
После добавления кода не ограничивайтесь визуальной проверкой. Нужна проверка в исходнике и в сети.
- Откройте страницу и убедитесь, что в
<head>больше нетprint_emoji_detection_script. - В Network проверьте отсутствие запроса к
wp-emoji-release.min.js. - Откройте админку и редактор записей: интерфейс должен работать как раньше.
- Проверьте RSS-ленту и письмо из формы, если на сайте есть такие сценарии.
Если вы используете кеш-плагин или серверный кеш, очистите его после правки. Иначе вы можете смотреть на старую версию страницы и думать, что код не сработал.
Частые ошибки и как их исправить
Код добавили в родительскую тему
При обновлении темы правка исчезнет. Перенесите код в дочернюю тему или в мини-плагин.
Отключили только часть хуков
Иногда убирают только wp_head, а стили остаются в админке или в RSS. Если цель — полное отключение, используйте весь набор remove_action и remove_filter.
Проверяют не ту страницу
На главной может быть кешированная версия, а на внутренней — уже новая. Сравнивайте несколько страниц и обязательно очищайте кеш.
Путают emoji WordPress и emoji в контенте
Отключение служебного скрипта не запрещает вставку Unicode-символов. Если в тексте отображаются квадраты вместо emoji, проблема обычно в шрифтах темы, а не в этом коде.
Что ещё стоит проверить вместе с этой правкой
Если вы чистите сайт от лишних служебных подключений, имеет смысл посмотреть и на другие стандартные элементы WordPress, которые не нужны конкретному проекту: oEmbed, XML-RPC, лишние версии скриптов, дублирующиеся стили темы и плагинов. Но отключать всё подряд не стоит — сначала фиксируйте, что именно реально используется.
Для сайтов, где нужна более широкая техническая чистка без ручного ковыряния кода, иногда удобнее использовать инструменты вроде Clearfy Pro от WPShop: в нём есть блоки для отключения части служебных функций и удаления дублей. Если решите смотреть в эту сторону, проверяйте конкретные настройки и не включайте всё подряд без теста на staging.
После внедрения сохраните код в репозитории или хотя бы в заметке проекта. Такие мелкие оптимизации часто забывают, а потом не понимают, почему на одном окружении запрос есть, а на другом нет.