wpcalc.ru wordpress WPCalc

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

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

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

Что именно отключается и что останется работать

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

На практике это значит следующее:

  • ссылки на YouTube, X/Twitter, Vimeo и другие поддерживаемые сервисы больше не будут автоматически превращаться во встроенные объекты;
  • страница перестанет загружать лишний JavaScript для oEmbed;
  • в админке и в редакторе поведение вставки ссылок может измениться, если вы привыкли к автоматическому предпросмотру;
  • если тема или плагин отдельно используют oEmbed, их поведение тоже может затронуть отключение.

Самый надёжный способ: отключить oEmbed кодом

Если вам нужен предсказуемый результат без установки дополнительных плагинов, проще всего отключить oEmbed через код. Обычно это делают в дочерней теме или через небольшой mu-plugin, чтобы изменения не пропали после обновления темы.

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

add_action( 'init', function () {
    // Убираем обнаружение oEmbed на фронтенде.
    wp_deregister_script( 'wp-embed' );

    // Отключаем автоподстановку embed по ссылке в контенте.
    remove_filter( 'the_content', [ $GLOBALS['wp_embed'], 'autoembed' ], 8 );
} );

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

Если нужно убрать только фронтенд-скрипт, а автоматическую вставку ссылок оставить, можно ограничиться одной строкой с wp_deregister_script( 'wp-embed' ). Это уменьшит количество подключений, но не отключит сам механизм oEmbed полностью.

Как отключить oEmbed без правки темы

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

Для mu-plugin достаточно создать файл, например wp-content/mu-plugins/disable-oembed.php, и поместить туда такой код:

<?php
add_action( 'init', function () {
    wp_deregister_script( 'wp-embed' );
    remove_filter( 'the_content', [ $GLOBALS['wp_embed'], 'autoembed' ], 8 );
} );

mu-plugin загружается автоматически и не зависит от активации в админке. Это хороший вариант, если вы ведёте несколько сайтов и хотите держать такие технические правки отдельно от темы.

Что будет, если отключить oEmbed на сайте с уже опубликованным контентом

Самый частый побочный эффект — старые записи перестают показывать встроенные блоки из внешних сервисов. Если в тексте была просто ссылка на YouTube или другой поддерживаемый источник, WordPress раньше мог заменить её на embed. После отключения ссылка останется ссылкой.

Это не ошибка, а ожидаемое поведение. Но если на сайте много старого контента, стоит проверить несколько типовых страниц:

  • записи с видео, вставленными через обычную ссылку;
  • страницы, где embed использовался в блоках редактора;
  • архивы и карточки, если тема выводит фрагменты контента с embed-элементами.

Если вы хотите убрать только лишние внешние запросы, но сохранить старые встраивания, полное отключение oEmbed может быть слишком жёстким решением. В таком случае лучше сначала измерить, действительно ли именно oEmbed создаёт заметную нагрузку, а не какой-то другой внешний сервис, подключаемый темой или плагином.

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

После внесения изменений откройте любую публичную страницу сайта и проверьте исходный код или список сетевых запросов в браузере. Вам нужно убедиться, что на странице больше не подгружается скрипт wp-embed.min.js или аналогичный ему файл, связанный с oEmbed.

Проверка обычно выглядит так:

  1. Откройте страницу сайта в браузере.
  2. Запустите инструменты разработчика.
  3. Перейдите во вкладку Network или Сеть.
  4. Обновите страницу и найдите запросы, связанные с wp-embed.

Если запросов нет, значит фронтенд-часть отключена. Если запросы остались, проверьте, не подключает ли их тема, плагин оптимизации или кэш-обвязка. Иногда скрипт может быть добавлен не WordPress-ядром, а сторонним кодом.

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

Когда отключать oEmbed не стоит

Не отключайте oEmbed, если редакторы сайта регулярно вставляют внешние видео, посты или другие материалы простым способом — через вставку ссылки в контент. В этом случае функция экономит время и избавляет от ручной вёрстки.

Также не стоит отключать её без проверки, если сайт использует:

  • старые записи с большим количеством встроенных внешних объектов;
  • кастомные блоки или плагины, которые рассчитывают на стандартный механизм embed;
  • контент, где важен именно нативный предпросмотр внешних публикаций.

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

Для сайтов, где нужно упростить фронтенд и убрать часть служебных функций WordPress, такие правки часто дают больше пользы, чем установка очередного «оптимизатора» без понимания, что именно он меняет. Главное — после отключения проверить реальные страницы, а не ориентироваться только на настройки в админке.

×

AI-плагин от WPShop.ru

анализирует конкурентов

пишет статьи

готовит SEO

генерирует изображения

и еще кое-что...
WPGPT
Плагин, который наполняет ваш сайт WordPress
Узнать больше