Co robi wp-embed.min.js w WordPress 4.4?


52

Pytanie

  1. Co robi wp-embed.min.jsplik? Zauważyłem, że jest dodawany na końcu stopki strony bloga.
  2. Jak mogę się tego pozbyć?

Wysiłek

Po pewnym googlowaniu znalazłem Osadzanie na Kodeksie. Dlaczego WordPress uważa, że ​​domyślnie chcę dodawać filmy wideo itp. Do mojej strony?

Środowisko

WordPress 4.4


1
Jest to prawdopodobnie związane z wp jako serwer oEmbed, a nie klient
Mark Kaplun,

Próbowałem dodać odpowiedź do pierwszej części pytania
prosti

11
Jestem pewien, że to po prostu spowalnia twoją stronę.
Josh Habdas

@ MarkKaplun jest poprawny. wp-embed.min.js pozwala osadzać posty ze zdalnych stron WordPress we własnej witrynie WordPress za pośrednictwem oEmbed.
Jonathan Nicol

Odpowiedzi:


61

W końcu mogłem się tego pozbyć, używając tego:

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

4
Wydaje się, że dodanie go do akcji „wp_enqueue_scripts” również działa.
andershagbard

7
Tak, wp_enqueue_scriptswp_dequeue_script()wp_deregister_script()
użyłbym

@swissspidy wp_dequeue_script( 'wp-embed' );nie będzie działać - czy możesz uruchomić test? Zalecenie dotyczące okapu jest ważne.
Aziz

W WordPress 4.6 @Trix skrypt działa dobrze. Dziękuję Ci!
Sebastian,

1
Korzystanie z tego nie przejdzie ich kontroli .
lowtechsun

20

Doszedłem do tego wątku z tym samym pytaniem: co robi plik wp-embed.min.js? Żadna z obecnych odpowiedzi nie odpowiada dokładnie na to pytanie.

Po pierwsze, jestem całkiem pewien, że embed.min.js nie ma związku z osadzaniem treści oEmbed od innych dostawców: Vimeo, YouTube itp. Możesz usunąć plik embed.min.js i te osadzenia będą nadal działać.

Dotyczy to w szczególności osadzania postów WordPress z blogów / stron internetowych innych osób. Osadzanie postów WordPress wewnątrz postów WordPress: więc meta! Ta funkcja została wprowadzona w WordPress 4.4 .

Wyłączenie embed.min.js spowoduje, że ta funkcja nie będzie działać w Twojej witrynie.

Możesz to łatwo przetestować: wklej adres URL posta WordPress innej osoby do jednego z własnych postów. WP powinien przekonwertować ten adres URL na osadzony widżet. Gdy zobaczysz swój post w interfejsie, zauważysz, że znaczniki zawierają cytat blokowy i ramkę iframe. /embed/Cytat blokowy jest tekstowym linkiem do osadzonego postu na blogu, a źródłem elementu iframe jest adres URL posta na blogu z dołączonym: punktem końcowym oEmbed.

Plik embed.min.js ukrywa cytat blokowy i ujawnia element iframe. Robi także inne shenanigany, aby gra iframe była przyjemna.

Teraz spróbuj usunąć skrypt embed.min.js ze swojej strony, korzystając z jednej z metod opisanych w innych odpowiedziach. Załaduj ponownie stronę, a zauważysz, że cytat jest widoczny, ale iframe jest ukryty.

W skrócie: jeśli chcesz osadzać posty innych osób w swoich postach WordPress, zostaw embed.min.js w spokoju. Jeśli nie zależy ci na tej funkcji, możesz ją bezpiecznie usunąć.


3
Pamiętaj, że usunięcie embed.jsnie wystarcza do prawidłowego wyłączenia osadzania, a nawet może prowadzić do dziwnego zachowania, jeśli nie zostanie wykonane prawidłowo. Aby całkowicie wyłączyć te osadzenia, użyj oficjalnie zalecanej wtyczki Disable Embeds .
swissspidy

Działa zgodnie z oczekiwaniami i objaśnieniem w word-press 5.x.
inrsaurabh

8

Odpowiedź Trixa nie wyszła mi na WordPress 4.4.1, ale znalazłem rozwiązanie w kodzie wtyczki Disable Embeds WordPress. Dodaj ten kod (zmodyfikowany) do functions.phppliku motywu, aby wp-embed.min.jscałkowicie usunąć plik z interfejsu użytkownika:

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
Użycie disable_embeds_init()jako nazwy funkcji jest naprawdę złym pomysłem. Jeśli pewnego dnia zamierzasz zainstalować wtyczkę Disable Embeds, niebo spadnie. Polecam po prostu zainstalować wtyczkę, nie ma żadnej korzyści z dodania tego do pliku functions.php twojego motywu. Jeśli nalegasz na to, naprawdę powinieneś użyć innej nazwy funkcji.
swissspidy

Dzięki za sugestię @ swissspidy, zaktualizowałem nazwę funkcji
Nadeem Khan,

2
Zauważ, że to nie tylko usunie JS z frontendu / backendu, ale także całkowicie wyłączy możliwość osadzania twoich postów na innej stronie, WP Oembed nie będzie działać
Tom J Nowell

Artykuł na temat Kinsta omawia tę metodę użycia filtrów do jej usunięcia kinsta.com/knowledgebase/disable-embeds-wordpress
Andrew Schultz

4

Myślę, że tej części wciąż brakuje.

Do czego służy plik wp-embed.min.js? Zauważyłem, że jest dodawany na końcu stopki strony bloga.

Odpowiedź na to pytanie jest na dobrej drodze. https://core.trac.wordpress.org/changeset/35708

Osadzanie: usuwanie i znaki z wbudowanego osadzania JS.

Starsze wersje WordPress przekonwertują te i znaki na &, co sprawia, że ​​niektóre niefunkcjonalne JS. Jeśli ludzie używają starszej wersji, nie utrudniajmy im życia.

Spróbuje również powąchać klienta użytkownika.


2
Cytowany tekst („Usuń i znaki z wbudowanego osadzania JS” itp.). jest pojedynczym komunikatem zatwierdzenia dla pliku, ale nie opisuje ogólnego celu skryptu. Podałem własną odpowiedź, która, jak mam nadzieję, rzuca więcej światła.
Jonathan Nicol
Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.