Mit der letzten Funktionsaktualisierung 1.9.0 für Embed Privacy hat selbiges eine neue Methode zur Vorschaubild-Generierung erhalten. Und darüber möchte ich sprechen. Praktisch ist es ein Teil eines breiteren Ansatzes, die Erweiterbarkeit des Plugins zu verbessern, während der Code aufgeräumt wird und leichter wartbar wird.

Das Interface

Alles startet mit einem neuen Interface für Embed-Anbieter mit Vorschaubild-Unterstützung. Per Definition stellt dieses Interface sicher, dass sich alle Vorschaubild-Anbieter gleich verhalten und standardisiert sind.

In diesem Fall bedeutet das, dass jeder Vorschaubild-Anbieter die Funktionalität implementieren muss, um ein Vorschaubild zu laden und zu speichern. Ebenso muss es die Möglichkeit haben, ein Vorschaubild über die ID des Embeds zu erhalten sowie den Pfad und die URL des Vorschaubildes und den Titel des Vorschaubild-Anbieters. Zuletzt muss es eine Funktionalität geben, um zu prüfen, ob der aktuelle Embed von diesem spezifischen Vorschaubild-Anbieter stammt.

Abstrakter Vorschaubild-Anbieter

Ebenfalls neu ist eine abstrakte Klasse, um einige Basis-Funktionalitäten zu implementieren. Sie implementiert die Methoden, um den Pfad und die URL eines gespeicherten Vorschaubilds zu erhalten sowie die Prüfung, ob der Embed mit dem Vorschaubild-Anbieter übereinstimmt.

Alle eigentlichen Vorschaubild-Anbieter müssen diese Klasse erweitern, um ein funktionierender Vorschaubild-Anbieter zu sein.

Ein eigentlicher Vorschaubild-Anbieter

Der eigentliche Vorschaubild-Anbieter muss sich zuerst über einen Filter registrieren (für weitere Informationen, siehe die Dokumentation) und die eigentlichen Methoden zum Herunterladen und Speichern implementieren, wie oben beschrieben.

Da es bereits eine Reihe von Vorschaubild-Anbietern gibt, kannst du dich gerne daran orientieren und sie für deine individuellen Implementierungen verwenden. Du findest sie auf GitHub (dieser Link verweist auf v1.9.0; im Falle, dass du das später liest, stelle bitte sicher, dass du immer die neueste Version für mögliche Änderungen konsultierst).

Angegangene Probleme

Es gibt einige Probleme, die nicht immer einfach zu lösen sind, wenn es um Embed-Vorschaubilder geht. Manche davon haben bereits eine Lösung in den bestehenden Vorschaubild-Anbietern von Embed Privacy. Wenn du ebenfalls darauf stößt, kannst du im Code des jeweiligen Vorschaubild-Anbieters nachschauen, wie es dort gelöst würde.

Keine ID vorhanden

Normalerweise gibt es so etwas wie ein eindeutiges Identifizierungsmerkmal entweder in der URL oder im Embed-Code eines Embed-Anbieters. Diese wird immer benötigt, um die Verbindung zwischen Vorschaubild und Embed zu speichern. Im Falle von SlideShare beispielsweise gibt es ein Problem, dass diese ID nicht immer verfügbar ist. Während die Vorschaubild-URL eine solche ID beinhaltet, trifft das auf die URL des eingebetteten Inhalts nicht zu. Um sie dennoch zu verbinden, gibt es eine Methode, um alle Metadaten eines Vorschaubild-Anbieters eines spezifischen Beitrags (via Thumbnail::get_metadata()) zu erhalten. Da jedes Vorschaubild zwei Metadaten-Einträge speichert (eine mit dem Speicherort des Vorschaubilds und eine mit der URL des dazugehörigen eingebetteten Inhalts), kannst du diese Metadaten auf die URL prüfen und dann aus dem Meta-Schlüssel die ID extrahieren (der immer im Format Thumbnail::METADATA_PREFIX . '_<provider-name>_<id>_url' aufgebaut ist).

Kein Bild verfügbar

Der Standard-oEmbed-Code für WordPress TV beispielsweise enthält überhaupt kein Vorschaubild. Als Lösung lade ich das HTML der zum einbetten eingegebenen URL herunter (nicht den Inhalt des iframes, wie er am Ende auf der Website erscheint), den du vorher vermutlich auf WordPress.tv besucht hast, und extrahiere den Wert des Meta-Elements og:image, das ein Vorschaubild enthält.

Migration

Die alte Thumbnails-Klasse arbeitet nur noch als Hülle zur Abwärtskompatibilität, aber wird mit Version 2.0.0 entfernt werden. Wenn du bereits Funktionalität davon verwendest, migriere bitte wie oben beschrieben. Seine Funktionalität ist nun entweder Teil der Klasse epiphyt\Embed_Privacy\thumbnail\Thumbnail oder spezifisch in einem der verfügbaren Vorschaubild-Anbieter.

Fazit

Der Code ist nun sauberer sowie einfacher zu verwalten und zu erweitern. Es ist die erste Iteration einer gesamten Revision von Embed Privacy. Weitere Anpassungen werden folgen!

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert