Wie passe ich mein Plugin an Multisite an?
Ich habe viele plugins, die ich schrieb für WordPress, und jetzt will ich anpassen MU.
Was sind die überlegungen /best-practices /workflow /Funktionen /Fallstricke, dass ich Folgen /vermeiden /anpassen, um 'upgrade' meine plugins zu unterstützen, auch Multisite-Installationen?
Beispielsweise, aber nicht beschränkt auf:
- Enqueue-scripts/registrieren
- Incuding Dateien (php, Bilder)
- Pfade für eigene Dateien-uploads
$wpdb
- Aktivierung, deinstallation, Deaktivierung
- Handhabung der admin bestimmte Seiten
Im Codex, es gibt manchmal Bemerkungen über Multisite in eine einzige Funktion, Beschreibung, aber ich fand keine one-stop-Seite, die Adresse mit diesem Thema.
InformationsquelleAutor der Frage Obmerk Kronen | 2012-12-19
Du musst angemeldet sein, um einen Kommentar abzugeben.
Als für einreihen und darunter, die Dinge gehen, wie normal. Plugin-Pfad und die URL sind die gleichen.
Ich nie behandelt alles rund um die upload-Pfade in Multisite und ich denke, normalerweise WP kümmert sich um diese.
$wpdb
Es ist eine Häufig verwendete snippet zum iterieren durch alle blogs:
Finden Sie viele Beispiele, wo
restore_current_blog()
stattswitch_to_blog( $original_blog_id )
. Aber hier ist, warumswitch
ist zuverlässiger: restore_current_blog() vs switch_to_blog().$blog_id
Ausführen einer Funktion oder Haken nach der blog-ID:
Oder vielleicht:
Installieren - Netzwerk-Aktivierung nur
Mithilfe der plugin-header -
Network: true
(siehe: Beispiel-Plugin) wird nur angezeigt, das plugin in die Seite/wp-admin/network/plugins.php
. Die mit diesem header in Ort, können wir die folgenden blockieren bestimmte Aktionen geschehen soll, wenn das plugin wird nur im Netzwerk.Deinstallieren
Zur (De)Aktivierung, es hängt vom jeweiligen plugin. Aber bei der Deinstallation, das ist der code, den ich verwenden, in der Datei
uninstall.php
:Admin-Seiten
1) Hinzufügen eines admin-Seite
Fügen Sie ein Menü "Verwaltung" überprüfen wir, ob
is_multisite()
und ändern Sie die Haken entsprechend:2) Überprüfen Sie für Multisite-dashboard und ändern Sie die admin-URL ein:
3) Abhilfe zu zeigen, interface-Elemente nur in Haupt-Website
Ohne erstellen einer Netzwerk-Admin Menü (Aktion Haken
network_admin_menu
), ist es möglich zu zeigen, ein Teil der plugin nur in der Haupt-Website.Begann ich, einige Multisite-Funktionalität in meinem größte plugin und habe die folgenden zu beschränken, einen Teil der plugin-Optionen auf der Haupt-Website. Das heißt, wenn das plugin aktiviert ist in eine sub-site, die option nicht.
bei dieser Suche wieder, vielleicht es sein kann, einfach:
is_multisite() && is_super_admin() && is_main_site()
. Beachten Sie, dass die letzten zwei zurücktrue
im einzelnen Websites.Dann:
4) Sammlung von nützlichen Haken und Funktionen.
Haken:
network_admin_menu
,wpmu_new_blog
,signup_blogform
,wpmu_blogs_columns
,manage_sites_custom_column
,manage_blogs_custom_column
,wp_dashboard_setup
,network_admin_notices
,site_option_active_sitewide_plugins
,{$hook}admin_menu
Funktionen:
is_multisite
,is_super_admin
is_main_site
,get_blogs_of_user
,update_blog_option
,is_network_admin
,network_admin_url
,is_network_only_plugin
PS: ich eher den link zu WordPress Antworten, als der Codex, da gibt es sicherlich noch mehr Beispiele für funktionierenden code.
Beispiel-plugin
Ich habe gerade rollte ein Multisite-plugin, Netzwerk Deaktiviert, aber Anderweitig Aktiv, und machte eine nicht arbeiten wieder kommentierte version Balg (siehe GitHub für das fertige voll funktionierende version). Das fertige plugin wird rein funktional, es gibt keine Einstellungen-Schnittstelle.
Beachten Sie, dass der plugin-header hat
Network: true
. Es verhindert, dass das plugin von zeigt an untergeordneten Standorten.Andere Ressourcen - e-books
Nicht direkt mit plugin-Entwicklung, sondern eine Art unerlässlich, um Multisite-management.
Die e-Bücher sind geschrieben von nicht weniger als zwei Riesen Multisite: Mika Epstein (aka Ipstenu) und Andrea Rennick.
InformationsquelleAutor der Antwort brasofilo