Plugins Enabler (gestion des plugins d’un réseau WP3)

Travaillant actuellement sur la version network de WordPress 3.0, j’ai souhaité mieux maîtriser la mise à disposition des extensions pour les blogs de mon réseau. J’ai d’abord trouvé l’excellent plugin « Exclude Plugins » de itx, mais ce dernier ne collait pas précisément à mon besoin.

En fait, étant donné que j’utilise ce network comme une plateforme de social coding / développement d’extensions WordPress, il fallait que je puisse rendre disponible une liste bien déterminée d’extensions par blog. Ainsi le blog 1 disposerait de 3 extensions activables, le blog 2 de 2 autres. etc.

Du coup, comme il pleuvait cette aprèm j’ai décortiqué l’extension de itx pour l’adapter à mon besoin et j’ai donc écrit ce nouveau plugin :

Sélection du Blog pour lequel on souhaite définir la liste des plugins dispos

Sélection du blog

Je vous passe la phase d’activation de l’extension pour arriver au premier écran proposé. A l’aide du listing de blogs, il s’agit de cocher le bouton radio de l’id qui nous intéresse pour arriver sur la page de configuration des extensions pour ce blog.

Mise à dispo des extensions

Gestion des extensions

Nous y voilà! La liste des plugins (en dehors de ceux activés pour tout le réseau) avec un checkbox à côté de chacun d’entre eux. On clique sur le ou les checkbox qui nous intéressent, on valide et le tour est joué ;). Désormais dans son menu Extensions, le blog « random » trouvera une ligne : celle du plugin « Askimet ».

12 commentaires sur “Plugins Enabler (gestion des plugins d’un réseau WP3)

  1. Bonjour,

    Au détour de mes recherches, je suis tombé sur ton article.

    Je suis nouveau dans l’utilisation de WP, donc comme c’est un peu élaboré et récent comme architecture, j’aurai souhaité ton avis.
    Mon idée est d’avoir des plugins que je configure pour tout site (OU pour toute nouvelle installation de manière auto) tout en me permettant d’installer des plugins pour certains blogs (ex. lettre d’infos spécifique à un blog).
    J’ai testé le plugin de itx, et je souhaitais savoir si ton plugin pouvait être installé comme complément sans source de conflit.

    Bonne journée
    @+

    1. Salut Hervé,

      C’est vrai que j’avais pas tester la cohabitation entre exclude-plugins et plugins-enabler. Je viens de le faire et il n’y a aucun conflit de fonctions. Donc il est possible d’utiliser les deux plugins simultanément. Après qqes tests c’est pas top.. En gros si tu autorises une liste avec exclude-plugins, tu peux utiliser plugins-enabler pour autoriser une liste plus restreinte à certains blogs (ce qui n’est pas ce tu recherches, je penses).. Honnêtement : autant n’utiliser que plugins-enabler dans ces conditions 🙂 !!
      Voilà.. en espérant que ça te permette de choisir la meilleure solution pour toi 😉
      A+

  2. Bonjour,

    Merci d’avoir pris le temps de tester.
    Comme il n’y a pas de conflit, je n’ai pas compris ou cela coince. Le plus aurait peut-être une synthèse des 2 😉 pour éviter la redondance de code …

    Mais bon en continuant mes essais, je me suis aperçu que cela coinçait de manière plus importante ailleurs.
    J’imaginais 😉 !! (en tant que superadmin, en affectant un plugin à tous le réseau) que je n’aurai pas besoin de paramétrer chacun des plugin du réseau dans chacun des blogs).

    Exemple d’utilisation générale:
    – antivirus
    – Adminimize (pour permettre à chaque auteur d’un blog de n’avoir qu’un affichage restreint)
    – ….

    L’idée étant ultérieurement d’autoriser la création d’un réseau de blogs pour une thématique d’association. Hors comme c’est généré automatiquement, on ne peut pas être derrière chaque blog crée ??

    Est-ce que j’ai mal compris ou connais tu d’autres pistes pour réaliser cela ?

    Hervé
    PS: je n’ai pas eu d’alerte sur la réponse!?

    1. Salut Hervé,
      Je pense que le plugin de itx est très complet pour ceux qui souhaitent autoriser des listes de plugins pour tous les blogs. Pour ma part j’avais besoin de le faire blog par blog, donc j’ai écrit plugins enabler en vue de répondre à ce besoin. Lorsque je dis qu’il n’y a pas de conflit dans les fonctions et que potentiellement les plugins peuvent cohabiter, je fais référence au fait que si un nom de fonction est utilisé plus d’une fois ça génère une erreur php.
      En passant, je serais intéressé de savoir où « cela coinçait de manière plus importante ailleurs ».
      Ensuite s’agissant des plugins activés sur le réseau, ni plugins enabler ni exclude plugins ne s’en occupent dans la mesure où étant activés sur le réseau, l’administrateur d’un blog ne les voient pas dans sa liste d’extensions disponibles. Concernant le paramétrage blog par blog des plugins activés sur le réseau, j’avoue que je ne me suis pas penché sur le sujet dans la mesure où je n’active sur le réseau que des plugins paramétrés pour n’être activé que sur le réseau (ex : BuddyPress).
      Intuitivement, étant donné que beaucoup de plugins (pas forcément prévus pour être activés sur le réseau) stockent leurs données dans la table wp_options, j’imagine que leur activation sur le réseau n’engendre pas une copie des données sur wp_2_options, wp_3_options.. wp_n_options. Ainsi quand depuis le blog 2, le plugin en question recherche une option dans wp_2_options alors qu’elle est dans wp_options ben il ne la trouve pas 😉
      La fonction utilisée par les plugins est get_option(‘option_name’), tu peux éventuellement essayer de forcer à regarder dans wp_options du blog principal là où se trouve la donnée en remplaçant ces fonctions par get_blog_option(« 1 », ‘option_name’). Perso, je ferais plutôt un check dans wp_2_options puis chargerais la valeur de wp_option, comme ça si quelqu’un souhaite paramétrer différemment son blog, il peut le faire..
      en gros ça ressemblerait à
      <?php
      $option = get_option(‘option_name’);
      if(!$option) $option = get_blog_option(« 1 », ‘option_name’);
      ?>
      Cependant, je ne te conseille pas cette manipulation, autant laisser aux administrateurs le loisir de paramétrer leur blog et de faire éventuellement appel à toi pour les aider..

      Par ailleurs, cette manip ne sera pas forcément valable pour les plugins qui utilisent leur(s) propre(s) table(s) de données tels que ceux qui enregistrent des votes.. Généralement dans leur table ils mettent une liste de champs qui pourrait ressembler à table wp_vote = vote_id;post_id;vote_nbre. Or si 3 posts provenant de 3 blogs différents ont le même post_id et reçoivent tous un vote, tu obtiens 3 votes pour les 3 articles au lieu de 1 vote par article.. Idéalement, il faudrait que le plugin intègre un champ supplémentaire blog_id..
      Du coup pour ce type de plugin il vaut mieux laisser les administrateurs de blog les activer de leur côté car cela créera autant de tables que de blogs (wp_2_vote, wp_3_vote etc..)

      Pour finir : je te conseille d’activer sur le réseau uniquement les plugins qui sont prévus pour l’être et d’utiliser exclude plugins, plugins enabler ou autre pour contrôler les plugins que tu mets à disposition des administrateurs de blog. Ils seront ainsi libres de les activer ou non 😉

      A+

      PS : je n’utilise pas de plugin type subscribe to comments, c’est donc tout à fait normal !! si tu veux être averti de nouveaux commentaires sur ce post : rajoute « feed » à l’url et tu pourras t’abonner à son flux rss.

  3. Très utile pour une gestion fine de l’équipement fourni aux blogueurs de la plateforme. Sans ce genre d’outils, WP en multisite se transforme vite en usine à gaz.

    Comme buddypress d’ailleurs…
    Dès que le bourrin est un peu chargé, (forums des groupes activés, bp group document, group links, my-home, personnalisation du fil d’activité, systèmes d’invitation du welcom pack, etc), l’ensemble devient ingérable (pour l’admin de base comme moi, c’est certain). Pour l’utilisateur lambda qui vient de créer son compte, je t’en parle même pas.

    Je trouve qu’il manque encore sur buddypress une console d’administration digne de ce nom, qui intègre l’administration des composants, les fonctions de base du profil et des forums avec la gestion centralisée des BP plugins installés (au moins pour les groupes et les membres).

    En widgetisant les pages groupe, member, on pourrait avoir une gestion beaucoup plus simple de tous ces plugins, qui finiront bien tôt ou tard par se retrouver dans le core.

    De cette manière, on pourrait proposer aux adopters de BP des profils type d’utilisation correspondant chaque fois à une configuration différente des composants et des pages spécifiques BP.

    Non ?
    a+
    ls

  4. @LSM,

    En fait la présence d’environnement de config pour les plugins BuddyPress (ou WordPress) dépend de ceux qui les développent en fait.

    De mémoire BP Group Documents et BP Links en ont un, j’avais conçu BP Code Snippets avec une config également… D’un autre côté, l’API Group est conçue de telle manière à ce que des administrateurs de groupe puissent être autonomes dans leur gestion : ce qui me semble une bonne chose.

    Permettre une administration groupe/groupe poserait une difficulté lors de la phase de création du groupe. Pour pallier à cela, il faudrait que chacun des plugins utilisant l’API ne propose pas des écrans au moment de la phase de création, que l’admin soit alerté de la création d’un groupe pour que lui fasse le nécessaire pour autoriser ou non tel ou tel plugin… Cela me semble lourd 😉 A mon avis, le groupe est la propriété de son créateur pas de l’Administrateur. Après il faut imaginer des outils de « Report » pour éviter que ça dérape..

    S’agissant de l’admin de BuddyPress/WordPress Multi, ma liste de Noël ressemblerait plutôt à disposer de la possibilité d’importer une liste d’utilisateurs et de les affecter à des blogs, puis des groupes, mais je crois que 2 plugins combinés le font avec plus ou moins d’efficacité déjà…

    A+

  5. Bonjour,

    J’utilise ton plugin maintenant et j’aurai 2 suggestions :
    – modification du site principal (en effet je viens de m’apercevoir que l’on ne peut pas le faire sauf à l’installer sur tout le réseau, ce qui n’est pas forcément judicieux)
    – recherche sur le nom du site (ou peut-être plus compliqué email de l’admin du blog) pour pouvoir accéder à ces extensions.

    Merci encore pour ce plugin
    a+

Les commentaires sont fermés.