Página de configuración 'global' para el complemento multisitio

24

Estoy trabajando en un complemento que se instalará en una instancia multisitio.

¿Cómo puedo crear una página de configuración única que sea visible solo en el nivel "Administrador de red"? La mayoría de las guías que he visto se relacionan con un complemento de nivel de blog estándar. Cualquier enlace a la información sería útil, de lo contrario, terminaré revisando las etiquetas de todo el sitio para ver cómo se hace allí.

[Actualizar]

Parece que usa sitewide_tags add_site_option, get_site_optiony update_site_option, y estas funciones usan wp_sitemeta. Sin embargo, por lo que puedo ver, no hay soporte para register_setting, add_setting, etc., por lo que debe obtener y configurar sus opciones manualmente.

anu
fuente

Respuestas:

6

Como una referencia

Para crear configuraciones de red o globales, debe hacer lo siguiente

  • Agregar una página de configuración

    add_submenu_page( 'settings.php'... # cf options.php for blog level`
  • Agregar una opción global

    add_site_option($key,$value)
  • Actualizar una opción global

    update_site_option($key,$value)
  • Obtenga una opción de sitio

    get_site_option($key)

La configuración global se guarda en la sitemetatabla (la configuración individual del blog se guarda en la <blog_id>_optionstabla

  • Creo que la API de configuración funciona a nivel de blog, por lo que usa la tabla de opciones, no sitemeta. Por lo tanto, no puede usar grupos de opciones y similares a nivel de red ( comente si me equivoqué )
anu
fuente
0

Bueno, recientemente enfrenté la misma necesidad, pero tampoco sabía la respuesta. Si bien no es una respuesta explícita a su pregunta, una alternativa es simplemente crear las páginas de opciones en las opciones del blog 'principal' y verificar si el multisitio está habilitado.

No es la forma ideal, pero si (como yo) solo estaba creando un complemento interno para su propio uso, es viable. También tiene la ventaja de que todas las funciones habituales para las páginas de administración están disponibles, que aún no están en el contexto de la página de administración de la red global.

DavidJ
fuente
0

Cuando use add_submenu_page(), add_menu_page()etc. y espere que las páginas de configuración aparezcan en su panel de control de múltiples sitios, considere usar network_admin_menuhook en lugar deadmin_menu

Ejemplo:

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

        ...
    )
}

Para guardar la configuración, puede usar el network_admin_edit_{ACTION}gancho de acción.

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

Misha Rudrastyh
fuente