Jouons avec les « Member Types » dans nos communautés BuddyPress

Publié le

par

Crédits Photo : Play-Doh by Dennis Brekke, on Flickr

En janvier dernier, je vous proposais, un peu en « primeur » un morceau de code pour découvrir comment commencer à tirer profit de la fonctionnalité des « Member types » qui a été introduite dans la version 2.2 de BuddyPress.

Si vous n’avez pas suivi les actualités au sujet de cette fonctionnalité, voici un rapide résumé : les Member types sont un ensemble de terms regroupés dans la taxonomie bp_member_type.

Ces terms sont sauvegardés en base de données à partir du moment où vous avez affecté à l’un d’entre eux un utilisateur. L’ajout de ces « Member types » se fait à l’aide de l’utilisation d’une globale qui est initialisée grâce au recours à la fonction bp_register_member_type().

Les mécanismes d’intégration à la classe BP_User_Query pour pouvoir requêter les membres ayant tel ou tel type sont d’ores et déjà disponibles. Pour attacher un membre à un type, le profil étendu dans l’administration WordPress propose une nouvelle metabox à partir du moment où le ou les « Member types » ont été initialisés. De solides fondations sont donc en place, mais restent difficilement exploitables sans une certaine connaissance de BuddyPress.

Ces derniers jours, dans le cadre de mon « taf », j’ai eu une révélation entraînant une furieuse envie d’aller jusqu’au bout de mon idée et de me construire un plugin pour enrichir la fonctionnalité « Member types » et disposer de tout le nécessaire pour l’exploiter au maximum.

BuddyPress Member Types « extended » !

L’objectif de ce plugin est de proposer une « rustine » qui vous permettra de patienter jusqu’à ce que la Core Team ait fait évolué la fonctionnalité pour la rendre plus abordable par la plupart d’entre vous. Vous pouvez vous en servir tel que ou choisir de le « forker » pour l’adapter à vos besoins spécifiques.

Une interface pour initialiser les « Member types »

Le premier point qui m’a semblé intéressant : proposer une interface pour ajouter/modifier et supprimer des « Member types ». En effet, même si le code pour initialiser les « Member types » est super simple, il peut arriver que nous n’ayons pas accés au code source de notre instance WordPress sur un serveur en production. Ainsi cette petite interface évitera potentiellement de faire une « MEP » à chaque ajout/modification/retrait de « Member types ». En passant, si vous êtes des utilisateurs de la dernière version de Rendez-vous, cette interface doit vous être familière 🙂

Affecter des « Member types » à vos utilisateurs massivement !

Le deuxième point est, selon moi, essentiel lorsqu’on commence à avoir pas mal de membres dans sa communauté. Depuis l’administration des utilisateurs du site, vous aurez à votre disposition une liste déroulante pour massivement associé les membres sélectionnés à un « Member Type » particulier. En effet, si vous avez à visiter 147 profils étendus d’utilisateur (de l’Administration WordPress) pour réaliser cette association, cette petite fonctionnalité vous fera économiser un certains nombre de clics.

Un menu déroulant pour filtrer les membres côté front office

Pour le troisième point, direction le front office et plus précisément la page des membres de BuddyPress. Le plugin ajoutera un nouveau menu déroulant juste après l’onglet « Tous les membres » ou « Mes amis » si vous avez activé le composant « friends » de BuddyPress. En cliquant une première fois sur l’onglet « Member types » vous découvrez la liste des types disponibles avec le nombre d’utilisateurs affectés par type. En cliquant une nouvelle fois sur l’onglet « Member types » vous refermez le menu déroulant.

Afficher les « Core developers » de BuddyPress.

En cliquant sur l’un des items du menu déroulant, l’item sélectionné se déporte sur la droite et la liste des membres n’affichent que ceux qui sont affectés sur le « Member Type » activé.

Voilà, je vous passe certains détails, mais les fonctions clés du plugin ont été décrites !

Avantage de la fonctionnalité « Member types » pour une communauté

Lors du WordCamp Paris 2014, je vous avais parlé de la communauté que j’administre dans le cadre de mon activité professionnelle. Comme ce jour-là, je n’étais pas dans une forme olympique, vous pouvez parcourir mes slides ici, les plus curieux d’entre vous trouverons ma conférence sur WordPress.tv… Aujourd’hui je vais zoomer sur la manière dont notre « Répertoire » de membres va profiter des « Member types ». Je travaille dans un groupe composé de différentes « branches », elles-même pouvant parfois regrouper des filiales. Grâce aux « Member types », chacun des membres est désormais affecté à ce que nous avons appelé une entité (Groupe, branche ou filiale) et il devient possible de rechercher un expert selon son entité tout en se gardant la possibilité d’affiner la recherche.

La « carte de visite » de Mathieu dans le répertoire des membres.

Comme vous pouvez le voir, en utilisant le plugin évoqué dans le précédent chapitre, je suis en mesure de lister tous les membres affectés à l’entité « Groupe », ensuite je peux toujours les classer par ordre alphabétique et enfin affiner en lançant une recherche sur une fonction ou un élément nominatif.

La fiche membre intègre des informations supplémentaires importantes, que j’ai masquées ici : le service d’appartenance, la fonction et les coordonnées téléphoniques. C’est très important pour nous, car au delà du fait qu’on dispose d’un annuaire, cela nous permet d’identifier les personnes les plus à même de contribuer à un atelier (en réalité un groupe BuddyPress rebaptisé pour les besoins de la communauté). Ces ateliers disposent d’un composant spécifique similaire à BuddyPress docs grâce auquel les membres travaillent en mode brouillon sur les futurs contenus du « référentiel » qui est le principal objet du site intranet.

WorkMates et Rendez-vous (1.3-alpha) utilisent les member types !

Dans un contexte professionnel, le composant « friends » n’est pas pertinent, je l’ai donc désactivé. Aussi pour permettre aux membres de malgré tout pouvoir inviter d’autres membres à rejoindre les ateliers (qui sont majoritairement privés ou carrément masqués), nous utilisons le plugin WorkMates (que j’ai d’ailleurs créé!).

Nous utiliserons aussi le plugin Rendez-vous.. Pour être consistant vis à vis de notre répertoire de membres, il fallait donc que ces deux plugins intègrent également un moyen de filtrer les membres par entité! C’est déjà le cas pour WorkMates, s’agissant de Rendez-vous il faudra utiliser la version 1.3.0-alpha depuis son dépôt Github pour en profiter ou attendre la future 1.3 !

Pour conclure, nous allons procéder à une « MEP » très prochainement et il me tarde d’avoir les premiers retours des utilisateurs sur les évolutions apportées dans la fonctionnalité de recherche d’experts par entité.

Merci les « Member types », merci la Core Team de BuddyPress et en particulier merci Boone 🙂

19 réponses à “Jouons avec les « Member Types » dans nos communautés BuddyPress”

  1. Avatar de laurent

    Super plugin Imath (encore une fois). Gros potentiel avec cette fonctionnalité. Merci pour le bon travail !

    1. Avatar de imath

      Hello Laurent,
      Merci pour ton feedback 🙂

  2. Avatar de laurent

    Bon en vrac qqs suggestions pour l’évolution de ce plugin :
    – proposer/imposer le choix d’un member_type dans les champs de profil lors de l’inscription,
    – afficher le member_type sur la page de profil de l’utilisateur, sous son nom
    – remplacer l’éternel widget les plus actifs, les + populaires, les plus récents (qui a peu d’intérêt en fait) par des onglets présentant les users par member_type

    Voualou
    a+
    ls

    1. Avatar de imath

      Intéressant, merci pour ces suggestions 🙂

  3. Avatar de laurent

    Pardon, je n’avais pas vu l’effet sur la page de profil du user

  4. Avatar de Florent
    Florent

    Bonjour Mathieu,

    Les utilisateurs ont-ils la possibilités de choisir leur member type avec ce plugin ?

    1. Avatar de imath

      Bonjour Florent, je n’ai rien ajouté à BuddyPress dans ce domaine. Ils peuvent donc uniquement le faire en allant dans leur profil étendu dans l’administration WordPress.

      1. Avatar de Florent
        Florent

        Bonjour,

        Des custom fields peuvent-ils être liés à des member types ? 🙂 ou est-ce simplement une « étiquette » collée sur les users pour mieux les retrouver ? par exemple si j’ai un member type ‘élève’, un autre ‘enseignant’ et un autre ‘parent’ est-il possible de leur assigner des champs de profile différent selon leur type à l’inscription ? ou devrais-je plutôt utiliser les WP Roles ? car j’ai lu que la roadmap de BP prévois d’intégrer les Profile Fields dans la release 2.3 (Roles & Profile Fields – Boone – (#5192)). Merci

        Florent

        1. Avatar de imath

          Salut Florent, après une lecture rapide du ticket, j’ai le sentiment que les member types soient envisagés pour pouvoir proposer des champs de profil différents par lot d’utilisateur. J’ai un sentiment mitigé sur la question car alors que se passe-t-il au moment de l’inscription où l’utilisateur n’est pas encore typé ? En tout état de cause, il me semble que l’utilisation de rôles n’est pas conceptuellement idéale. Pour moi un rôle WordPress est surtout le reflet d’un work flow de contribution (auteur/contributeur..). Hors dans BuddyPress, soit les membres sont subscriber, soit ils n’ont pas de rôle.
          Donc imho je n’utiliserais pas les rôles WordPress. Merci pour l’info sur le ticket, je vais l’étudier de plus prêt.

  5. Avatar de Alain
    Alain

    Waouh, super ce plugin. Je vois que vous êtes un développeur chevronné pour Buddypress. Votre profil m’intéresse pour du développement en Freelance de plugins Buddypress. Pouvez-vous me contacter ?

    1. Avatar de imath

      Bonsoir Alain,
      Merci pour le feedback au sujet du plugin. C’est sympa de proposer, mais comme je l’explique ici https://imathi.eu/donations/, je n’envisage pas de me lancer dans le « freelancing ».
      A+

  6. Avatar de Pat
    Pat

    Bonjour Mathieu,

    Juste une petite question, pas forcément liée à ce plugin mai quand même …
    Comment peut-on rajouter l’information ‘offline ou online’ au niveau d’un membre?
    J’ai cherché pas mal et n’ai pas trouvé de solution viable pour l’instant (je sais qu’il est facile de réaliser une boucle avec le type = online, mais cela n’affiche dans ce cas que les membres online). Ce que je veux, c’est mettre l’information online ou offline à l’intérieur d’une boucle déjà construite.

    Merci d’avance
    Pat

  7. Avatar de david
    david

    Bonsoir imath, merci pour tes nombreux et multiple aide, moi honnêtement je suis trés content d’avoir croisé ton chemin,
    Alors moi mon soucis c’est quant un membre désire rechercher un de ses amis dans la communauté ,comment il fait? j ai mis en place un réseau et je n arrive pas à mettre en place un espace de recherche de membre.

    1. Avatar de imath

      Merci pour ton commentaire 🙂

      Il a plusieurs choix, il peut
      – lister tous ses amis depuis sa page de profil (site.url/membre/nomutilisateur/friends)
      – ou surtout depuis le répertoire des membres activer l’onglet Amis et utiliser le champ de recherche du répertoire comme illustré ci-dessous :
      Illustration Répertoire membres

  8. Avatar de david
    david

    Bonsoir, alors merci pour ta réaction mais l’illustration que tu as indiqué ne s’est pas affiché.

  9. Avatar de david
    david

    Excuse moi j avais un probléme de connection.
    tu es génial.
    je crois que je vais te prendre pour mentor

  10. Avatar de david
    david

    Alors imath , j ai essayé ton plu-gin Rendez-vous, il est excellent, juste que ça ramène mon sidebar droit à gauche et celui de gauche se retrouve en bas.je me suis dit que c’est un problème de compatibilité avec mon thème .Qu’en penses tu?
    Merci

    1. Avatar de imath

      Merci, je vais vérifier que ce n’est pas un bug du plugin.

  11. Avatar de david
    david

    ok, merci , j’attends impatiemment afin de pouvoir l’utiliser.