Что делает wp-embed.min.js в WordPress 4.4?

52

Вопрос

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

усилие

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

Окружающая обстановка

WordPress 4.4

PMPR
источник
1
Это вероятно связано с wp как oEmbed-сервером, а не клиентом
Марк Каплун
Я пытался добавить ответ на первую часть вопроса
PrOSTi
11
Уверен, что это просто, чтобы замедлить вашу страницу.
Джош Хабдас
@MarkKaplun правильно. wp-embed.min.js позволяет встраивать сообщения с удаленных сайтов WordPress на свой собственный сайт WordPress через oEmbed.
Джонатан Николь

Ответы:

61

Я мог бы наконец избавиться от этого, используя это:

function my_deregister_scripts(){
  wp_deregister_script( 'wp-embed' );
}
add_action( 'wp_footer', 'my_deregister_scripts' );
PMPR
источник
4
Добавление его в действие «wp_enqueue_scripts» также, похоже, работает.
Андершагбард
7
Да, я бы использовал wp_enqueue_scriptsкрючок и wp_dequeue_script()вместоwp_deregister_script()
swissspidy
@swissspidy wp_dequeue_script( 'wp-embed' );не будет работать - не могли бы вы запустить тест? Рекомендация капота действительна.
Азиз
Под WordPress 4.6 скрипт @Trix отлично работает. Спасибо!
Себастьян
1
Использование этого не пройдет themecheck .
lowtechsun
20

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

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

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

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

Вы можете легко проверить это: вставьте URL-адрес чужой записи WordPress в одну из ваших собственных публикаций. WP должен преобразовать этот URL во встроенный виджет. Когда вы просматриваете свое сообщение в интерфейсе, вы заметите, что ваша разметка содержит цитату и фрейм. Цитата - это текстовая ссылка на встроенную запись блога, а источником iFrame является URL-адрес поста блога с /embed/добавленной: его конечная точка oEmbed.

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

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

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

Джонатан Николь
источник
3
Обратите внимание, что удаление embed.jsнедостаточно для правильного отключения встраивания и может даже привести к странному поведению, если все сделано неправильно. Чтобы полностью отключить эти встраивания, используйте официально рекомендуемый плагин Disable Embeds .
swissspidy
Работать как положено и объяснено в word-press 5.x.
Inrsaurabh
8

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

add_action( 'init', function() {

    // Remove the REST API endpoint.
    remove_action('rest_api_init', 'wp_oembed_register_route');

    // Turn off oEmbed auto discovery.
    // Don't filter oEmbed results.
    remove_filter('oembed_dataparse', 'wp_filter_oembed_result', 10);

    // Remove oEmbed discovery links.
    remove_action('wp_head', 'wp_oembed_add_discovery_links');

    // Remove oEmbed-specific JavaScript from the front-end and back-end.
    remove_action('wp_head', 'wp_oembed_add_host_js');
}, PHP_INT_MAX - 1 );
Надим Хан
источник
3
Использование в disable_embeds_init()качестве имени функции действительно плохой идеи. Если вы собираетесь установить плагин Disable Embeds однажды, небо упадет. Я рекомендую вам просто установить плагин, нет смысла добавлять его в файл functions.php вашей темы. Если вы настаиваете на этом, вам действительно следует использовать другое имя функции.
swissspidy
Спасибо за предложение @swissspidy, я обновил имя функции
Надим Хан
2
Обратите внимание, что это не просто удалит JS из внешнего интерфейса / бэкэнда, но также полностью отключит возможность встраивания ваших сообщений в другой сайт, WP Oembed не будет работать
Том Дж. Новелл
Статья о Kinsta раскрывает этот метод использования фильтров для его удаления kinsta.com/knowledgebase/disable-embeds-wordpress
Эндрю Шульц
4

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

Что делает файл wp-embed.min.js? Я заметил, что это добавлено в конец моего нижнего колонтитула.

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

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

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

Он также попытается прослушать пользовательский агент.

прости
источник
2
Текст, который вы цитировали («Удалить & символы из встроенного JS встраивания» и т. Д.). является единственным сообщением фиксации для файла, но не описывает общую цель сценария. Я дал свой собственный ответ, который, я надеюсь, пролил больше света.
Джонатан Николь