Emoji в WordPress сами по себе не проблема, но на небольших проектах они часто оказываются лишними: подключают дополнительный скрипт и стиль, засоряют фронтенд, а иногда мешают чистой технической оптимизации. Если сайт работает на русском контенте и вы не используете emoji как часть интерфейса, их можно отключить без риска для основного функционала.
Ниже — рабочий сценарий: сначала быстро диагностируем, откуда именно грузятся emoji, потом убираем их через код, а затем проверяем, что отключение не задело редактор, комментарии и админку.
Что именно отключаем и где это видно
В WordPress emoji обычно подключаются через набор стандартных хуков и фильтров. На фронтенде это проявляется как лишний JavaScript и иногда inline-обвязка, которая добавляется в <head>. В админке часть логики может оставаться, если вы редактируете записи или работаете с комментариями.
Проверять нужно не «на глаз», а по факту в исходном коде страницы и в DevTools. Иначе легко убрать один источник, но оставить другой — например, через плагин оптимизации или тему.
Быстрая диагностика в браузере
Откройте любую публичную страницу сайта и посмотрите исходный код. Ищите упоминания wp-emoji-release.min.js, а также inline-скрипт, который связан с проверкой поддержки emoji. Если они есть, значит отключение ещё не настроено или его перебивает тема/плагин.
Дополнительно проверьте вкладку Network: после загрузки страницы не должно быть отдельного запроса к wp-emoji-release.min.js. Если он есть, значит фронтенд всё ещё тянет emoji-скрипт.
Как отключить emoji через код
Самый предсказуемый способ — добавить небольшой код в дочернюю тему или в собственный mu-plugin. Для рабочих сайтов я предпочитаю mu-plugin: он не зависит от активной темы и не теряется при обновлении.
Создайте файл, например wp-content/mu-plugins/disable-emojis.php, и вставьте туда такой код:
<?php
/**
* Plugin Name: Disable Emojis
*/
if ( ! defined( 'ABSPATH' ) ) {
exit;
}
function wplearn_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_filter( 'tiny_mce_plugins', 'wplearn_disable_emojis_tinymce' );
}
add_action( 'init', 'wplearn_disable_emojis' );
function wplearn_disable_emojis_tinymce( $plugins ) {
if ( ! is_array( $plugins ) ) {
return array();
}
return array_diff( $plugins, array( 'wpemoji' ) );
}Этот вариант убирает стандартные подключения emoji из фронтенда, админки, RSS и email-обработки. Для большинства сайтов этого достаточно.
Если нужен более мягкий вариант
Иногда не стоит трогать админку, особенно если редакторы активно работают в визуальном редакторе и вы не хотите менять поведение панели управления. Тогда можно убрать только фронтенд-часть:
<?php
add_action( 'init', function () {
remove_action( 'wp_head', 'print_emoji_detection_script', 7 );
remove_action( 'wp_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' );
} );Такой подход полезен, если вы хотите минимально вмешаться в админку и оставить там стандартное поведение WordPress.
Плагин, код или оптимизатор: что выбрать
Если задача точечная, код обычно надёжнее. Плагин удобен, когда вы не хотите поддерживать собственный сниппет. Но если у вас уже стоит плагин для технической чистки сайта, имеет смысл проверить, не умеет ли он отключать emoji без отдельного кода.
| Вариант | Плюсы | Минусы | Когда брать |
|---|---|---|---|
| Код в mu-plugin | Контроль, не зависит от темы | Нужно один раз аккуратно внедрить | Продакшен, где важна предсказуемость |
| Сниппет в functions.php | Быстро | Слетает при смене темы | Тестовый сайт или дочерняя тема |
| Плагин оптимизации | Без кода | Лишняя зависимость, не всегда прозрачно | Если уже используете такой плагин |
Если вам нужна комплексная чистка WordPress от лишних подключений, дублей и технического мусора, посмотрите Clearfy Pro. Но для одной задачи с emoji отдельный код обычно проще и прозрачнее.
Как проверить, что отключение сработало
Проверка должна быть в двух местах: на фронтенде и в админке. Иначе можно убрать emoji на сайте, но оставить их в редакторе, либо наоборот.
Что смотреть на фронтенде
- в исходном коде страницы нет
wp-emoji-release.min.js; - в
<head>не выводится emoji detection script; - в Network нет отдельного запроса к emoji-скрипту;
- при просмотре HTML не видно связанных inline-фрагментов.
Что смотреть в админке
Откройте редактор записи и убедитесь, что интерфейс не сломался. Если вы отключали emoji только на фронтенде, админка должна работать как раньше. Если вы убирали и админские подключения, проверьте визуальный редактор и экран комментариев.
Хорошая практическая проверка — открыть страницу в режиме инкогнито, затем сравнить HTML до и после через «Просмотр кода страницы» или через curl:
curl -s https://example.com/ | grep -i emojiЕсли команда ничего не возвращает, это ещё не абсолютное доказательство, но хороший быстрый индикатор. Для точной проверки лучше смотреть конкретно наличие wp-emoji-release.min.js и связанных хуков в HTML.
Частые ошибки и почему отключение не срабатывает
На практике проблемы обычно не в самом коде, а в том, где и как его добавили.
- Код вставили в активную тему. После обновления или смены темы отключение пропадает. Для такого сниппета лучше использовать mu-plugin.
- Добавили слишком поздно. Если remove_action вызывается после того, как нужный хук уже отработал, эффект будет нулевой. Поэтому код нужно вешать на
initили раньше, как в примере. - Плагин оптимизации снова подключает emoji. Некоторые плагины умеют «оптимизировать» стандартные скрипты по-своему. Тогда нужно проверить их настройки и исключения.
- Проверяли только главную страницу. На архиве, в записи и в админке поведение может отличаться. Смотрите несколько типов страниц.
- Отключили не тот участок. Иногда убирают только скрипт, но оставляют стили или фильтры для RSS и email. В результате часть логики продолжает жить.
Когда emoji лучше не трогать
Если сайт активно использует emoji в контенте, комментариях или email-уведомлениях, полное отключение может быть лишним. В таком случае лучше убрать только фронтенд-скрипт, а не ломать всю цепочку обработки.
Также не стоит отключать всё подряд на живом проекте без проверки шаблонов писем и RSS. WordPress может использовать emoji-обработку не только для визуального эффекта, но и для корректного отображения символов в отдельных каналах.
Практический чек-лист перед выкладкой
- проверить, где именно грузится emoji: фронтенд, админка, RSS, email;
- добавить код в mu-plugin или дочернюю тему;
- очистить кэш страницы и кэш плагина, если он есть;
- проверить исходный код страницы и Network;
- открыть редактор записи и убедиться, что админка не пострадала;
- сравнить поведение на нескольких типах страниц.
Если после отключения вы ещё и чистите сайт от лишних подключений, имеет смысл смотреть на задачу шире: emoji — это только один из мелких источников технического шума. На проектах с большим количеством плагинов такие мелочи накапливаются и потом мешают отладке, кешированию и аудиту фронтенда.