Pagina delle impostazioni "globali" per plugin multisito


24

Sto lavorando a un plugin che verrà installato in un'istanza multisito.

Come faccio a creare una singola pagina di impostazioni visibile solo a livello di "Amministratore di rete" - la maggior parte delle guide che ho visto si riferiscono a un plug-in standard a livello di blog. Qualsiasi collegamento alle informazioni sarebbe utile, altrimenti finirò semplicemente per passare attraverso i tag di tutto il sito per vedere come viene fatto lì.

[Aggiornare]

Assomiglia sitewide_tags usi add_site_option, get_site_optione update_site_option, e queste funzioni utilizzano wp_sitemeta. Tuttavia, da quello che posso vedere, non c'è supporto per register_setting, add_setting, ecc, quindi devi ottenere e impostare manualmente le tue opzioni.

Risposte:


6

Come referenza

Per creare impostazioni di rete o globali, è necessario effettuare le seguenti operazioni

  • Aggiungi una pagina delle impostazioni

    add_submenu_page( 'settings.php'... # cf options.php for blog level`
  • Aggiungi un'opzione globale

    add_site_option($key,$value)
  • Aggiorna un'opzione globale

    update_site_option($key,$value)
  • Ottieni un'opzione per il sito

    get_site_option($key)

Le impostazioni globali vengono salvate nella sitemetatabella (le impostazioni dei singoli blog vengono salvate in<blog_id>_options tabella

  • Penso che l' API delle impostazioni funzioni a livello di blog, quindi utilizza la tabella delle opzioni, non sitemeta. Quindi, non è possibile utilizzare gruppi di opzioni e simili a livello di rete (si prega di commentare se ho sbagliato )

0

Bene, ho affrontato lo stesso bisogno di recente, ma non conoscevo neanche la risposta. Sebbene non sia una risposta esplicita alla tua domanda, un'alternativa è semplicemente creare le pagine delle opzioni sotto le opzioni del blog "principale" e verificare se il multisito è abilitato.

Non è il modo ideale, ma se (come me) stavi solo creando un plug-in interno per il tuo uso, è fattibile. Ha anche il vantaggio che sono disponibili tutte le normali funzioni per le pagine di amministrazione, che non sono ancora nel contesto della pagina di amministrazione della rete globale.


0

Quando usi add_submenu_page(), add_menu_page()ecc. E ti aspetti che le pagine delle impostazioni vengano visualizzate nella dashboard multisito, considera l'utilizzo di network_admin_menuhook anzichéadmin_menu

Esempio:

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

        ...
    )
}

Per salvare le impostazioni è possibile utilizzare il network_admin_edit_{ACTION}gancio di azione.

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

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.