Página de configurações 'globais' para plug-in multissite

24

Estou trabalhando em um plug-in que será instalado em uma instância multisite.

Como crio uma única página de configurações que é visível apenas no nível "Administrador de rede" - a maioria dos guias que eu vi estão relacionados a um plug-in no nível do blog padrão. Qualquer link para informações seria útil, caso contrário, acabarei passando por tags em todo o site para ver como elas estão sendo feitas lá.

[Atualizar]

Parece que sitewide_tags usa add_site_option, get_site_optione update_site_option, e essas funções usam wp_sitemeta. No entanto, pelo que posso ver, não há suporte para register_setting, add_setting, etc., portanto você precisa obter e definir suas opções manualmente.

anu
fonte

Respostas:

6

Como referência

Para criar configurações globais ou de rede, faça o seguinte

  • Adicionar uma página de configurações

    add_submenu_page( 'settings.php'... # cf options.php for blog level`
  • Adicionar uma opção global

    add_site_option($key,$value)
  • Atualizar uma opção global

    update_site_option($key,$value)
  • Obter uma opção de site

    get_site_option($key)

As configurações globais são salvas na sitemetatabela (as configurações individuais do blog são salvas na <blog_id>_optionstabela

  • Eu acho que a API de configurações funciona no nível do blog - então usa a tabela de opções, não o sitemeta. Portanto, você não pode usar grupos de opções e similares no nível da rede ( por favor, comente se eu entendi errado )
anu
fonte
0

Bem, recentemente enfrentei a mesma necessidade, mas também não sabia a resposta. Embora não seja uma resposta explícita à sua pergunta, uma alternativa é apenas criar as páginas de opções nas opções do blog 'principal' e verificar se o multissite está ativado.

Não é a maneira ideal, mas se (como eu) você estava apenas criando um plug-in interno para seu próprio uso, é viável. Ele também tem a vantagem de todas as funções usuais das páginas de administrador estarem disponíveis - o que ainda não está no contexto da página de administração da rede global.

DavidJ
fonte
0

Quando você usa etc add_submenu_page(), add_menu_page()e espera que as páginas de configurações apareçam no painel multissite, considere usar network_admin_menugancho em vez deadmin_menu

Exemplo:

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

        ...
    )
}

Para salvar as configurações, você pode usar o network_admin_edit_{ACTION}gancho de ação.

Referência: https://rudrastyh.com/wordpress-multisite/custom-tabs-with-options.html

Misha Rudrastyh
fonte