Ein WordPress Plugin Multisite kompatibel machen

In letzter Zeit wurde ich mehrfach gefragt ob mein WordPress Plugin (Easy Code Placement) Multisite / Netzwerk fähig ist. Da dies bisher nicht der Fall war, hatte ich mich schlau gemacht was hierfür nötig ist. Eigentlich ist dies relativ einfach umzusetzen. Jedoch sind die Informationen die ich gefunden habe sehr undurchsichtig, nicht vollständig und meistens auf Englisch. Letzteres ist für mich kein Problem. Aber um anderen das ganze einfacher zu gestalten, folgt nun meine Anleitung hierzu.

Wie funktioniert ein WordPress Multisite Netzwerk?

Multisite wurde mit der WordPress Version 3.0 eingeführt. Diese Funktion gibt einem die Möglichkeit, verschiedene WordPress Webseiten mit einer einzigen WordPress Installation zu erstellen. Wenn ein Multisite Netzwerk erstellt wird, werden verschiedene Tabellen in der Datenbank angelegt die von allen Webseiten genutzt werden. Zusätzlich bekommt jede Webseite ein paar eigene Tabellen in der Datenbank in denen zum Beispiel die Beiträge und Kommentare gespeichert werden. Diese Tabellen werden unter einer nur einmal vorkommenden blog_id gespeichert die aus Zahlen besteht. Die Standard WordPress Installation nutzt „wp_“. Eine zweite Multisite Installation zum Beispiel „wp2_“. Mehr Informationen zur WordPress Datenbank gibt es unter https://codex.wordpress.org/Database_Description (Englisch).

datenbankstruktur

Was muss beachtet beziehungsweise am Plugin angepasst werden?

  • Bei der Installation des Plugins braucht jede Webseite die neuen Tabellen des Plugins
  • Bei dem hinzufügen einer Webseite müssen die Tabellen für das Plugin angelegt werden
  • Bei dem löschen einer Webseite müssen die Tabellen des Plugins gelöscht werden
  • Bei der Deinstallation des Plugins müssen von allen Webseite die Tabellen gelöscht werden werden

Die Installation des Plugins

Normalerweise sieht es wie folgt aus, wenn wir der Datenbank während der Installation des Plugins Tabellen hinzufügen möchten. Bitte beachten: Die database() Funktion wird bei den weiteren Funktionen verwendet und nicht verändert!

Damit alles auch bei einer Multisite / Netzwerk Installation korrekt funktioniert, müssen wir dies nun anpassen. Den „register_activation_hook“ ändern wir etwas und wir fügen eine neue Funktion hinzu.

Wenn eine Webseite hinzugefügt wird

Um einer neuen Webseite die benötigten Tabellen hinzuzufügen, brauchen wir folgendes. Bitte beachten: Der Teil „plugin-ordner-name/plugin-haupt-datei.php“ muss mit euren Plugin Daten angepasst werden!

Wenn eine Webseite gelöscht wird

Um beim löschen einer Webseite die Tabellen von uns aus der Datenbank zu entfernen, müssen wir folgendes hinzufügen.

Die Deinstallation des Plugins

Normalerweise sieht es wie folgt aus, wenn wir während der Deinstallation des Plugins Tabellen löschen möchten. Bitte beachten: Die uninstall() Funktion wird bei der nächsten Funktion verwendet und nicht verändert!

Damit alles auch bei einer Multisite / Netzwerk Deinstallation korrekt funktioniert, müssen wir dies nun anpassen. Den “register_uninstall_hook” ändern wir etwas und wir fügen eine neue Funktion hinzu.

Hinterlasse einen Kommentar

  • antworten Meine WordPress Plugins 2016 – Randnotizen.org ,

    […] gibt immer wieder mal Beiträge von mir, in denen ich euch Teile von Code zeige. Zum Beispiel Ein WordPress Plugin Multisite Kompatibel machen. Damit der Code auch schön aussieht und gut strukturiert ist, verwende ich den Crayon Syntax […]