web-dev-qa-db-de.com

"Globale" Einstellungsseite für das Multisite-Plugin

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 so aus, als ob sitewide_tags add_site_option, get_site_option und update_site_option verwendet. Diese Funktionen verwenden 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.

24
anu

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 Tabelle sitemeta gespeichert (einzelne Blogeinstellungen werden in der Tabelle <blog_id>_options gespeichert)

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

Wenn Sie add_submenu_page(), add_menu_page() usw. verwenden und erwarten, dass die Einstellungsseiten in Ihrem Dashboard für mehrere Standorte angezeigt werden, sollten Sie network_admin_menu hook anstelle von admin_menu verwenden.

Beispiel:

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

        ...
    )
}

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

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

0
Misha Rudrastyh

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.

0
DavidJ