web-dev-qa-db-fra.com

Page "Paramètres globaux" du plugin multisite

Je travaille sur un plugin qui sera installé dans une instance multisite.

Comment créer une seule page de paramètres visible au niveau "Administrateur réseau" uniquement - la plupart des guides que j'ai vus se rapportent à un plugin standard de niveau blog. Tous les liens vers des informations seraient utiles, sinon je vais simplement passer en revue les balises du site pour voir comment cela se passe là-bas.

[Mettre à jour]

On dirait que sitewide_tags utilise add_site_option, get_site_option et update_site_option, et ces fonctions utilisent wp_sitemeta. Cependant, d'après ce que je peux voir, il n'y a pas de support pour register_setting, add_setting, etc., vous devez donc obtenir et définir vos options manuellement.

24
anu

Pour référence

Pour créer des paramètres réseau ou globaux, vous devez procéder comme suit:

  • Ajouter une page de paramètres

    add_submenu_page( 'settings.php'... # cf options.php for blog level`
    
  • Ajouter une option globale

    add_site_option($key,$value)
    
  • Mettre à jour une option globale

    update_site_option($key,$value)
    
  • Obtenir une option de site

    get_site_option($key)
    

Les paramètres globaux sont enregistrés dans la table sitemeta (les paramètres individuels du blog sont enregistrés dans la table <blog_id>_options

  • Je pense que le Paramètres API fonctionne au niveau du blog - utilise donc la table des options, pas sitemeta. Donc, vous ne pouvez pas utiliser les groupes d’options et autres au niveau du réseau ( veuillez commenter si je me trompe )
6
anu

Lorsque vous utilisez add_submenu_page(), add_menu_page() etc. et que vous vous attendez à ce que les pages de paramètres apparaissent dans votre tableau de bord multisite, envisagez d'utiliser network_admin_menu hook au lieu de admin_menu

Exemple:

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

        ...
    )
}

Pour enregistrer les paramètres, vous pouvez utiliser network_admin_edit_{ACTION} action hook.

Référence: https://rudrastyh.com/wordpress-multisite/custom-tabs-with-options.html

0
Misha Rudrastyh

Eh bien, j'ai fait face au même besoin récemment, mais je ne connaissais pas non plus la réponse. Bien qu'il ne s'agisse pas d'une réponse explicite à votre question, vous pouvez également créer les pages d'options sous les options du blog principal et vérifier si le multisite est activé.

Ce n’est pas la solution idéale, mais si (comme moi) vous venez de créer un plug-in interne pour votre propre usage, il est réalisable. Il présente également l’avantage que toutes les fonctions habituelles des pages d’administration sont disponibles - qu’elles ne sont pas encore dans le contexte de la page d’administration du réseau global.

0
DavidJ