Was macht wp-embed.min.js in WordPress 4.4?

52

Frage

  1. Was macht die wp-embed.min.jsDatei? Mir ist aufgefallen, dass es am Ende meiner Blog-Fußzeile hinzugefügt wird.
  2. Wie kann ich es loswerden?

Anstrengung

Nach einigem googeln fand ich Embeds im Codex. Warum glaubt WordPress, dass ich meiner Seite standardmäßig Videos usw. hinzufügen möchte?

Umgebung

WordPress 4.4

Pmpr
quelle
1
Dies hängt wahrscheinlich mit wp als eingebettetem Server und nicht mit einem Client zusammen
Mark Kaplun
Ich habe versucht, die Antwort auf den ersten Teil der Frage
hinzuzufügen
11
Ich bin mir ziemlich sicher, dass es nur dazu dient, Ihre Seite zu verlangsamen.
Josh Habdas
@ MarkKaplun ist richtig. Mit wp-embed.min.js können Sie Posts von entfernten WordPress-Sites über oEmbed in Ihre eigene WordPress-Site einbetten.
Jonathan Nicol

Antworten:

61

Damit könnte ich endlich Schluss machen:

function my_deregister_scripts(){
  wp_deregister_script( 'wp-embed' );
}
add_action( 'wp_footer', 'my_deregister_scripts' );
Pmpr
quelle
4
Das Hinzufügen bei der Aktion "wp_enqueue_scripts" scheint ebenfalls zu funktionieren.
Andershagbard
7
Ja, ich würde den wp_enqueue_scriptsHaken benutzen und wp_dequeue_script()stattdessenwp_deregister_script()
swissspidy
@swissspidy wp_dequeue_script( 'wp-embed' );wird nicht funktionieren - können Sie bitte einen Test durchführen? Die Haubenempfehlung ist gültig.
Aziz
Unter WordPress 4.6 funktioniert das @Trix-Skript einwandfrei. Danke!
Sebastian
1
Wenn Sie dies verwenden, wird der Test nicht bestanden .
Lowtechsun
20

Ich kam zu diesem Thread mit der gleichen Frage: Was macht die Datei wp-embed.min.js? Keine der aktuellen Antworten geht genau auf diese Frage ein.

Erstens bin ich mir ziemlich sicher, dass embed.min.js nichts mit dem Einbetten von eingebetteten Inhalten anderer Anbieter zu tun hat: Vimeo, YouTube usw. Sie können embed.min.js entfernen und diese Einbettungen funktionieren weiterhin.

Es bezieht sich speziell auf das Einbetten von WordPress-Posts aus Blogs / Websites anderer Leute. Einbetten von WordPress-Posts in WordPress-Posts: also Meta! Diese Funktion wurde in WordPress 4.4 eingeführt .

Wenn Sie embed.min.js deaktivieren, funktioniert diese Funktion nicht mehr auf Ihrer Site.

Sie können dies ganz einfach testen: Fügen Sie die URL des WordPress-Posts einer anderen Person in einen Ihrer eigenen Posts ein. WP sollte diese URL in ein eingebettetes Widget konvertieren. Wenn Sie Ihren Beitrag im Front-End anzeigen, werden Sie feststellen, dass Ihr Markup ein Blockquote und einen Iframe enthält. Das Blockquote ist ein Nur-Text-Link zu dem von Ihnen eingebetteten Blog-Beitrag, während die Quelle des iFrame die URL des Blog-Beitrags ist, /embed/an die der oEmbed-Endpunkt angehängt ist.

embed.min.js verbirgt das blockquote und zeigt den iframe an. Es macht auch einige andere Spielereien, um den Iframe schön spielen zu lassen.

Versuchen Sie nun, das Skript embed.min.js mit einer der in den anderen Antworten beschriebenen Methoden von Ihrer Seite zu entfernen. Laden Sie Ihre Seite neu und Sie werden feststellen, dass das Blockzitat sichtbar ist, aber der Iframe ausgeblendet ist.

Kurz gesagt: Wenn Sie die WordPress-Posts anderer Leute in Ihre eigenen WordPress-Posts einbetten möchten, lassen Sie embed.min.js in Ruhe. Wenn Sie sich nicht für diese Funktion interessieren, können Sie sie sicher entfernen.

Jonathan Nicol
quelle
3
Beachten Sie, dass das Entfernen embed.jsnicht ausreicht, um Einbettungen ordnungsgemäß zu deaktivieren, und sogar zu seltsamem Verhalten führen kann, wenn es nicht richtig ausgeführt wird. Verwenden Sie das offiziell empfohlene Plug-in zum Deaktivieren von Einbettungen, um diese Einbettungen vollständig zu deaktivieren .
swissspidy
Funktioniert wie erwartet und wird auch in WordPress 5.x erklärt.
Inrsaurabh
8

Die Antwort von Trix hat bei WordPress nicht geklappt4.4.1 , aber ich habe eine Lösung im Code des WordPress-Plugins zum Deaktivieren von Einbettungen gefunden . Fügen Sie diesen Code (geändert) in die functions.phpDatei Ihres Themas ein , um die wp-embed.min.jsDatei vollständig vom Frontend zu entfernen :

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 );
Nadeem Khan
quelle
3
Unter Verwendung disable_embeds_init()als Funktionsname ist eine wirklich schlechte Idee. Wenn Sie eines Tages das Disable Embeds-Plugin installieren, wird der Himmel herunterfallen. Ich empfehle Ihnen, nur das Plugin zu installieren. Es hat keinen Vorteil, dies der Datei functions.php Ihres Themas hinzuzufügen. Wenn Sie darauf bestehen, sollten Sie wirklich einen anderen Funktionsnamen verwenden.
swissspidy
Vielen Dank für den Vorschlag @swissspidy, ich habe den Namen der Funktion aktualisiert
Nadeem Khan
2
Beachten Sie, dass dies nicht nur das JS vom Frontend / Backend entfernt, sondern auch die Möglichkeit zum Einbetten Ihrer Posts auf einer anderen Site vollständig deaktiviert. WP Oembed funktioniert nicht
Tom J Nowell
Der Artikel über Kinsta erläutert diese Methode zum Entfernen mithilfe von Filtern. Kinsta.com/knowledgebase/disable-embeds-wordpress
Andrew Schultz
4

Ich denke, dieser Teil fehlt noch.

Was macht die Datei wp-embed.min.js? Mir ist aufgefallen, dass es am Ende meiner Blog-Fußzeile hinzugefügt wird.

Die Antwort auf diese Frage ist in der Spur. https://core.trac.wordpress.org/changeset/35708

Einbettungen: Entfernen Sie & Zeichen aus der eingebetteten JS.

Ältere Versionen von WordPress konvertieren diese & Zeichen in &, was dazu führt, dass einige JS nicht mehr funktionieren. Wenn die Leute eine ältere Version haben, sollten wir ihnen das Leben nicht schwerer machen, als es bereits ist.

Es wird auch versucht, den Benutzeragenten zu beschnüffeln.

prosti
quelle
2
Der Text, den Sie zitiert haben ("Entfernen von & Zeichen aus dem eingebetteten JS" usw.). ist eine einzelne Festschreibungsnachricht für die Datei, beschreibt jedoch nicht den Gesamtzweck des Skripts. Ich habe meine eigene Antwort geliefert, die hoffentlich mehr Licht ins Dunkel bringt.
Jonathan Nicol