Для чего нужен wp-embed.min.js в WordPress 4.4?

14 дек. 2015 г., 00:59:01
Просмотры: 72K
Голосов: 67

Вопрос

  1. Что делает файл wp-embed.min.js? Я заметил, что он добавляется в конец футера моей страницы блога.
  2. Как я могу от него избавиться?

Что я узнал

После некоторого поиска в Google я нашел информацию о Встраиваемом контенте в Codex. Почему WordPress по умолчанию считает, что я хочу добавлять видео и прочее на свою страницу?

Окружение

WordPress 4.4

4
Комментарии

Это, вероятно, связано с WordPress как oEmbed сервером, а не клиентом

Mark Kaplun Mark Kaplun
14 дек. 2015 г. 07:25:29

Я попытался добавить ответ на первую часть вопроса

prosti prosti
28 нояб. 2016 г. 21:06:47

Уверен, это просто замедляет вашу страницу.

vhs vhs
17 апр. 2017 г. 22:36:59

@MarkKaplun прав. wp-embed.min.js позволяет встраивать записи с удаленных сайтов WordPress на ваш собственный сайт WordPress через oEmbed.

Jonathan Nicol Jonathan Nicol
15 нояб. 2017 г. 04:47:42
Все ответы на вопрос 5
7
82

Что это?

Этот функционал отвечает за преобразование ссылок во встраиваемые фреймы.

Например, вы можете вставить ссылку на видео с Youtube в контент редактора, и при просмотре страницы будет автоматически сгенерирован Youtube-плеер.

Подробнее в документации WordPress

Как отключить?

Я смог окончательно отключить это, используя следующий код:

function my_deregister_scripts(){
  // Отменяем регистрацию скрипта wp-embed
  wp_deregister_script( 'wp-embed' );
}
// Добавляем действие в подвал сайта
add_action( 'wp_footer', 'my_deregister_scripts' );
14 дек. 2015 г. 01:40:55
Комментарии

Добавление на действие "wp_enqueue_scripts" также, кажется, работает.

andershagbard andershagbard
13 янв. 2016 г. 18:09:27

Да, я бы использовал хук wp_enqueue_scripts и wp_dequeue_script() вместо wp_deregister_script()

swissspidy swissspidy
17 янв. 2016 г. 22:06:07

@swissspidy wp_dequeue_script( 'wp-embed' ); не сработает - можете, пожалуйста, провести тест? Рекомендация по хуку верна.

Aziz Aziz
6 мая 2016 г. 01:38:25

В WordPress 4.6 скрипт @Trix работает корректно. Спасибо!

Sebastian Sebastian
6 сент. 2016 г. 12:07:25

Использование этого не пройдет проверку themecheck.

lowtechsun lowtechsun
12 июн. 2017 г. 13:28:28

Хорошая статья на Kinsta, где используются фильтры для удаления скрипта. https://kinsta.com/knowledgebase/disable-embeds-wordpress/

Andrew Schultz Andrew Schultz
30 авг. 2019 г. 16:47:08

Вы не ответили на свой вопрос...

Slbox Slbox
22 февр. 2020 г. 23:05:30
Показать остальные 2 комментариев
4
35

Я попал в эту ветку с тем же вопросом: что делает файл wp-embed.min.js? Ни один из текущих ответов точно не отвечает на этот вопрос.

Во-первых, я почти уверен, что embed.min.js не относится к встраиванию oEmbed-контента от других провайдеров, таких как Vimeo, YouTube и т.д. Вы можете удалить embed.min.js, и эти встраивания продолжат работать.

Он относится конкретно к встраиванию записей WordPress с других блогов/сайтов. Встраивание записей WordPress внутри записей WordPress — как мета! Эта функция была представлена в WordPress 4.4.

Отключение embed.min.js остановит работу этой функции на вашем сайте.

Вы можете легко это проверить: вставьте URL чужой записи WordPress в одну из своих записей. WordPress должен преобразовать этот URL во встроенный виджет. Когда вы просмотрите свою запись на фронтенде, вы заметите, что ваша разметка содержит blockquote и iframe. Blockquote — это текстовое представление ссылки на встроенную запись блога, а источник iframe — это URL записи блога с добавленным /embed/: его oEmbed-эндпоинт.

embed.min.js скрывает blockquote и показывает iframe. Он также выполняет некоторые другие манипуляции, чтобы iframe работал корректно.

Теперь попробуйте удалить скрипт embed.min.js со своей страницы, используя один из методов, описанных в других ответах. Перезагрузите страницу, и вы заметите, что blockquote виден, а iframe скрыт.

Короче говоря: если вы хотите встраивать записи других пользователей WordPress в свои собственные записи WordPress, оставьте embed.min.js в покое. Если вам не нужна эта функция, вы можете смело его удалить.

15 нояб. 2017 г. 04:18:31
Комментарии

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

swissspidy swissspidy
22 янв. 2018 г. 16:09:53

Работает как ожидалось и описано в WordPress 5.x и новее.

inrsaurabh inrsaurabh
9 мар. 2019 г. 14:30:29

Невероятно, как WordPress добавляет бесполезный мусор с каждой новой версией и официальной темой.

Michael Rogers Michael Rogers
20 июл. 2020 г. 23:49:13

@swissspidyКто это рекомендует? Похоже, проект заброшен.

Michael Rogers Michael Rogers
20 июл. 2020 г. 23:50:23
4

Решение Trix не сработало для меня в WordPress 4.4.1, но я нашел решение в коде плагина Disable Embeds для WordPress. Добавьте этот модифицированный код в файл functions.php вашей темы, чтобы полностью удалить файл wp-embed.min.js из фронтенда:

add_action( 'init', function() {

    // Удаляем конечную точку REST API.
    remove_action('rest_api_init', 'wp_oembed_register_route');

    // Отключаем автоопределение oEmbed.
    // Не фильтруем результаты oEmbed.
    remove_filter('oembed_dataparse', 'wp_filter_oembed_result', 10);

    // Удаляем ссылки для обнаружения oEmbed.
    remove_action('wp_head', 'wp_oembed_add_discovery_links');

    // Удаляем специфичный JavaScript для oEmbed из фронтенда и бэкенда.
    remove_action('wp_head', 'wp_oembed_add_host_js');
}, PHP_INT_MAX - 1 );
12 янв. 2016 г. 11:08:18
Комментарии

Использование disable_embeds_init() в качестве имени функции - очень плохая идея. Если вы когда-нибудь установите плагин Disable Embeds, наступит полный хаос. Я рекомендую просто установить плагин, нет никакой выгоды добавлять это в файл functions.php вашей темы. Если вы настаиваете на этом, вам действительно стоит использовать другое имя функции.

swissspidy swissspidy
17 янв. 2016 г. 22:08:15

Спасибо за совет @swissspidy, я изменил имя функции

Nadeem Khan Nadeem Khan
18 янв. 2016 г. 13:59:57

Обратите внимание, что это не просто удалит JS из фронтенда/бэкенда, но и полностью отключит возможность встраивания ваших записей на других сайтах, WP Oembed перестанет работать

Tom J Nowell Tom J Nowell
4 нояб. 2016 г. 21:37:06

В статье на Kinsta подробно рассматривается этот метод использования фильтров для его удаления https://kinsta.com/knowledgebase/disable-embeds-wordpress/

Andrew Schultz Andrew Schultz
30 авг. 2019 г. 16:47:45
1

Я думаю, эта часть все еще отсутствует.

Что делает файл wp-embed.min.js? Я заметил, что он добавляется в конец подвала моей страницы блога.

Ответ на этот вопрос можно найти в треке: https://core.trac.wordpress.org/changeset/35708

Embeds: Удаление символов & из встроенного JS для встраивания.

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

Также он пытается определить user agent.

28 нояб. 2016 г. 21:06:03
Комментарии

Цитируемый вами текст ("Remove & characters from the inline embed JS" и т.д.) является отдельным сообщением коммита для файла, но не описывает общее назначение скрипта. Я предоставил свой собственный ответ, который, надеюсь, проливает больше света на этот вопрос.

Jonathan Nicol Jonathan Nicol
15 нояб. 2017 г. 04:23:58
0

Август 2022 - WordPress 6.0.1

Другие уже ответили на сомнения автора.
Я просто хочу подробнее рассказать о wp-embed

Что делает файл wp-embed.min.js?

Коротко: делает ваши ссылки красивыми

Добавляет блок, который отображает контент с других сайтов, таких как Twitter или YouTube.
WordPress Block

Пример

С wp-embed

Пример с wp-embed

Без wp-embed

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

Как от него избавиться?

Важно знать, что этот скрипт находится в подвале вашего сайта.

<script type='text/javascript' src='http://ВАШСАЙТ/wp-includes/js/wp-embed.min.js?ver=6.0.1' id='wp-embed-js'></script>

У вас есть два варианта. Первый — использовать wp_enqueue_scripts, а второй — использовать wp_footer.

Использование wp_enqueue_scripts

function deregister_style_scripts() {
    wp_deregister_script( 'wp-embed' );
}
add_action( 'wp_enqueue_scripts', 'deregister_style_scripts', 100 );

Использование wp_footer

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

Как вставить ссылку

Используйте блок Embed

Блок Embed

Вставка не работает?

Обычно это происходит, когда сайт не разрешает встраивать свой контент на другие сайты. Это контролируется через X-Frame-Options, есть две директивы: DENY и SAMEORIGIN

Отказано в соединении

x-frame-options: DENY

Ошибка DENY

Извините, этот контент не может быть встроен.

x-frame-options: SAMEORIGIN

Ошибка SAMEORIGIN

Читать далее

О вставках: https://wordpress.org/support/article/embeds/
x-Frame-Options: https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/X-Frame-Options

8 авг. 2022 г. 19:33:52