Що робить wp-embed.min.js у WordPress 4.4?


52

Питання

  1. Що робить wp-embed.min.jsфайл? Я помітив, що він доданий до кінця колонтитула мого сторінки.
  2. Як я можу його позбутися?

Зусилля

Після деякого гуглінгу я знайшов Embeds на Codex. Чому WordPress вважає, що я хочу додати відео та ін. На свою сторінку за замовчуванням?

Середовище

WordPress 4.4


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' );

4
Додавання його до дії "wp_enqueue_scripts", також, здається, працює.
andershagbard

7
Так, я б застосував wp_enqueue_scriptsгачок і wp_dequeue_script()замістьwp_deregister_script()
swissspidy

@swissspidy wp_dequeue_script( 'wp-embed' );не спрацює - чи можете ви, будь ласка, запустити тест? Рекомендація щодо витяжки є дійсною.
Азіз

У WordPress 4.6 @Trix сценарій працює чудово. Дякую!
Себастьян

1
Використовуючи цю перевірку теми проходу .
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/доданим: її кінцевою точкою, що входить до неї.

embed.min.js приховує блок-котирування і розкриває iframe. Це також робить деякі інші shenanigans, щоб зробити рамку приємно грати.

Тепер спробуйте видалити скрипт embed.min.js зі своєї сторінки, використовуючи один із методів, описаних в інших відповідях. Перезавантажте сторінку, і ви помітите, що блок-котирування видно, але рамка прихована.

Якщо коротко: якщо ви хочете вставити публікації WordPress інших людей у ​​свої власні публікації WordPress, залиште embed.min.js у спокої. Якщо ви не переймаєтесь цією функцією, то можете сміливо її видалити.


3
Зауважте, що видалення embed.jsнедостатньо для належного відключення вбудовування та може призвести навіть до дивної поведінки, якщо це не зробити правильно. Щоб повністю відключити ці вбудовування, використовуйте офіційно рекомендований плагін Disable Embeds .
swissspidy

Працюючи, як очікувалося, і пояснюється також за допомогою словесного натискання 5.x.
inrsaurabh

8

Відповідь Trix для мене не виправдала WordPress 4.4.1, але я знайшов рішення в коді відключення Вбудовує 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 одного дня, небо впаде вниз. Я рекомендую вам просто встановити плагін, немає користі в тому, щоб додати це до файлу function.php вашої теми. Якщо ви наполягаєте на цьому, ви дійсно повинні використовувати іншу назву функції.
swissspidy

Дякую за пропозицію @swissspidy, я оновив ім'я функції
Надеем Хан

2
Зауважте, що це не просто видалить JS з фронтену / бекенда, воно також повністю відключить можливість вставляти ваші повідомлення на інший сайт, WP Oembed не працюватиме
Tom J Nowell

Стаття про Kinsta детально розглядає цей метод використання фільтрів для його видалення kinsta.com/knowledgebase/disable-embeds-wordpress
Ендрю Шульц

4

Я думаю, ця частина все ще відсутня.

Що робить файл wp-embed.min.js? Я помітив, що він доданий до кінця колонтитула мого сторінки.

Відповідь на це питання - у сліді. https://core.trac.wordpress.org/changeset/35708

Вбудовує: Видаліть & символи з вбудованого JS.

Старіші версії WordPress конвертують ці & символи в &, що робить для деяких нефункціональних JS. Якщо люди мають старіший випуск, давайте не будемо ускладнювати їхнє життя, ніж це вже є.

Він також спробує нюхати агент користувача.


2
Текст, який ви цитували ("Видалити & символи з вбудованого JS" тощо). є єдиним повідомленням фіксації для файлу, але не описує загальну мету сценарію. Я дав власну відповідь, яка, сподіваюсь, проливає більше світла.
Джонатан Нікол
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.