WordPress Notes WP24

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

oEmbed в WordPress удобен, пока не начинаешь смотреть на фронтенд и сетевые запросы. На большинстве сайтов он нужен только для автоподстановки превью чужих ссылок в редакторе и для встраивания контента по URL. Если вы не используете эту механику осознанно, WordPress всё равно может подключать лишний JavaScript и делать дополнительные обращения к REST API.

На практике это проявляется так: в исходном коде страницы появляется wp-embed.min.js, а в DevTools видно запросы к /wp-json/oembed/1.0/embed или /wp-json/oembed/1.0/proxy. Для небольших сайтов это не катастрофа, но на проектах, где важны чистый фронтенд и предсказуемая индексация, oEmbed часто проще отключить.

Когда oEmbed действительно мешает

Сначала стоит понять, что именно вы хотите убрать. Если задача только в том, чтобы не грузить скрипт на публичных страницах, достаточно снять фронтенд-обвязку. Если нужно ещё и запретить автоподстановку встроек в редакторе, потребуется отключить часть фильтров и REST-маршрутов. Это уже не косметика, а изменение поведения ядра.

Типичные симптомы

  • в HTML страниц есть подключение wp-embed.min.js;
  • в консоли сети видны запросы к oembed endpoint;
  • вставка URL в редакторе превращается в превью, хотя вам это не нужно;
  • на страницах с минимальным количеством контента лишние скрипты выглядят особенно заметно.

Если сайт использует только свои блоки, собственные видео-плееры или ручную верстку, oEmbed часто становится лишним слоем. Но если редакторы регулярно вставляют ссылки на YouTube, Vimeo, соцсети или сторонние сервисы, сначала проверьте, не сломаете ли вы рабочий процесс.

Диагностика: что именно подключает WordPress

Перед правкой кода откройте страницу в браузере и проверьте два места: список подключенных файлов и сетевые запросы. В исходнике ищите wp-embed.min.js. В DevTools на вкладке Network отфильтруйте запросы по слову oembed или wp-json. Если запросы идут только в админке, это отдельная история; если на фронтенде — можно убирать безопаснее.

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

Как отключить oEmbed в WordPress: рабочий вариант через functions.php

Самый предсказуемый способ — добавить код в дочернюю тему или в небольшой mu-plugin. Так вы не зависите от настроек стороннего плагина и можете точно контролировать, что отключается.

<?php
// Убираем фронтенд-скрипт oEmbed.
add_action( 'wp_enqueue_scripts', function () {
    wp_deregister_script( 'wp-embed' );
}, 100 );

// Отключаем автоконвертацию URL в embed в контенте.
remove_filter( 'the_content', array( $GLOBALS['wp_embed'], 'autoembed' ), 8 );
remove_filter( 'widget_text_content', array( $GLOBALS['wp_embed'], 'autoembed' ), 8 );

// Убираем oEmbed discovery links из <head>.
remove_action( 'wp_head', 'wp_oembed_add_discovery_links' );
remove_action( 'wp_head', 'wp_oembed_add_host_js' );

Этот набор закрывает основные точки: скрипт на фронтенде, автоподстановку в контенте и служебные ссылки в <head>. На большинстве сайтов этого достаточно, чтобы убрать лишний шум без побочных эффектов.

Если нужно отключить и REST-маршруты oEmbed

Когда цель — не просто убрать скрипт, а сократить поверхность API, можно отключить и REST-эндпоинты oEmbed. Делайте это только если уверены, что они не нужны редакторам и внешним интеграциям.

<?php
add_filter( 'rest_endpoints', function ( $endpoints ) {
    unset( $endpoints['/oembed/1.0/embed'] );
    unset( $endpoints['/oembed/1.0/proxy'] );
    return $endpoints;
} );

Этот фрагмент не ломает весь REST API, а убирает только маршруты, связанные с oEmbed. Это важное отличие: не стоит отключать REST целиком, если задача локальная.

Сравнение подходов: плагин, код или компромисс

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

ПодходПлюсыМинусыКогда выбирать
Плагин оптимизацииБыстро, без правки темыНе всегда убирает всё, может конфликтовать с кешемЕсли уже есть плагин и нужен быстрый результат
Код в functions.php / mu-pluginТочный контроль, минимум зависимостейНужно аккуратно обновлять и тестироватьЕсли нужен предсказуемый технический результат
Ничего не отключатьПолная совместимость с редакторомЛишние скрипты и запросы остаютсяЕсли редакторы активно используют embed-функции

Если вы уже используете Clearfy Pro, проверьте, нет ли там отдельной опции для отключения oEmbed и связанных служебных элементов. Но даже в этом случае полезно понимать, какой именно код убирается, чтобы не искать проблему вслепую.

Пошаговое внедрение без поломок

  1. Сделайте резервную копию файлов темы или подготовьте mu-plugin.
  2. Добавьте код отключения oEmbed в дочернюю тему или wp-content/mu-plugins/.
  3. Очистите кеш страницы, серверный кеш и CDN, если он есть.
  4. Откройте несколько типовых страниц: главную, запись, страницу с виджетами.
  5. Проверьте исходный код и Network в DevTools.
  6. Попробуйте вставить ссылку в редактор и убедитесь, что поведение вас устраивает.

Если вы работаете через mu-plugin, это удобнее для техподдержки и миграций: код не потеряется при смене темы. Для небольших сайтов достаточно одного файла, например wp-content/mu-plugins/disable-oembed.php.

Как проверить, что решение сработало

Проверка должна быть не визуальной, а технической. Смотрите на три признака: нет ли подключения wp-embed.min.js, исчезли ли служебные ссылки oEmbed из <head>, и не идут ли запросы к /wp-json/oembed/1.0/ при загрузке страницы.

  • Откройте исходный код страницы и найдите wp-embed.
  • В DevTools → Network обновите страницу и отфильтруйте запросы по oembed.
  • Проверьте редактор: вставка URL должна вести себя так, как вы ожидаете после отключения.
  • Если есть кеш, сравните страницу до и после очистки кеша.

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

Частые ошибки и как их исправить

Код добавили в родительскую тему

Если тема обновляется, изменения исчезнут. Для такого кода лучше использовать дочернюю тему или mu-plugin. Это особенно важно, если вы отключаете не только скрипт, но и фильтры редактора.

Отключили скрипт, но запросы к REST остались

Это нормально: wp-embed и REST-маршруты — не одно и то же. Если хотите убрать и сетевые обращения, дополнительно отключайте oEmbed endpoints через rest_endpoints.

Сломались встраивания в старых записях

Значит, на сайте уже есть контент, который рассчитывал на автоподстановку embed. В таком случае не отключайте всё сразу: сначала проверьте архив старых материалов и решите, нужно ли заменить встроенные URL на обычные блоки или iframe вручную.

Плагин оптимизации снова подключает embed.js

Некоторые плагины собирают свои ассеты и могут возвращать скрипт обратно. В этом случае ищите настройку в самом плагине или отключайте дублирующее подключение через приоритетный хук.

Безопасность и производительность: что ещё стоит учесть

Само по себе отключение oEmbed не делает сайт безопаснее радикально, но уменьшает количество лишних точек входа и фронтенд-запросов. Это полезно в связке с общей чисткой сайта: убирайте только то, что реально не используется, и не отключайте сервисы «на всякий случай».

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

Для сайтов с высокой нагрузкой полезно после отключения сравнить не только количество запросов, но и поведение редактора. Иногда экономия на фронтенде не стоит потери удобства для контент-менеджеров. В таких случаях разумнее отключить только фронтенд-скрипт, а редактор оставить без изменений.

×

AI-плагин

WPGPT
Сам создает статьи для вашего сайта WordPress

SEO и мета-теги

Парсинг конкурентов

Изображения

Комментарии

Подробнее