Eigenen YouTube Player durch Playlist der Let’s Play-Serie ergänzen

Zuvor haben wir uns ein Child-Theme mit einem einfachen YouTube Player mit benutzerdefinierten Feldern gebastelt. Was aber, wenn man nicht nur das Video, sondern dazu die komplette Playlist mitsamt aller zur Serie gehörenden Videos auf die eigene Webseite bannen möchte? Vielen Dank an Chris für den zur Frage leitenden Kommentar. 

Warum eigentlich nicht gleich so?

Die Grundidee hinter der Entscheidung nicht auf die YouTube-eigene Playlist-Funktion zurückzugreifen rührt daher, dass wir unsere Videos mittels der WordPress-Kategorien selbst ordnen und als Serie darstellen wollen. Zugegeben, unser YouTube-Player bietet bisher noch nicht viel in diese Richtung. Ich finde aber, dass das Einbetten der großen Playlist am Ende neben Spielereien wie einer möglichen Folgen-Navigation, vielleicht zuviel des guten sein könnte.

Eventuell versuche ich das in der Praxis aber auch mal aus. Außerdem gibt es vielleicht ja auch Personen, denen das so bereits für ihren Zweck reichen würde. Deshalb im Folgenden in Anlehnung auf den bisher erschaffenen YouTube-Player eine mögliche Variante dessen.

Die Idee

Das Einbetten eines Videos inklusive der dazugehörigen Playlist ist nicht aufwendiger als das Einbetten eines Videos alleine. Wir müssen lediglich an die Stelle, wo auch die ID des jeweiligen Videos im Quellcode Platz findet, mit einem „?list=“ die ID der passenden Playlist anhängen.

Das Video sollte sich dazu auch wirklich innerhalb dieser Playlist befinden und man sollte die Playlist innerhalb den Einstellungen als Haupt-Playlist festlegen. Sonst könnte es zu Problemen oder Fehlern kommen. Da es aber weiter in der Richtung nichts zu beachten gilt, sollte das doch machbar sein.

Wir könnten nun – wie wir das bereits mit der Video ID handhaben – die Playlist ID mithilfe eines benutzerdefinierten Feldes in jedem Artikel abspeichern und an der richtigen Position auslesen lassen. Dies wäre aber nur sinnvoll, wenn wir nur wenige, einzelne Videos mit einer Playlist versehen möchten. Sonst wäre es einfach zu aufwendig, das für alle Videos einzeln machen zu müssen, wie es bei der Video ID sinngemäß sein muss.

Die Playlist ID ist aber konstant, für jeden Artikel der einer Playlist angehört, bleibt diese gleich. Hier kommt der Let’s Play Gedanke ins Spiel: Alle Videos einer Let’s Play-Serie möchten wir ja in der selben Kategorie, die wir nach dem Spieltitel benannt haben, unterbringen. Wir können an geeigneter Stelle also auch einfach eine Abfrage der Kategorie einfügen und bei der passenden Kategorie die Playlist übergeben. Für unser System hätten wir also schon eine Lösung!

youtube playlists

So sieht’s aus: Die YouTube Playlisten-Funktion in unserem Player.

Die Umsetzung

Was wir dafür jetzt machen müssen, benötigt in der Grundform nur ein paar Zeilen, die wir zum YouTube Player in seiner ursprünglichen Version hinzufügen müssen.

<? // YouTube Player
	$youtube_IDs = get_post_custom_values( 'youtube_id' );
   // Erweiterung 
     $category = get_the_category(); 
	 switch($category[0]->cat_ID){
		 case "3": 
		 	$playlist_ID = "PL2K6HRX6WSspmySGuf7uefUJQ_G-kUKPp";
		 break;
		// ...
	 }
	// Ende der Erweiterung
	if(is_single() && $youtube_IDs){
  ?>
<div id="youtube-player">
        <iframe width="1040" height="585" src="//www.youtube.com/embed/<? echo $youtube_IDs[0]; /* + Erweiterung */ if($playlist_ID){ echo "?list=".$playlist_ID; }; /* Ende */ ?>" frameborder="0" allowfullscreen></iframe>
</div>
<? } ?>

Die Erweiterung ist als solche durch einen Kommentar im Quellcode gekennzeichnet. Kurz erklärt: Wir ermitteln die IDs der Kategorien des aktuellen Artikels und speichern diese in dem Array $category. Uns interessiert aber nur das erste (und geplant einzige) Feld dieses Arrays, also $category[0].

Wir verwenden dann eine Switch-Abfrage, um die erste Kategorie des Arrays (=> $category[0]) zu prüfen. Wenn ein Fall zutrifft, es sich also um eine für uns interessante Kategorie handelt, speichern wir die passende Playlist ID innerhalb der Variable $playlist_ID. Im Player selbst folgt dann noch die Prüfung, ob diese Variable gefüllt wurde. Falls ja, wird die Playlist wie gewünscht hinzugefügt.

Das bedeutet, wollen wir einer weiteren Kategorie eine Playlist zuordnen, müssen wir einen neuen Fall innerhalb dieser Datei manuell hinzufügen. Dazu ermitteln wir zuerst die ID der betreffenden Kategorie. Diese können wir wie im Beispiel zusammen mit der dazugehörigen Playlist ID (die man durch den Link dieser erhält) zu einem neuen Fall innerhalb des switches zusammensetzen. Sieht so aus:

...
	 switch($category[0]->cat_ID){
		 case "3": // ID der Kategorie
		 	$playlist_ID = "PL2K6HRX6WSspmySGuf7uefUJQ_G-kUKPp"; // Die Playlist ID
		 break;
		 case "42": // Gleiches Prinzip: Andere Playlist für andere Kategorie
		 	$playlist_ID = "PL2K6HRX6WSsql61LUbpXVqnYpIxfUQWFj";
		 break;
		// ...
	 }
...

In diesem Beispiel haben wir also für die Kategorien mit der ID 3 und 42 jeweils eine Playlist verknüpft. Weitere Informationen zur Einbindung und Verwenden des Quellcodes gibt es in der ursprünglichen Version.

Jens Jakob

Besitzer dieses Blogs.