WordPress-Multisite – Liste mit Artikeln der Unterblogs

Nachdem sich der Arndt einige Male bei mir beschwert hat, dass er doch gerne auf „blogbasis.net“ eine Übersicht aller auf den Subblogs geschriebener Artikel haben würde, musste ich mir was einfallen lassen.

Im Endeffekt reicht ein wenig Template umcoden und die schöne WordPress Multisite API, um das gewünschte Feature umzusetzen.

Welches Template?

Zunächst stellte sich mir die Frage, welche Templatedatei man anpassen musste. Ich hatte nämlich vor, die „normale“ Hauptseite eines WordPressblogs mit eigenem Inhalt zu überschreiben.

Nach ein wenig stöbern im Template-Editor entschied ich mich für die „Hauptseitendatei (index.php)“.

Die Idee!

Dort findet man ein paar if-Konstrukte und einige Schleifen, um die entsprechenden Daten schön aufzubereiten. Genau diese Funktionalitäten brauchte ich. Nur wie kann man ohne weitere Mühe von einem Subblog auf die Posts der anderen Blogs zugreifen?

Nach ein wenig googeln entdeckte ich eine sehr nützliche Übersicht an WordPress-Multisite-Funktionalitäten: http://codex.wordpress.org/WPMU_Functions

Dort gab es eine Funktion namens „switch_to_blog($id)“. Diese Funktion behielt ich erstmal im Hinterkopf.

Das nächste Problem was sich stellte war folgendes: Da ich für alle Subblogs dasselbe Theme verwende, würde ich durch eine Änderung der „index.php“ auf allen Subblogs nur die Übersicht der Artikel zeigen. Das ist natürlich nicht gewollt. Nach ein wenig Debugging und weiteren Recherchen bzw. der oben verlinkten Dokumentation, entschied ich mich die verschiedenen Subblogs mittels „get_bloginfo(’name‘)“ zu unterscheiden.

Die Funktion liefert uns sehr viele nützliche Informationen über den gerade besuchten (Sub)blog. Da die Namen der Blogs eindeutig sind, konnte ich darüber die Unterscheidung laufen lassen, um die Übersicht nur auf „blogbasis.net“ anzeigen zu lassen.  Für die restlichen Blogs würde dann einfach der „else“-Zweig greifen, und alles ist gut.

Zuallerletzt musste ich noch eine umständliche Methode zum Auslesen bzw. Durchlaufen der einzelnen Posts schreiben, da die einfache „loop“ komischerweise nicht laufen wollte.

Der Code

Lange Rede, kurzer Sinn. Code-mäßig sieht die neue index.php dann so aus: (Nur der obere Teil sollte interessant sein. Der Rest bleibt nur der Vollständigkeit halber.)

[gist id=“8cab54003d119896f252″]

Fazit

Man sollte jetzt nicht mehr das Theme updaten, da sonst die Veränderungen wahrscheinlich verloren gehen :D

Ich denke, dass die Übersicht aller Unterbeiträge auf „blogbasis.net“ eine ganz gute Idee vom Arndt gewesen ist, und dass mir die Umsetzung halbwegs gelungen ist.

PS: Sorry für die Rechtschreibung, aber ich habe nicht nochmal drüber gelesen.

~Sebastian