Встроенная поддержка emoji в WordPress редко нужна на обычном сайте, но скрипты и фильтры при этом продолжают грузиться на фронтенде и в админке. На небольшом проекте это не катастрофа, но в технически чистом сайте такие мелочи лучше убирать осознанно: меньше запросов, меньше лишнего JS, проще контроль над head и footer.
Ниже — рабочий сценарий: как отключить emoji в WordPress, где это действительно безопасно, как проверить результат и какие ошибки чаще всего ломают ожидания.
Когда отключение emoji действительно уместно
Сначала стоит понять, что именно вы убираете. WordPress добавляет поддержку emoji не только ради смайликов в тексте, но и ради совместимости со старыми браузерами и некоторыми сценариями отображения символов. На современных проектах это часто не нужно, особенно если:
- сайт работает на актуальной версии WordPress и современных браузерах;
- контент не зависит от старого JS-полифила для emoji;
- вы следите за количеством подключаемых скриптов;
- нужно убрать лишние теги из
<head>и сократить шум в HTML.
Если сайт обслуживает очень старые устройства или у вас есть специфическая тема/плагин, который явно рассчитывает на эти скрипты, отключать всё подряд не стоит. В таком случае сначала проверьте, где именно используется emoji-обвязка.
Диагностика: что именно подключает WordPress
Перед изменениями полезно посмотреть исходный код страницы и понять, есть ли там лишние подключения. Обычно речь идёт о скрипте wp-emoji-release.min.js и связанных фильтрах, которые добавляют inline-код в head и footer.
Что проверить вручную
- Откройте страницу сайта и посмотрите исходный код.
- Найдите
wp-emoji-release.min.js. - Проверьте, есть ли в
<head>inline-скрипт с настройками emoji. - Сравните фронтенд и админку: иногда отключение нужно только на сайте, а не в панели.
Если вы используете кэш-плагин или серверный кэш, после изменений обязательно очищайте кэш, иначе будете смотреть на старую версию страницы и делать ложные выводы.
Рабочее решение через functions.php или мини-плагин
Самый предсказуемый способ — убрать стандартные действия WordPress через remove_action() и фильтр emoji_svg_url. Это не выдуманный трюк, а стандартная практика для отключения встроенной emoji-обвязки.
Лучше не править functions.php родительской темы напрямую, если тема обновляется. Для постоянного решения безопаснее использовать мини-плагин или дочернюю тему.
Код для отключения emoji на фронтенде и в админке
<?php
/**
* Plugin Name: Disable WordPress Emoji
* Description: Отключает встроенную поддержку emoji в WordPress.
*/
if ( ! defined( 'ABSPATH' ) ) {
exit;
}
function wppuzzle_disable_wp_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( 'emoji_svg_url', '__return_false' );
}
add_action( 'init', 'wppuzzle_disable_wp_emojis' );Если вы хотите отключить emoji только на фронтенде, а в админке оставить всё как есть, уберите строки для admin_print_scripts и admin_print_styles. Это полезно, если редакторы контента привыкли к встроенной подсветке и вы не хотите менять их рабочую среду без необходимости.
Вариант через MU-plugin
Если решение должно переживать смену темы и не зависеть от активации обычного плагина, положите код в wp-content/mu-plugins/disable-emojis.php. MU-plugin загружается автоматически и подходит для таких системных правок.
<?php
if ( ! defined( 'ABSPATH' ) ) {
exit;
}
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' );
add_filter( 'emoji_svg_url', '__return_false' );
} );Плагин, код или ничего не делать: что выбрать
Если задача разовая и у вас нет доступа к коду, можно использовать оптимизационный плагин, который умеет отключать emoji вместе с другими мелкими улучшениями. Но для точечной задачи код обычно прозрачнее: вы точно знаете, что отключили и где это живёт.
| Подход | Плюсы | Минусы | Когда выбирать |
|---|---|---|---|
| Код в MU-plugin | Стабильно, не зависит от темы | Нужен доступ к файлам | Для продакшена и техподдержки |
| Код в functions.php | Быстро внедрить | Сломается при смене темы | Для теста или дочерней темы |
| Плагин оптимизации | Без кода | Может отключать лишнее вместе с emoji | Если уже используете такой плагин |
Если на сайте уже стоит плагин для технической чистки, например Clearfy Pro, проверьте, не включена ли там эта опция заранее. Дублировать одно и то же действие в плагине и в коде не нужно: это не ускорит сайт, а только усложнит диагностику.
Как проверить, что отключение сработало
Проверка должна быть не на глаз, а по конкретным признакам. После внедрения откройте страницу сайта в режиме просмотра исходника и убедитесь, что:
- нет
wp-emoji-release.min.js; - нет inline-скрипта emoji в
<head>; - нет связанных стилей emoji в исходнике;
- страница и админка открываются без ошибок в консоли браузера.
Дополнительно можно проверить консоль DevTools: если на странице были сторонние скрипты, которые неожиданно завязаны на emoji-обвязку, ошибка проявится сразу. Это редкий сценарий, но его лучше отловить до публикации на боевом сайте.
Мини-чек-лист после внедрения
- Очистить кэш плагина и серверный кэш.
- Обновить страницу в режиме инкогнито.
- Проверить исходный код и консоль.
- Открыть несколько типов страниц: главную, запись, архив, страницу с комментариями.
- Убедиться, что редактор в админке работает без визуальных артефактов.
Частые ошибки и как их исправить
Код добавили в тему, а эффекта нет
Чаще всего причина в том, что код вставили слишком поздно или не в тот файл. Для remove_action() важен момент выполнения. Если вы вызываете его не на init, WordPress может уже успеть повесить нужные функции. Перенесите код в обработчик init или используйте MU-plugin.
После отключения emoji пропали стили или появились предупреждения
Обычно это связано с тем, что вместе с emoji отключили что-то лишнее, либо в коде допущена синтаксическая ошибка. Проверьте файл на лишние символы, закрывающие теги PHP и конфликт с другим кодом в functions.php. Если ошибка появилась сразу после правки, откатите файл и перенесите решение в отдельный мини-плагин.
Сайт выглядит нормально, но в исходнике emoji-скрипт остался
Значит, вы смотрите кэшированную версию или отключили только часть связки. Очистите кэш и проверьте, что убраны и действия, и фильтр emoji_svg_url. Иногда плагин оптимизации снова добавляет свои правила поверх ваших.
Практические советы по безопасности и производительности
Если вы вносите такие системные правки, держите их отдельно от темы. Это проще сопровождать и безопаснее при обновлениях. Для продакшена удобнее хранить подобные отключения в MU-plugin или в небольшом собственном плагине, а не в шаблоне оформления.
Ещё один полезный момент: не отключайте всё подряд ради «чистого head». Сначала смотрите, что реально грузится, и только потом убирайте лишнее. В WordPress много мелких встроенных функций, которые кажутся ненужными, но иногда завязаны на совместимость конкретного проекта.
Если у вас на сайте много технических правок — отключение emoji, чистка дублей, управление мета-тегами, оптимизация head — имеет смысл собрать их в один аккуратный слой конфигурации, а не размазывать по теме. Так проще тестировать и откатывать изменения.