Как отключить emoji и убрать лишние скрипты WordPress

WordPress по умолчанию добавляет на страницы код для поддержки emoji: небольшой JavaScript, стили и проверки совместимости. На современном сайте это часто не нужно. Отключить эти подключения можно без удаления самих символов emoji из записей и комментариев. Отдельно можно убрать скрипт wp-embed, если вы не используете встраивание публикаций WordPress. Удалять остальные скрипты наугад не стоит: их могут использовать тема и плагины.

Отключаем поддержку emoji в WordPress

Добавьте код ниже в functions.php дочерней темы или в собственный небольшой плагин. Если вставить его в файл родительской темы, изменения могут пропасть после обновления. Код отключает вывод скрипта и стилей emoji на сайте и в панели администратора, обработку emoji в RSS и письмах, а также кнопку emoji в редакторе TinyMCE.

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_filter( 'tiny_mce_plugins', 'site_disable_emojis_tinymce' );

function site_disable_emojis_tinymce( $plugins ) {
    if ( ! is_array( $plugins ) ) {
        return $plugins;
    }

    return array_diff( $plugins, array( 'wpemoji' ) );
}

Функция site_disable_emojis_tinymce() удаляет компонент wpemoji из списка плагинов классического редактора. Префикс site_ в имени функции снижает вероятность конфликта с функциями темы или другого плагина. Если такой функции с тем же именем на сайте уже нет, код можно использовать как есть.

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

Нужно ли отключать wp-embed

Скрипт wp-embed относится к механизму встраивания публикаций WordPress на другие сайты. Если такая функция вам не нужна, подключение можно убрать на фронтенде. Добавьте отдельный фрагмент кода в то же место:

function site_remove_wp_embed_script() {
    wp_dequeue_script( 'wp-embed' );
    wp_deregister_script( 'wp-embed' );
}
add_action( 'wp_enqueue_scripts', 'site_remove_wp_embed_script', 100 );

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

Как определить, какие подключения действительно лишние

Вкладка «Сеть» в инструментах разработчика браузера показывает загружаемые файлы, но по имени файла не всегда понятно, кто их подключил и зачем. Сначала откройте страницу без входа в админ-панель и перезагрузите её с отключённым кэшем. Найдите запросы к файлам emoji или wp-embed.min.js, затем проверьте их на нескольких типах страниц: главной, записи, странице с формой и других важных шаблонах.

Чтобы понять, откуда берётся подключение, ищите его идентификатор или имя файла в настройках темы и плагинов, а также в исходном HTML страницы. Скрипты WordPress и расширений обычно добавляются через механизм очереди, поэтому отключать конкретное подключение следует по его handle — идентификатору, переданному в wp_enqueue_script(). Для стилей используется wp_enqueue_style(). Если нужно снять найденный скрипт с очереди, применяют wp_dequeue_script(), а для стиля — wp_dequeue_style(). Удалять регистрацию через wp_deregister_script() без необходимости обычно не требуется.

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

Как проверить результат и избежать ошибок

После изменения кода очистите кэш плагина, сервера и CDN, если они используются. Затем откройте сайт в приватном окне и повторите проверку в инструментах разработчика. Убедитесь, что запросы emoji исчезли, а в консоли браузера нет новых ошибок JavaScript. Проверьте не только внешний вид главной страницы, но и редактор, RSS-ленту, отправку писем и важные интерактивные элементы.

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

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

⭐⭐⭐⭐⭐