Typer vos membres grâce aux « Member types » de #BuddyPress

Crédits Photo : Type by Delete, on Flickr

Parmi les nombreuses évolutions de la prochaine version de BuddyPress (2.2), le brillantissime Boone vous propose une garniture de choix les "Member Types". Il s'agit de nos premiers pas dans l'utilisation des taxonomies de WordPress pour un des objets de BuddyPress.

NB: une taxonomie n'est pas un rôle ! Il ne s'agit pas ici de gérer des droits d'accès mais bien de classer des membres selon un type. Par exemple : les étudiants et les professeurs dans une communauté d'un site universitaire.

Si vous lisez cette page du codex, vous constaterez qu'à l'instar d'un 'register_post_type',  on initialise les member types depuis un plugin ou un fichier bp-custom.php. Une fois que c'est fait, depuis le profil étendu de l'utilisateur dans l'administration WordPress, vous pourrez définir son type grâce à une meta box spécifique.

Extended Profile in WP-Admin

Et puis.. C'est tout pour la partie émergée de l'iceberg 🙂 En revanche notre framework de fonctions communautaires s'est enrichit d'une solide base que nous mettons à la disposition des développeurs de plugins BuddyPress désireux de construire leur implémentation de la fonctionnalité de classement d'utilisateurs selon des types. Boone l'explique mieux que moi sur ce ticket :

It's time for BP to provide the basics of a user type API, so that plugin devs and site builders will have some common tools for building the user type functionality required by their implementation

Ceci étant dit, il est intéressant de constater que vos questions à ce sujet dans mes boîtes mail, dans mes différents comptes "média sociaux" ou dans mon "skype" témoignent de l'énorme attente qui commence à naître chez les "early beta testeurs". En passant, je tiens à les remercier et en profite pour passer un message important : aidez-nous à vous livrer une pizza aux petits oignons à chaque release en testant les betas et release candidates que nous mettons à votre disposition dans la période qui précède le grand saut dans vos assiettes sites !

La question qui revient le plus souvent est "Comment filtrer la liste des membres selon un type ?" Aussi, j'ai pensé que publier cet article me permettrait de répondre à tous ceux qui m'ont contacté de manière privée et à ceux qui se poseront cette question une fois la 2.2 released.

Members directory – Main nav items

Ainsi dans le gist que vous pourrez récupérer plus bas, j'ai choisi de positionner les types de membre dans la navigation principale du répertoire des membres. L'avantage par rapport à la dropdown "Order By" (à laquelle certains auraient pu penser) est qu'il est alors possible de filtrer par type de membres et d'ordonner les résultats selon les choix proposés dans cette liste déroulante. L'inconvénient: si vous avez une multitude de types de membre, vous allez avoir une sacrée barre de navigation 🙂

Une autre question est "Comment afficher le type du membre sur son profil ?". En fait la page du codex vous donne la clé pour y arriver tout seul, il suffit juste de choisir un des hooks disponibles sur le template de l'entête de la page membre pour y injecter la valeur.

Le header de la page membre

Mon petit doigt me dit qu'une nouvelle release candidate (RC) de BuddyPress vous sera mitonnée avec amour par l'excellent JJJ dans les prochaines heures, alors si vous voulez tester ce gist, profitez en pour vérifier que la 2.2 de BuddyPress sera croustillante!

NB: une fois le code récupéré, assurez vous de disposer à minima de la version 2.2-beta1 de BuddyPress avant de l'injecter dans votre bp-custom.php.

5 commentaires sur “Typer vos membres grâce aux « Member types » de #BuddyPress

  1. Hey, codeur enrhumé ! Malgré un nez explosé et des narines submergées, tu codes encore. Et comment !
    Ca marche nickel chrome. 🙂

    Une deuxième partie d’exemple pourrait se rajouter, en raison de cette réflexion justement

    L’option d’une selectbox se révèlera alors indispensable. Un petit tuto sur ce sujet serait bienvenu…

    Encore bravo pour ce travail et tes explications.

    1. Merci DanBP pour tes commentaires 🙂

      De mon point de vue, la selectbox « Order By » n’est pas la bonne cible car ajouter les member types dans cette dernière prive de la possibilité d’ordonner la liste des membres ayant tel type. Mais si c’est le choix que fait l’administrateur du site, il suffirait dans la fonction using_mt_set_has_members_type_arg() de remplacer $args['scope'] par $args['type'], de remplacer le hook sur ‘bp_members_directory_member_types’ par un hook sur ‘bp_members_directory_order_options’ et d’adapter le foreach de la fonction using_mt_display_directory_tabs() pour qu’il output des options de selectbox.

      Dans l’exemple que je donne, avec un minimum de code on s’interface très simplement avec les mécanismes Ajax de BuddyPress sans avoir à surcharger d’un nouveau javascript. L’inconvénient d’un éventuel nouveau selectbox pour lister les member types serait qu’il faudrait précisément utiliser un javascript pour déclencher le « refresh on change ».

      Si j’avais à gérer énormément de member types, je pense que je choisirais quelque chose de similaire à ce que j’ai fait pour BP Groups Taxo à savoir afficher la liste des types du membre directement dans chaque élément du loop et proposer éventuellement un widget de type tags cloud.

  2. Tu me prends encore une fois de cours 😉 C’est exactement la conclusion à laquelle je suis arrivé ce matin, après avoir essayé avec une selectbox additionnelle.

    Customiser oui, mais over customiser, définitivement NON 🙂

Les commentaires sont fermés.