Lorsque nous voulons réserver certains contenus d’un site WordPress à des personnes (ou groupes de personnes) spécifiques, il faut rendre certains contenus privés. Nous allons voir comment le faire avec trois extensions.
Chris Lema, une référence pour les extensions de « membership »
Chris Lema est un auteur prolifique, très connu dans le monde WordPress anglophone. Il a, entre autres, examiné une trentaine d’extensions de gestion des « memberships », qui permettent de créer des espaces réservés dans un site web. Et chacun des articles dédié à l’une de ces extensions est incroyablement complet et détaillé.
- La source principale d’information pour cet article est ce billet, en anglais, de Chris Lema : Membership Plugin Review: Members. Mais vous pourrez aussi trouver les articles suivants utiles, si vous lisez l’anglais :
- The Best WordPress Membership Plugin of 2015, qui liste les 30 extensions examinées.
- Choosing a WordPress Membership Plugin qui propose un logigramme pour déterminer quel est le meilleur choix d’extension de membership selon l’utilisation prévue.
- Comparing WordPress Membership Plugins, qui propose le meilleur choix selon 6 critères (prix, facilité d’utilisation, possibilité de faire du contenu « goutte à goutte », interruption temporaire des inscriptions, …).
« Membership » ou « subscription » ?
Une extension de « membership » gérera toujours l’enregistrement d’utilisateur (moyennant paiement ou non) et la possibilité pour ces utilisateurs connectés de voir des contenus protégés.
Certaines gèreront également d’autres fonctionnalités utiles telles que :
- gestion des renouvellement d’abonnement (payant ou pas) ;
- créer une liste des abonnés ;
- créer une page spéciale pour chaque abonné ;
- associer des systèmes de paiement ;
- gérer des évènements ;
- …
Pour en savoir plus, on peut lire Don’t confuse Memberships and Subscriptions. Chris Lema y explique que les extensions de membership gère l’accès à des contenus. Mais l’inscription, ou le renouvellement d’un abonnement nécessite une extension de « subscription ».
Créer un espace réservé sur un site avec Members
Dans mon cas, je suis en phase d’expérimentation. Je privilégie donc le côté gratuit, ainsi que la possibilité de créer des extensions moi même pour étendre ses fonctions. J’ai donc choisi d’utiliser l’extension « Members », de Justin Tadlock. L’article de Chris Lema, Membership Plugin Review: Members, explique comment l’utiliser avec deux autres extensions pour créer des contenus réservés, gérer les login et mise à jour des profils des abonnés et enfin définir des menus pour les abonnés et les autres. C’est donc un excellent moyen de se familiariser avec la création d’un site à contenus réservés.
Je ne vais pas reprendre le contenu de l’article de Chris Lema de manière détaillée. J’ai réalisée les étapes telles qu’il les décrit.
étape 1, installer les trois extensions nécessaires
Installer (sans les activer) Members, Nav Menu Roles et Profile Builder.
« Members » permettra d’attribuer des rôles aux utilisateurs du site puis de restreindre l’accès ou la modification de contenus (ou du site tout entier) selon les rôles.
« Nav Menu Roles » va permettre de définir quels menus sont vus par qui (quels rôles).
« Profile Builder » facilite la gestion des comptes des utilisateurs. L’extension permet d’avoir une page spécifique pour se connecter ou s’enregistrer (en évitant l’affreuse page wp-login.php de WordPress). Elle autorise également l’utilisateur à mettre à jour son profil et son mot de passe.
Etape 2, activer « Members » et la paramétrer
Après avoir activé « Members », je crée un rôle spécifique « membre-site ». En dessous du champs dans lequel je crée le nom de ce rôle, je vois écrit « Rôle : membresite« , que je peux modifier. C’est ce nom qui servira ensuite pour définir dans du code ou des shortcode des actions spécifiques à ce rôle. Dans « modifier les capacités », je laisse la seule case cochée : « read ». Les personnes aux rôles « membre-site » ne pourront que lire des contenus.
Etape 3, activer « Profile Builder » et la paramétrer
Les shortcode utilisables avec cette extension sont visibles dans le nouveau menu « Profile Builder » > « Informations de base ». D’autres shortcodes sont également listés dans la description de l’extension, sur WordPress.org.
Je crée les pages suivantes :
- « accueil », qui sera réglée comme page d’accueil du site ;
- « Connexion » contenant le short code [[wppb-login register_url= »http://exemple.com/page-enregistrement/ » lostpassword_url= »http://exemple.com/lost-password/ »] ] ;
- « Enregistrement » avec le short code [[wppb-register role= »membresite »] ] ;
- « votre profil » avec le short code [[wppb-edit-profile] ] ;
- « renouvellement du mot de passe » avec le short code [[wppb-recover-password] ]
- « contenu protégé », avec le contenu protégé, et par exemple des liens vers d’autres contenus protégés.
Attention, sur la page d’enregistrement, il faut préciser le rôle des personnes qui pourront s’enregistrer. On doit donc placer le short code [[wppb-register role= »desired_role »]], avec desired_role remplacé par le rôle correspondant.
La page « contenu protégé » est protégée en cliquant sur « membre-site » sous l’éditeur de la page. On peut également définir un message d’erreur qui sera affiché si une personne non connectée tente d’accéder à cette page. Si on veut un message d’erreur commun à toutes les pages dont le contenu est protégé, on la définit dans « Réglages » > « Members ».
Dans un widget de la barre latérale, on peut ajouter le widget « Profile Builder Login Widget » afin de permettre aux utilisateurs de se connecter, déconnecter, être redirigé sur les contenus protégés une fois connecté.
Etape 4, gestion des menus
La structure de menu doit permettre d’avoir des éléments affichés seulement pour les membres, d’autres pour tous.
Après activation de « Nav Menu Roles« , lorsqu’on va dans « Apparence » > « Menus », on peut choisir ce qui s’affiche selon les rôles.
Par exemple, pour l’élément « contenu protégé », on clique sur « utilisateurs connectés » et on choisit les rôles « membre-site » et « administrateur ».
Par contre, l’élément « login » doit être visible pour les utilisateurs non connectés seulement.
Et voilà, j’ai maintenant un site web avec du contenu protégé !
Exploration rapide des fonctionnalités
Profile Builder a d’autres fonctionnalités utiles :
- Dans « Profile Builder » > « Paramètres généraux », on peut définir la Longueur minimale du Mot de Passe et surtout régler la Sûreté minimale du Mot de Passe. J’ai essayé avec 8 caractères minimum et une sureté minimale sur « moyen » ;
- Dans « Profile Builder » > « Paramètres généraux », on peut cocher « Confirmation par e-mail » puis régler le contenu des emails expédiés ;
- Dans « Profile Builder » > « Paramètres de la barre Administration », on peut (et on devrait) régler sur « masquer » pour tous les rôles qui ne sont pas administrateur ou éditeur.
Il est possible d’autoriser l’enregistrement en ligne via les réglages de WordPress (« Réglages » > « Général ») : il suffit de cocher « tout le monde peut s’enregistrer » et de définir le rôle par défaut des personnes qui s’enregistrent. Mais avec les extensions installées, il n’est pas possible de limiter les enregistrements à ceux qui sont autorisés par l’administrateur. Profile Builder propose de recourir à une extension payante pour celà.
Il serait intéressant d’essayer l’extension (gratuite) New User Approve. Sur cette extension, voir aussi « How to Moderate New User Registrations in WordPress« .
Members a également d’autres fonctionnalités intéressantes :
- On peut activer des widgets spécifiques dans la page « Réglages » > « Members », en cochant « Activer le widget du formulaire de connexion » et/ou « Activer le widget utilisateurs ». Le deuxième widget permet de voir la liste des autres utilisateurs qui ont le rôle défini dans le widget. Je préfère les widgets de Profile Builder.
- on peut cocher « Activer site privé » : lorsque la case est cochée, c’est l’ensemble du site qui devient privé. Toute personne non connectée qui essaie de lire un contenu du site est automatiquement redirigée sur la page de connexion WordPress par défaut ;
- on peut cocher « Désactiver le flux » : pour afficher un message d’erreur pour le flux RSS du site. Ça paraît essentiel en effet ;
- Si on restreint l’accès à une page, toutes ses pages « enfant » ont par défaut le même réglage (cf cette question sur le forum themehybrid.com).
- Avec un peu de code additionnel, on peut régler WordPress pour afficher les résumés à tous les internautes et restreindre l’accès au reste de l’article (ou de la page) : cf cette question et cette autre question sur le forum themehybrid.com ;
Autres extensions en complément
Si je veux faire payer l’accès au contenu réservé, je pourrai utiliser Membership & Content Restriction – Paid Member Subscriptions, qui fonctionne avec Profile Builder que j’utilise ici. Mais logiquement je peux utiliser n’importe quel autre extension de « souscription ».
Le gros avantage de Members est qu’il s’intègre très bien avec d’autres extensions, même si elles ne le disent pas explicitement. En effet, Members utilise des fonctions de WordPress pour créer les rôles. Par exemple Event espresso 4 permet aux différents rôles créés avec Members d’accéder aux contenus liés aux événements selon leurs rôles. Il est également possible d’utiliser Learndash avec Members, comme indiqué dans cette question sur le forum themehybrid.com.
L’extension gratuite MailChimp User Sync devrait permettre de synchroniser des listes MailChimp selon les rôles.
Et maintenant ?
Je vais créer un site à contenu privé pour explorer un peu plus ce qu’il est possible de faire.