Plugin-Entwicklung: WPMU oder WP?

7

Ich dachte, welche Probleme könnte ich haben, wenn ich ein Plugin von WPMU nach WP portiere oder umgekehrt.

Angenommen, ich habe ein Plugin von Grund auf neu entwickelt und wollte, dass dieses Plugin mit beiden kompatibel ist. Soll ich mit WPMU oder WP beginnen?

Damien Roche
quelle
1
Wenn die Antworten Ihnen geholfen haben, sollten Sie eine davon akzeptieren. Es sieht nicht so aus, als hätten Sie Antworten auf eine der Fragen akzeptiert, die Sie gestellt haben, aber es ist ein wesentlicher Bestandteil des Prozesses auf dieser Website und etwas, das Sie tun sollten. Wenn Ihnen keine der Antworten geholfen hat, können Sie Kommentare posten, in denen Sie nach genaueren Informationen fragen.
Ian Dunn

Antworten:

8

Sie müssen in beiden Setups testen, da sie sich in vielen Situationen unterschiedlich verhalten. Einige der bemerkenswertesten Unterschiede sind:

  1. Wenn Sie einen Aktivierungsrückruf registrieren, müssen Sie überprüfen, ob die Aktivierung netzwerkweit war. Wenn dies der Fall ist , führen Sie die Aktivierungslogik für alle Blogs aus und nicht nur für das aktuelle.
  2. Wenn das Plugin über das Netzwerk aktiviert ist, wird der reguläre Aktivierungsrückruf nicht ausgelöst, wenn neue Blogs hinzugefügt werden. Sie müssen daher einen zusätzlichen Rückruf erstellen, der sich in die wpmu_new_blogAktion einfügt . Es muss zum neuen Blog wechseln, die Aktivierungslogik ausführen und dann das aktuelle Blog wiederherstellen. Das $iddes neuen Blogs wird als erster Parameter an den Handler übergeben.
  3. Wenn Sie einen benutzerdefinierten Beitragstyp erstellen und möchten, dass das Meta-Feld "Ausgewähltes Bild festlegen" angezeigt wird, müssen Sie sicherstellen, dass in der Einstellung "Medien-Upload-Schaltflächen" das Kontrollkästchen "Bilder" aktiviert ist. Sie können es verwenden get_site_option( 'mu_media_buttons' ), um es zu überprüfen und update_site_option()einzustellen.
  4. Der Pfad zum Upload-Verzeichnis ist unterschiedlich, aber Sie werden in Ordnung sein, solange Sie immer wp_upload_dir () anstelle der Konstanten verwenden.
  5. Jedes Blog verfügt über eine eigene Kopie der meisten Datenbanktabellen, denen die Blog-ID vorangestellt ist. Normalerweise müssen Sie nichts Besonderes tun, solange Sie die API für die Interaktion mit der Datenbank verwenden - was Sie sollten, wann immer dies möglich ist.
  6. Die Benutzer- und Usermeta- Tabellen sind die Ausnahme; Sie werden in allen Blogs geteilt.
  7. Vor kurzem gab es einige WP-Cron-Fehler [ 1 , 2 ], die nur Jobs in MultiSite-Installationen betrafen.

Sie können switch_to_blog () verwenden, wenn Sie vorübergehend mit API-Funktionen auf die Daten eines anderen Blogs zugreifen müssen, und dann restore_current_blog () , um zurückzuschalten.

Sie können ein vollständiges Beispiel für die Aktivierungsfunktionen sehen, indem Sie die Quelle meines Plugin-Skeletts durchsuchen .

Ian Dunn
quelle
Keine Meinung zur aktuellen Aktivierungsmechanik, aber 2,3,4 sollte absolut keinen Unterschied machen, wenn geeignete APIs verwendet werden. Ansonsten ist es das Problem, es falsch zu machen, nicht das Problem der Unterschiede zwischen MS und Nicht-MS.
Rarst
Nun ja, das habe ich zweimal erwähnt;) Aber die Leute benutzen die API nicht immer, auch wenn sie sollten, also muss es noch gesagt werden. Dies kann auch in Fällen von Kanten einen Unterschied machen, z. B. wenn Sie eine eigene Datenbanktabelle erstellen oder einen benutzerdefinierten Upload-Ordner für bestimmte Dateien und den Standard-Upload-Ordner für andere verwenden müssen. Es gibt immer noch einige Szenarien, in denen die Verwendung der API dem Versuch gleicht, einen runden Stift in ein quadratisches Loch zu stecken, wenn auch nur wenige.
Ian Dunn
4

Es gibt keinen Unterschied.

Von http://mu.wordpress.org/

WordPress MU ist kein separates Projekt mehr. Es wird als Teil des Hauptzweigs von WordPress unter dem Namen Multisite oder MS weiterentwickelt.

Verwenden Sie während der Entwicklung eine Installation mit mehreren Standorten, da die Dateiverwaltung und die Pfade manchmal etwas schwierig sind.

Fuxia
quelle
1
-1 weil die Antwort zwar technisch korrekt ist, aber irreführend. Nur weil sie Teil derselben Codebasis sind, heißt das nicht, dass sie identische Ausführungspfade haben. sie tun es nicht. Auch auf der Prüfung nur WPMS ist unzureichend , weil es wird Fehler, die nur in Standard - WP auftauchen , die nicht auftauchen in MS. Wenn dies bei 0 wäre, hätte ich es nicht herabgestimmt, aber ich denke, das Sitzen bei +4 gibt den Hinweis, dass es eine richtige Antwort ist, und ich denke nicht, dass es das ist.
Ian Dunn
-1

Wenn Sie noch nie ein Plugin erstellt haben und planen, eines für das WordPress-Repository freizugeben, wird es Ihnen schwer genug fallen, alle Ihre WP-Fehler zu beheben, um sich überhaupt um die WPMU-Kompatibilität zu sorgen.

Gehen Sie zuerst mit WP und lernen Sie es von innen und außen. Dann können Sie lernen, was ein WPMU-Plugin von einem WP-Plugin unterscheidet.

Ein WP-Plugin ist ein Plugin, das nicht mit WP Multi-Sites kompatibel ist. Es gibt tatsächlich eine Menge Dinge, die Sie über Plugins verstehen müssen, um überhaupt die WPMU-Entwickleranforderungen zu verstehen, denen Sie gegenüberstehen.

E-Commerce-Berater
quelle
Gibt es heutzutage überhaupt ein "WPMU-Plugin"? Es ist das gleiche WP, der einzige Unterschied wäre die Multisite-spezifische Funktionalität, und es scheint nicht so, als ob es sich um eine solche Frage handelt. Jedes (richtig codierte) Plugin sollte in Multisite einwandfrei funktionieren - Ein WP-Plugin ist ein Plugin, das nicht mit der Anweisung WP Multi-Sites kompatibel ist, macht für mich keinen Sinn.
Rarst
Es tut mir leid, dass diese Aussage für Sie keinen Sinn ergibt. Da ich jedes Jahr Hunderte von Plugins entwickle, denke ich, dass ich weiß, wovon ich spreche. Sie können ganz einfach ein Plugin entwickeln, das eine WPMU-Installation zum Absturz bringt und bei einer WP-Installation einwandfrei funktioniert. Ja, diese beiden Systeme sind jetzt zusammengeführt, aber die Funktion ist völlig unterschiedlich. Es muss nicht nur an WPMU-spezifischen Funktionen mangeln. kursiv Jedes (richtig codierte) Plugin sollte in Multisite funktionieren. Gut kursiv Auch wenn Sie sagen, dass es funktionieren sollte, weil Sie keine Ahnung haben.
E-Commerce-Berater
1
Ich stimme Jonathon zu und spreche auch aus persönlicher Erfahrung. Damit ein Plugin mit WPMS funktioniert, sind zusätzliche Anstrengungen erforderlich, um bestimmte Probleme in der WPMS-Umgebung zu beheben. Abhängig von Ihrem Plugin bedeutet dies möglicherweise nur die netzwerkweite Aktivierung, kann aber auch andere Aufgaben umfassen, z. B. das Aktivieren von Medienschaltflächen, die in WPMS standardmäßig deaktiviert sind (und in WP standardmäßig aktiviert sind). Es gibt auch Randfälle, in denen Fehler nur in WPMS usw. auftreten. @Rarst, ich fordere Sie auf, 10 zufällige neu veröffentlichte Plugins aus dem Repo herunterzuladen, sie über das Netzwerk zu aktivieren und zu überprüfen, wie viele perfekt funktionieren.
Ian Dunn