Как убрать WP-Embed из WordPress: полное руководство с примерами кода

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

Что такое WP-Embed и зачем его отключать

WP-Embed позволяет автоматически преобразовывать ссылки на сторонние сайты (например, YouTube, Twitter, Facebook) в встроенные объекты — видео, посты, аудио и т.д. Это удобно, но многие сайты не используют эту функцию, а скрипт грузится на всех страницах, что негативно влияет на производительность.

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

Если вы хотите убрать wp-embed.js, но при этом сохранить oEmbed функционал для администратора или определённых страниц — это тоже возможно, и мы рассмотрим такие варианты.

Как убрать wp-embed.js с помощью кода в functions.php

Самый простой способ — добавить следующий код в файл functions.php вашей темы или в собственный плагин:

function wphide_remove_wp_embed_script() {
    wp_deregister_script('wp-embed');
}
add_action('wp_footer', 'wphide_remove_wp_embed_script');

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

Если хотите убрать скрипт только с публичной части сайта и оставить в админке, можно добавить проверку:

function wphide_remove_wp_embed_script() {
    if (!is_admin()) {
        wp_deregister_script('wp-embed');
    }
}
add_action('wp_footer', 'wphide_remove_wp_embed_script');

Отключение oEmbed в WordPress: зачем и как

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

function wphide_disable_oembed() {
    // Отключаем REST API эндпоинты oEmbed
    remove_action('rest_api_init', 'wp_oembed_register_route');

    // Отключаем oEmbed discovery в заголовках
    remove_action('wp_head', 'wp_oembed_add_discovery_links');

    // Отключаем oEmbed JavaScript
    remove_action('wp_head', 'wp_oembed_add_host_js');

    // Отключаем фильтры oEmbed
    add_filter('embed_oembed_discover', '__return_false');
    remove_filter('oembed_dataparse', 'wp_filter_oembed_result', 10);

    // Отключаем автоматическую вставку embed
    remove_filter('the_content', array($GLOBALS['wp_embed'], 'autoembed'), 8);
}
add_action('init', 'wphide_disable_oembed');

Этот код не только убирает wp-embed.js, но и полностью отключает механизм oEmbed, что подходит для сайтов, не использующих внешние вставки.

Плагины для управления wp-embed и oEmbed

Если вы предпочитаете не трогать код, можно использовать плагины. Вот несколько полезных:

  • Clearfy Pro — мощный плагин оптимизации, который позволяет отключать wp-embed.js и другие ненужные скрипты в один клик. Подробнее на WPSHOP.RU.
  • Disable Embeds — бесплатный плагин от WordPress.org, который полностью отключает oEmbed и wp-embed.js без лишних настроек.
  • Asset CleanUp — позволяет selectively отключать загрузку скриптов, в том числе wp-embed.js, на отдельных страницах.

Выбор зависит от ваших задач и опыта работы с WordPress.

Как проверить, что wp-embed.js действительно отключён

После внесения изменений проверьте ваш сайт в браузере. Откройте инструменты разработчика (F12), перейдите на вкладку Network и обновите страницу. В списке загружаемых скриптов не должно быть wp-embed.js.

Также можно проверить исходный код страницы (Ctrl+U) и убедиться, что отсутствуют ссылки на этот скрипт и связанные с oEmbed мета-теги.

Советы по безопасности и производительности

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

  • Используйте плагин Clearfy Pro для комплексной оптимизации и очистки сайта от лишних скриптов и функций.
  • Включите кэширование и минимизацию CSS/JS через плагины типа WP Rocket или Autoptimize.
  • Регулярно обновляйте WordPress, темы и плагины для защиты от уязвимостей.
  • Следите за загрузкой сторонних скриптов и ограничивайте их использование.

Пример комплексного кода для отключения wp-embed и оптимизации

Для удобства приведём полный пример, который можно использовать в functions.php:

function wphide_optimize_remove_embed() {
    if (!is_admin()) {
        // Отключаем wp-embed.js
        wp_deregister_script('wp-embed');

        // Отключаем oEmbed REST API
        remove_action('rest_api_init', 'wp_oembed_register_route');

        // Отключаем oEmbed ссылки в head
        remove_action('wp_head', 'wp_oembed_add_discovery_links');
        remove_action('wp_head', 'wp_oembed_add_host_js');

        // Отключаем автоматическое преобразование ссылок в embed
        add_filter('embed_oembed_discover', '__return_false');
        remove_filter('oembed_dataparse', 'wp_filter_oembed_result', 10);
        remove_filter('the_content', array($GLOBALS['wp_embed'], 'autoembed'), 8);
    }
}
add_action('init', 'wphide_optimize_remove_embed');

Этот код отключит все основные функции embed, что положительно скажется на скорости и безопасности.

⭐⭐⭐⭐⭐