"Globale" Einstellungsseite für Multisite-Plugin

24

Ich arbeite an einem Plugin, das in einer Instanz mit mehreren Standorten installiert wird.

Wie erstelle ich eine einzelne Einstellungsseite, die nur auf der Ebene "Netzwerkadministrator" sichtbar ist? Die meisten Anleitungen, die ich gesehen habe, beziehen sich auf ein Standard-Plugin auf Blog-Ebene. Beliebige Links zu Informationen wären nützlich, da ich sonst nur die Sitewide-Tags durchgehen werde, um zu sehen, wie es dort gemacht wird.

[Aktualisieren]

Sieht aus wie sitewide_tags Anwendungen add_site_option, get_site_optionund update_site_option, und diese Funktionen nutzen wp_sitemeta. Soweit ich sehen kann, gibt es jedoch keine Unterstützung für register_setting, add_setting usw., sodass Sie Ihre Optionen manuell abrufen und festlegen müssen.

anu
quelle

Antworten:

6

Als Referenz

Um Netzwerk- oder globale Einstellungen zu erstellen, müssen Sie folgende Schritte ausführen

  • Fügen Sie eine Einstellungsseite hinzu

    add_submenu_page( 'settings.php'... # cf options.php for blog level`
  • Fügen Sie eine globale Option hinzu

    add_site_option($key,$value)
  • Aktualisieren Sie eine globale Option

    update_site_option($key,$value)
  • Holen Sie sich eine Website-Option

    get_site_option($key)

Globale Einstellungen werden in der sitemetaTabelle gespeichert (einzelne Blogeinstellungen werden in der <blog_id>_optionsTabelle gespeichert

  • Ich denke, die Einstellungs-API funktioniert auf Blog-Ebene - verwendet also die Optionstabelle und nicht sitemeta. Sie können also keine Optionsgruppen oder ähnliches auf Netzwerkebene verwenden ( bitte kommentieren, wenn ich das falsch verstanden habe ).
anu
quelle
0

Nun, ich hatte in letzter Zeit das gleiche Bedürfnis, wusste aber auch keine Antwort. Obwohl Ihre Frage nicht explizit beantwortet wird, besteht eine Alternative darin, die Optionsseiten unter den Optionen des Hauptblogs zu erstellen und zu überprüfen, ob Multisite aktiviert ist.

Nicht der ideale Weg, aber wenn Sie (wie ich) nur ein internes Plugin für Ihren eigenen Gebrauch erstellt haben, ist es praktikabel. Es hat auch den Vorteil, dass alle üblichen Funktionen für Admin-Seiten verfügbar sind - was im Kontext der globalen Netzwerk-Admin-Seite noch nicht der Fall ist.

DavidJ
quelle
0

Wenn Sie usw. verwenden und erwarten add_submenu_page(), add_menu_page()dass die Einstellungsseiten in Ihrem Dashboard für mehrere Standorte angezeigt werden, ziehen Sie in Betracht, network_admin_menuHook anstelle von zu verwendenadmin_menu

Beispiel:

add_action( 'network_admin_menu', 'network_settings_page' );
function network_settings_page(){
    add_submenu_page(

        ...
    )
}

Zum Speichern von Einstellungen können Sie den network_admin_edit_{ACTION}Aktions-Hook verwenden.

Referenz: https://rudrastyh.com/wordpress-multisite/custom-tabs-with-options.html

Mischa Rudrastyh
quelle