Beim Update auf WordPress 4.4 gilt es Vorsicht walten zu lassen. So schön sich die neuen WordPress-Funktionen auch lesen (responsive Images, oEmbed-Funktion, …), WordPress lädt damit automatisch ungefragt einige Dateien in den Quellcode, welche nicht immer Sinn machen und so auf jeden Fall Ladezeit etc. verschlechtern. Daher sollte man beim Update auf WordPress 4.4 zumindest einige Funktionen wie oEmbed ggf. deaktivieren.
WP 4.4 namens Clifford bringt einige an sich spannende Verbesserungen, Neuerungen:
Wie, was? Embed?
Wenn man in einem Beitrag einen Beitrag einer WordPress-Seite zitieren, einbauen möchte, reicht es nun einfach dessen URL
in den Editor zu kopieren.
Achtung: nicht die URL
verlinken, dann wird es „nur“ ein Link wie bislang.
Dank der neuen oEmbed-Funktion wird dann die URL
durch folgendes Element ersetzt (für die Entwickler: ist ein iframe
):
An sich ganz nett, aber jetzt mal ehrlich: wie häufig wird das wohl wirklich genutzt?
Damit das Funktioniert, muss WordPress allerdings etliche Dateien laden, die ansonsten keinen großen Nutzen haben und beispielsweise die Ladezeit deutlich verschlechtern. Was weg kann, kann weg, vgl. 10 Tipps für ein einfacheres Blog-Design.
Ab WP 4.4 sind das in der Regel folgende Dateien:
via wp_head(): <link rel='https://api.w.org/' href='//domain/wp-json/' /> <link rel="alternate" type="application/json+oembed" href="//domain/wp-json/oembed/1.0/embed?url=http%3A%2F%2Fdomain%2F" /> <link rel="alternate" type="text/xml+oembed" href="//domain/wp-json/oembed/1.0/embed?url=http%3A%2F%2Fdomain%2F&format=xml" /> via wp_footer(): <script type='text/javascript' src='//domain/wp-includes/js/wp-embed.min.js?ver=4.4'></script>
Man kann relativ umständlich diese Funktion deaktivieren und (separat) die Ausgabe dieser dann überflüssigen Dateien im Frontend entfernen.
Das geht leider nicht so einfach. Daher dieser Beitrag.
Nach meinen ersten Recherchen und Tests ist folgendes in der functions.php des genutzten Themes erforderlich:
remove_action('wp_head','rest_output_link_wp_head',10); remove_action('wp_head','wp_oembed_add_discovery_links',10); add_filter('rest_enabled','_return_false'); add_filter('rest_jsonp_enabled','_return_false');
Damit die Ausgabe der Dateien auch im Code verschwindet wird es umfangreicher.
Am einfachsten nutzt man daher das Plugin Disable Embeds, das sich seit WP 4.4 auch zunehmender Beliebtheit erfreut.
Wer es genau wissen will, kann sich den einfachen und gut dokumentierten Code des Plugins anschauen.
Schon ist der Quellcode wieder schlank wie zuvor. Will man die oEmbed-Funktion dennoch nutzen, macht es derzeit noch (HTTP/2 is coming) mehr Sinn zumindest die JS-Datei in nur einem Aufruf in der vermutlich bereits vorhandenen JS-Datei asyncron zu laden.
WordPress lädt daneben auch noch Emojis, ähnlich lästig im Quellcode und wohl eher selten genutzt.
Da gibt es ein nettes Plugin, welches hier ansetzt und gleich mehrere Möglichkeiten bietet: https://wordpress.org/plugins/wp-disable/. Bitte die Einstellungen genau anschauen!
WordPress nutzt srcset
um die Bilder abhängig von der Browserbreite zu laden. Bei diesem Ansatz muss man wissen und aufpassen, dass derzeit Google nur das Bild indiziert, welches mit src
verknüpft ist.
Mit dem mobile first-Gedanken im Kopf verwendet man hierfür meist das kleinste Bild. Das ist aus Google-Sicht aber meist nicht so schlau, da Google gewisse Mindestgrößen bevorzugt und Bildänderungen unter Umständen negative Folgen haben.
Wer hier bereits auf eine bewährte Lösung setzt (oder noch so einen nicht-responsiven Blog wie den hier hat) oder erst mal nichts riskieren will, kann die Funktion in der functions.php
recht einfach deaktivieren:
remove_filter('the_content','wp_make_content_images_responsive');
Wer seit WordPress 4.4 über das Backend wegen eines Zertifikatfehlers nicht mehr updaten kann und die Fehlermledung wie folgt bekommt:
SSL certificate problem, verify that the CA cert is OK. Details: error:14090086:SSL routines:SSL3_GET_SERVER_CERTIFICATE:certificate verify failed
Im Blog schreibt Robert Hartl über CMS, SEO & Webdesign. Kontakt →
Trackback-URL: https://www.netprofit.de/blog/wordpress-oembed-deaktivieren.html/trackback
Hallo Martin,
genau so ist es: wird immer geladen, ob gebraucht oder nicht und kostet durch die zusätzlichen, überflüssigen Aufrufe Ladezeit. Aber bei WordPress will halt der Zielnutzer sich die Funktionen einfach zusammenklicken können, so dass man wohl aus diesem Gesichtspunkt heraus so agiert.
Robert Hartl
Kommentar 2
29. Februar 2016 um 09:07 Uhr
Hallo Robert,
ich bin zwar kein Freund von Plugins und versuche, mit möglichst wenig auszukommen, aber in dann lohnt es sich ja doch.
Ich hatte daran deswegen Zweifel, weil wenn ich ein extra Plugin installieren muss, das immerhin 30 Zeilen reinen Code hat, dann sollte der Effekt mehr sein, als nur den Ausgabe-Code um ein ein paar Zeilen Code zu verschlanken, die ansonsten aber nichts „tun“.
Martin
Kommentar 3
29. Februar 2016 um 15:38 Uhr
Hallo Robert,
dein Artikel hat mir sehr geholfen. Leider habe ich diesen erst durch
diese Suchanfrage „wp-json oembed URLs mehrfach erreichbar“ auf Platz 1 in Google gefunden.
Aktuell nutze ich WP in der aktuellen Version mit dem Goodnews Theme. Bei der OnPage Analyse mit XOVI bekomme ich über 400 Fehlermeldungen mit „Sowohl mit als auch ohne www. erreichbar“
und dann unterschiedliche URLs mit dem wp-json/oembed/ Problem.
Leider nutzt hier die 301 in der htaccess überhaupt nicht.
[http://www.meine-domain.com/wp-json/oembed/1.0/embed?url=http%3A%2F%2Fwww.meine-domain.com%2F]
Wende ich nun deine Tipps an wird wahrscheinlich der Bereich Responsive Design darunter leiden, oder?
Abgesehen davon frage ich mich, ob dieses Problem wirklich von Google als ein SEO Fehler definiert wird?
Auf jeden Fall TOP Beitrag besten Dank und ich freue mich über Feedback.
Sonnige Grüße
Alexander
Alexander Schlosser →
Kommentar 4
28. Juni 2016 um 12:10 Uhr
Kommentare werden erst nach manueller Freischaltung sichtbar. Die übermittelten Daten werden entsprechend der Datenschutzerklärung zur Verarbeitung des Kommentars gespeichert.
Nibelungenplatz 2
D-94032 Passau
Tel.: +49 (0)851/ 966 31-31
Fax: +49 (0)851/ 966 31-41
E-Mail: kontakt@netprofit.de
Hallo,
ich hätte eine Frage zur Deaktivierung des neuen embed-features.
Verstehe ich es richtig, dass die o.g. Dateien (via wp_head(): ….. und
via wp_footer(): ….) immer automatisch im Ausgabe-Code erscheinen, auch wenn ich die neue embed-Funktion weder bei meinen eigenen posts nutze noch andere Websites meine posts einbetten?
Falls ja, dann wirkt sich das immer „mehr oder weniger“ auf die Ladezeit aus, bei jeder Seite?
Falls ja, dann sollte man sich m.E. das Plugin gönnen, wobei die 32 Zeilen reiner Code für mich als Laien nicht unbedingt „einfach “ aussehen, sondern eher aufwendig.
Grüße,
Martin
Kommentar 1
27. Februar 2016 um 16:41 Uhr