Wie mache ich mein WordPress-PlugIn für MultiSite kompatibel? - Guru 2.0
Wie mache ich mein WordPress-PlugIn für MultiSite kompatibel?

Wie mache ich mein WordPress-PlugIn für MultiSite kompatibel?

Brunnen vor dem Pariser Rathaus, Foto: microble.eu

Brunnen vor dem Pariser Rathaus, Foto: microble.eu

Diesmal etwas für alle die gerne ein wenig programmieren. Für kurzem ist die Frage aufgetaucht, wie man ein PlugIn auf einer MultiSite-Installation aktivieren kann. Falls das PlugIn nicht dafür geeignet ist, hat man hier bestimmte Schwierigkeiten. Denn prinzipiell werden manche Funktionen eines PlugIns nur bei der ersten Aktivierung ausgeführt. Das ist ja kein Problem, wenn du nur eine Seite hast. Aber bei der MultiSite-Variante von WordPress aktivierst du das PlugIn ja öfters – theoretisch zumindest. Denn wenn es nicht dafür ausgelegt ist, funktioniert das PlugIn nur bei einer Seite. Eigentlich hätte WordPress dafür bestimmte Hooks und Routinen vorgesehen, aber nicht jeder benutzt diese oder hat an eine MultiSite-Installation gedacht.

In einem Standard-Plugin verwendest du die Funktionen register_activation_hook(), register_deactivation_hook() und register_uninstall_hook() um es in die WordPress-Installation zu integrieren. Das sind auch noch die gleichen Methoden für die MultiSite-Installation. Doch wie sie das PlugIn integrieren funktioniert ein wenig anders.

Aktiveren und Deaktivieren

Wenn ein PlugIn installiert wird, fügt es Optionsseiten, Voreinstellungen und ein paar andere Kleinigkeiten in die Installation ein. Dies ist für einen einzelnen Blog kein Problem. Aber bei einer Multisite-Installation muss jeder einzelne Blog angesprochen werden und diese Installationsaufgaben müssen auch für jeden einzelnen Blog durchgeführt werden. Natürlich nur, wenn das PlugIn für das gesamte Netzwerk  aktiviert wird.

Um das zu erreichen brauchst du zwei verschiedene Funktionen für das Aktivieren. Eine “alte” welche die üblichen Arbeiten erledigt und eine übergeordnete Funktion welche von register_activation_hook() aufgerufen wird um die Umgebung zu erkennen und die passende Aktivierungsfunktion aufruft. Diese Funktion prüft auch mit dem Conditional-Tag is_multisite() ob es eine MultiSite-Installation ist. Mit $network_wide wird überprüft ob die Installation für alle Blogs erfolgen soll. Das ganze kann jetzt wie im folgenden Beispielcode aussehen. Ich gehe mal davon aus, dass der NameSpace des PlugIns, so wie ich es fast immer verwende, guru20 ist.

Das obige Beispiel gilt für das Aktivieren des PlugIns. Wenn es auf eine MultiSite-Seite stoßt aktiviert es sich für alle Blogs, sonst nur für den aktiven. Ähnliche Funktionen musst du jetzt auch für das Deaktivieren oder auch Deinstallieren erstellen.

Funktionen für MultiSite

Das sind jetzt zwar keine speziellen Funktionen für PlugIns. Aber sie sollten in MultiSite-Installationen von deinem PlugIn berücksichtigt werden.

Optionen speichern

Jedes PlugIn speichert seine Optionen, meistens zumindest. Bei einer Einzelinstallation ist das relativ einfach. Aber bei einer MultiSite-Installation musst du aufpassen, dass du für jeden einzelnen Blog die passenden Optionen und Daten speicherst. Oder sollen diese Werte für das ganze Netzwerk gelten und auch dort gespeichert werden? Je nach dem verwendest du für den einzelnen Blog wie gewohnt get_option() und get_transient(). Aber für die netzwerkweite Verwendung der Daten musst du get_site_option() und set_site_transient() einsetzen. Ich zeige dir ein kleines Beispiel wie du damit umgehen kannst.

Menü für SuperAdmins

Ganz interessant ist der Hook  network_admin_menu. Damit kannst du das Menü für die SuperAdmins anpassen. Ein gutes Beispiel ist eine Optionsseite deines PlugIns, in dem die Adminsitratoren Werte für das gesamte Netzwerk festlegen können.

Damit sind wir am Ende dieser Anleitung. Ich hoffe der Guru 2.0 konnte dir ein wenig helfen. Falls du Fragen, Probleme oder Anregungen hast: Da links unten kannst du auf Kommentare klicken und schon los schreiben. Ich würde mich freuen!

Blogheim.at Logo
Diese Website verwendet Cookies - nähere Informationen dazu finden Sie in unserer „Datenschutzerklärung“. Klicken Sie auf „Ich stimme zu“, um Cookies zu akzeptieren und unsere Webseite zu besuchen, oder klicken Sie auf „Cookie-Einstellungen“, um Ihre Cookies selbst zu verwalten.