Ein Blog über Code, Hardware und Co

Wordpress und Webentwicklung

PHP-Code Snippets und Ergänzungen bei WordPress Multisites

Oder: Wieso gibt es bei Multisites keinen Theme-Editor?

WordPress-Multisites sind ein Segen, wenn man mehrere WordPress-Webseiten betreibt. Egal wie viele Webseiten man betreibt, sie greifen alle auf einen WordPress-Code zurück. Das bedeutet man benötigt nur eine WordPress-Instanz und nur eine Datenbank. Das bietet Performance-Vorteile, aber vor allem muss ganz pragmatisch nur eine WordPress-Instanz gewartet und aktualisiert werden – und das gilt auch für Plugins.

Die Lösung in Kürze: Aufgrund der Funktionsweise eines Multisite-Netzwerks gibt es in Multisites KEINEN Theme-Editor. Es kann also kein Code über die functions.php auf einzelnen Seiten ergänzt werden. Als Lösung bieten sich Plugins wie "Code Snippets" an.

TL;DR: Was sind WordPress Multisites?

Mit dem Konzept der Multisites ermöglicht es WordPress auf nur einer laufenden WordPress-Instanz mehrere – voneinander getrennte – Webseiten zu betreiben. WordPress muss nur einmal installiert werden und benötigt nur eine Datenbank. Trotzdem können beliebig viele – voneinander getrennte – Webseiten erstellt und betrieben werden. Der sog. “WordPress-Core” sowie Theme-Dateien werden dann von allen darauf laufenden Webseiten geteilt.

Man kann sich das Ganze im Prinzip wie eine Sternförmige Topologie vorstellen. Die zentralen Bestandteile (der WordPress-Core) werden einmal bereitgestellt und dann von allen Webseiten (her als Computer dargestellt) genutzt und geteilt.

Bild 1: Schema eines Multisite Networks: Alle Webseiten (hier als Computer dargestellt) teilen sich einen Core (Darstellung als Server).

Wieso ist der Theme-Editor verschwunden?

Erkennt WordPress nun, dass es in einer Multisite-Umgebung läuft, wird der bisher bekannte Menüpunkt “Theme-Editor” ausgeblendet – es gibt ihn schlicht nicht mehr.

Vorher:

Nachher:

Wieso ist das so?

Der Menüpunkt ist nicht mehr vorhanden, da das Ändern von Themes über den Theme-Editor oder das Einfügen von Code-Snippets in die functions.php des jeweiligen Themes in Multisite Umgebungen keine gute Idee ist.

Der Architektur einer Multisite Umgebung zufolge werden auch die Theme-Dateien unter den einzelnen Webseiten geteilt. Das bedeutet, dass jede Änderung auf einer Webseite über den Theme-Editor würde gleichsam auf jeder anderen Webseite der Multisite-Umgebung wirksam, die das gleiche Theme nutzt.

Das ist in der Regel nicht gewollt und kann sogar ein erhebliches Sicherheitsrisiko darstellen: So kann ein Nutzer Funktionalitäten einbauen – auch schädliche – die gleichzeitig

Zusätzlich kann man über den Theme-Editor sämtliche Themes, die in der Umgebung verfügbar sind, bearbeiten. Das heißt in einer Multi-User-Umgebung könnten Nutzer einer Seite sogar Themes anderer Webseiten in dem gleichen Multisite-Network bearbeiten – der blanke Horror 😉

Die Nachteile auf einen Blick:

❌ Ein bearbeitetes Theme wird gleichzeitig für alle anderen Seiten bearbeitet

❌ Eine Änderung kann alle Webseiten des Netzwerks zerstören

❌ Bearbeitung Themes anderer Webseiten im Netzwerk möglich

Daher ist der Editor in Multisite-Umgebungen deaktiviert.

Die Lösung: Code einbinden und Themes/Snippets ergänzen

Gott sei dank gibt es, wie bei WordPress üblich eine feine und einfach Lösung.
Ein Plugin. Einfach das Plugin “Code Snippets” installieren und einzelnen Code nur auf jeweiligen Netzwerkseiten einbinden – ohne Themes oder PHP-Dateien überhaupt anfassen zu müssen.

Code Snippets installieren

Einfach über WordPress auf “Plugins installieren” gehen und nach “Code Snippets” suchen. Dann das Plugin installieren.

Code Snippets auflisten

Über den neuen Menüpunkt “Snippets” gelangt man zu den angelegten Snippets. Praktischerweise sind bereits Demo-Snippets angelegt, die die Funktionsweise demonstrieren.

Snippets ansehen/erstellen

Mit Klick auf ein Snippet kannst du den Inhalt einsehen und bearbeiten, bzw. mit Klick auf “Neues Snippet” ein neues Snippet erstellen.

Was explizit NICHT die Lösung ist

Bitte NIEMALS die “Sperrung” des Theme-Editors durch WordPress umgehen, indem du:

  • Theme-Files über FTP-Editierts
  • Theme-Files über die Konsole (SSH) editierst
  • Theme-Files über die Netzwerkverwaltung editierst (es sei denn, die Änderung ist für ALLE Seiten des Netzwerks gedacht).
  • WordPress vorgaukelst, es würde nicht in einer Multisite-Umgebung laufen
  • Auch ein Child-Theme und die anschließende Aktivierung des Editors ist keine Lösung!

Schreibe eine Antwort