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, что положительно скажется на скорости и безопасности.