На небольших и средних сайтах WordPress лишние подключения в <head> часто остаются незаметными: emoji-скрипты, oEmbed-эндпоинты, автоподгрузка embed-кода. По отдельности это не катастрофа, но на практике они добавляют запросы, усложняют отладку и иногда мешают строгой оптимизации фронтенда.
Задача здесь не в том, чтобы «вырезать всё подряд», а в том, чтобы убрать именно то, что вам не нужно: emoji-обработку, REST-эндпоинт для oEmbed, discovery-ссылки и автоконвертацию ссылок в embed. При этом важно не сломать редактор, если контент реально использует вставки из YouTube, ВК или других источников.
Когда это вообще имеет смысл отключать
Сначала посмотрите, есть ли у вас реальная зависимость от этих функций. Если сайт не использует встроенные медиа-вставки из внешних источников, а контент публикуется обычным текстом и изображениями, отключение oEmbed обычно безопасно. Emoji тоже часто можно убрать без последствий, если аудитория не зависит от старых браузеров и вы не используете эмодзи как часть контента в критичных местах.
Что обычно видно в исходном коде
Проверьте страницу в браузере и найдите такие признаки:
wp-emoji-release.min.jsв подключениях;wp-embed.min.jsвнизу страницы;- ссылки вида
<link rel="https://api.w.org/"и<link rel="alternate" type="application/json+oembed"; - автоматически превращённые ссылки на YouTube/соцсети в iframe без вашего явного кода.
Диагностика: что именно отключать
Не смешивайте все оптимизации в одну правку. Emoji и oEmbed решают разные задачи. Emoji — это в основном фронтенд-скрипт и стили для совместимости. oEmbed — механизм автоподстановки внешнего контента и discovery-метаданных. Если отключить всё сразу и потом искать причину сломанного блока в редакторе, отладка станет лишней.
Самый практичный подход — сначала проверить, используются ли на сайте:
- вставки внешних видео и постов через обычную ссылку;
- блоки Embed в редакторе Gutenberg;
- старые виджеты или плагины, которые рассчитывают на oEmbed;
- эмодзи в заголовках, кнопках, комментариях или пользовательском контенте.
Если oEmbed нужен только для нескольких страниц, лучше не отключать его глобально, а заменить конкретные вставки на обычный HTML-код iframe или специализированный блок плагина.
Пошаговое решение через код
Надёжнее всего делать это в дочерней теме или через небольшой mu-plugin. Так вы не потеряете изменения при обновлении темы. Ниже пример, который убирает emoji-скрипты и отключает oEmbed на фронтенде.
<?php
/**
* Plugin Name: WP Lite Optimizations
*/
if ( ! defined( 'ABSPATH' ) ) {
exit;
}
// Отключаем emoji.
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' );
// Отключаем oEmbed на фронтенде.
add_action( 'init', function () {
wp_deregister_script( 'wp-embed' );
}, 20 );
remove_action( 'wp_head', 'wp_oembed_add_discovery_links' );
remove_action( 'wp_head', 'wp_oembed_add_host_js' );
add_filter( 'embed_oembed_discover', '__return_false' );
add_filter( 'oembed_response_data', '__return_false' );
Если вы не хотите создавать отдельный плагин, эти же вызовы можно добавить в functions.php дочерней темы. Но для технических правок отдельный mu-plugin удобнее: он не зависит от темы и проще для сопровождения.
Если нужен более мягкий вариант
Иногда достаточно убрать только emoji, а oEmbed оставить. Это разумно, если редакторы часто вставляют внешние ссылки и вы не хотите менять рабочий процесс. Тогда оставьте только блок с remove_action и фильтрами для emoji.
Если нужен интерфейс без ручного кода, можно посмотреть на Clearfy Pro: у него есть набор настроек для чистки WordPress и отключения лишних функций. Это не заменяет понимание, что именно вы выключаете, но экономит время на рутинных правках: Clearfy Pro.
Сравнение подходов
| Подход | Что удобно | Минус |
|---|---|---|
| Код в дочерней теме | Полный контроль, без лишних зависимостей | Нужно следить за обновлениями и переносом правок |
| mu-plugin | Не зависит от темы, легко отключить | Нужно один раз правильно создать файл |
| Плагин для оптимизации | Быстро включить через интерфейс | Может отключать больше, чем нужно |
Как проверить, что решение сработало
Проверка должна быть не визуальной, а технической. Откройте страницу в режиме инкогнито и посмотрите исходный код. После правки не должно быть:
wp-emoji-release.min.js;wp-embed.min.js;- oEmbed discovery-ссылок в
<head>; - автоподключённых emoji-стилей.
Дальше проверьте редактор Gutenberg. Создайте черновик, вставьте обычную ссылку на YouTube или другой внешний ресурс и убедитесь, что нужный блок вставляется так, как вы ожидаете. Если на сайте используются embed-блоки, протестируйте именно их, а не только главную страницу.
Дополнительно можно открыть DevTools → Network и обновить страницу. В списке запросов не должно быть лишних загрузок, связанных с emoji или wp-embed. Это особенно полезно, если вы оптимизируете сайт под строгий бюджет запросов.
Частые ошибки и как их исправить
Отключили oEmbed, а редактор перестал вставлять видео
Значит, на сайте реально использовались embed-блоки или автоконвертация ссылок. Решение простое: либо вернуть oEmbed, либо заменить проблемные вставки на явный iframe-код. Для контента, который часто редактируют разные люди, лучше заранее зафиксировать формат вставки в редакционной инструкции.
Удалили код в теме, а после обновления всё вернулось
Это типичная ошибка, если правка была внесена в родительскую тему. Перенесите код в дочернюю тему или mu-plugin. Для технических отключений это надёжнее и чище.
Сломали стили в админке
Так бывает, если удалили не только фронтенд-emoji, но и административные стили без проверки. Не трогайте лишние хуки, если не уверены, что они не нужны в панели управления. Сначала отключайте только фронтенд-часть, потом тестируйте админку отдельно.
Отключили всё ради скорости, но не измерили эффект
Emoji и oEmbed — не главный источник медлительности на большинстве сайтов. Если у вас тяжёлые изображения, неэффективный кеш или перегруженная тема, эффект от этой правки будет ограниченным. Сначала проверьте базовые узкие места: размер страниц, количество запросов, работу кеша и критические скрипты.
Практические советы по безопасности и производительности
Если вы вносите такие изменения на живом сайте, делайте это через staging-копию или хотя бы на отдельной тестовой странице. После правки очистите кеш плагина, серверный кеш и CDN, если он есть. Иначе вы можете проверить старую версию страницы и сделать неверный вывод.
Для сайтов с несколькими редакторами полезно зафиксировать правило: если нужен внешний медиа-объект, вставляем его либо через готовый блок, либо через проверенный HTML-код. Это снижает риск случайных поломок после отключения oEmbed.
Если вы используете дополнительные плагины для чистки WordPress, не включайте сразу все опции подряд. Сначала отключите emoji и oEmbed, затем отдельно проверьте, не конфликтуют ли с ними настройки минификации, defer и удаления лишних скриптов.
В итоге эта настройка полезна не сама по себе, а как часть аккуратной технической чистки сайта: меньше лишнего кода в <head>, меньше фоновых подключений и меньше сюрпризов при отладке.