Créer un espace membre avec WordPress
Un espace membre permet de restreindre l’accès à certains contenus de votre site aux utilisateurs inscrits ou payants. C’est le modèle derrière les sites d’abonnement, les plateformes de formation en ligne et les communautés privées. Au Sénégal, ce modèle se développe rapidement : formations en ligne, contenus premium, réseaux professionnels. Voici comment le mettre en place concrètement.
1. Choisir le bon plugin de membership
| Plugin | Prix | Idéal pour | Points forts |
|---|---|---|---|
| Paid Memberships Pro | Gratuit + Pro 247$/an | Sites d’abonnement | Niveaux de membership, intégrations paiement, contenu goutte-à-goutte |
| Restrict Content Pro | 99$/an | Contenu premium | Simple, léger, bien codé, support réactif |
| MemberPress | 179$/an | Business sérieux | Le plus complet : cours, communauté, automatisations |
| Ultimate Member | Gratuit + extensions | Communautés | Profils utilisateurs, répertoire de membres, formulaires |
| WooCommerce Memberships | 199$/an | E-commerce + membres | S’intègre à WooCommerce existant |
Recommandation : Paid Memberships Pro (PMPro) en gratuit pour démarrer — il gère les niveaux, les paiements et la restriction de contenu. Si votre budget le permet, MemberPress est le plus complet.
2. Configuration avec Paid Memberships Pro
Installation et assistant
- Installez Paid Memberships Pro depuis Extensions → Ajouter
- Activez le plugin et suivez l’assistant de configuration
- L’assistant crée automatiquement les pages nécessaires :
- Page de tarification : présente les formules d’abonnement
- Page de paiement : formulaire d’inscription + paiement
- Page de confirmation : message après inscription
- Page de compte : tableau de bord du membre
- Page de connexion : login personnalisé
Créer les niveaux de membership
Allez dans Memberships → Réglages → Niveaux et créez vos formules :
| Niveau | Prix | Accès | Cible |
|---|---|---|---|
| Gratuit | 0 FCFA | Articles de base, newsletter | Attirer et constituer une audience |
| Standard | 5 000 FCFA/mois | Tous les articles + tutoriels vidéo | Particuliers, étudiants |
| Premium | 15 000 FCFA/mois | Tout + formations complètes + support WhatsApp | Professionnels |
| Entreprise | 50 000 FCFA/mois | Tout + 5 comptes + sessions privées | Équipes, entreprises |
3. Restreindre l’accès au contenu
Par article/page
Avec PMPro, une metabox « Require Membership » apparaît dans l’éditeur de chaque article. Cochez les niveaux qui ont accès :
- Article public : aucune case cochée
- Article pour membres Standard et Premium : cochez Standard + Premium
- Article Premium exclusif : cochez uniquement Premium
Par catégorie (plus efficace)
Dans Memberships → Réglages → Content Settings, configurez la restriction par catégorie :
- Catégorie « Blog » → Accès public
- Catégorie « Tutoriels » → Niveau Standard minimum
- Catégorie « Formations » → Niveau Premium minimum
Restriction manuelle dans le contenu
<!-- Contenu visible par tous -->
<p>Voici l'introduction de cet article sur le SEO avancé...</p>
<!-- Contenu réservé aux membres (shortcode PMPro) -->
[membership level="2,3"]
<h2>Technique avancée : le cocon sémantique</h2>
<p>Le cocon sémantique est une méthode de maillage interne...</p>
[/membership]
<!-- Message pour les non-membres -->
[membership level="-2,-3"]
<div class="content-locked">
<h3>Contenu réservé aux membres</h3>
<p>Accédez à cette section et à toutes nos formations en devenant membre.</p>
<a href="/tarifs" class="btn-primary">Voir les formules →</a>
</div>
[/membership]
CSS pour la section verrouillée
/* Style du bloc de contenu verrouillé */
.content-locked {
background: linear-gradient(135deg, #f8f9fa 0%, #e9ecef 100%);
border: 2px dashed #dee2e6;
border-radius: 12px;
padding: 40px;
text-align: center;
margin: 30px 0;
position: relative;
}
.content-locked::before {
content: "🔒";
font-size: 40px;
display: block;
margin-bottom: 15px;
}
.content-locked h3 {
margin: 0 0 10px;
font-size: 22px;
}
.content-locked p {
color: #666;
margin-bottom: 20px;
}
/* Effet de flou sur le contenu juste avant le bloc */
.content-teaser {
position: relative;
}
.content-teaser::after {
content: '';
position: absolute;
bottom: 0;
left: 0;
right: 0;
height: 100px;
background: linear-gradient(transparent, #fff);
pointer-events: none;
}
4. Page de tarification attrayante
<section class="pricing-section">
<h2 style="text-align:center;">Choisissez votre formule</h2>
<p style="text-align:center; color:#666;">Annulez à tout moment. Paiement par Wave ou Orange Money.</p>
<div class="pricing-grid">
<!-- Formule Gratuite -->
<div class="pricing-card">
<h3>Gratuit</h3>
<div class="pricing-card__price">
<span class="price-amount">0</span>
<span class="price-period">FCFA</span>
</div>
<ul class="pricing-card__features">
<li class="included">Articles de blog</li>
<li class="included">Newsletter hebdomadaire</li>
<li class="excluded">Tutoriels vidéo</li>
<li class="excluded">Formations complètes</li>
<li class="excluded">Support WhatsApp</li>
</ul>
<a href="/membership-checkout/?level=1" class="pricing-card__btn">S'inscrire</a>
</div>
<!-- Formule Standard -->
<div class="pricing-card pricing-card--popular">
<span class="pricing-card__badge">Populaire</span>
<h3>Standard</h3>
<div class="pricing-card__price">
<span class="price-amount">5 000</span>
<span class="price-period">FCFA / mois</span>
</div>
<ul class="pricing-card__features">
<li class="included">Tout du niveau Gratuit</li>
<li class="included">Tutoriels vidéo</li>
<li class="included">Fichiers sources téléchargeables</li>
<li class="excluded">Formations complètes</li>
<li class="excluded">Support WhatsApp</li>
</ul>
<a href="/membership-checkout/?level=2" class="pricing-card__btn pricing-card__btn--primary">Commencer</a>
</div>
<!-- Formule Premium -->
<div class="pricing-card">
<h3>Premium</h3>
<div class="pricing-card__price">
<span class="price-amount">15 000</span>
<span class="price-period">FCFA / mois</span>
</div>
<ul class="pricing-card__features">
<li class="included">Tout du niveau Standard</li>
<li class="included">Formations complètes</li>
<li class="included">Support WhatsApp dédié</li>
<li class="included">Certificats de formation</li>
<li class="included">Accès communauté privée</li>
</ul>
<a href="/membership-checkout/?level=3" class="pricing-card__btn">Commencer</a>
</div>
</div>
</section>
<style>
.pricing-section { padding: 60px 20px; max-width: 1000px; margin: 0 auto; }
.pricing-grid {
display: grid;
grid-template-columns: repeat(auto-fit, minmax(260px, 1fr));
gap: 25px;
margin-top: 30px;
}
.pricing-card {
background: #fff;
border: 2px solid #eee;
border-radius: 16px;
padding: 35px 25px;
text-align: center;
position: relative;
transition: transform 0.3s;
}
.pricing-card:hover { transform: translateY(-5px); }
.pricing-card--popular {
border-color: #e94560;
box-shadow: 0 8px 30px rgba(233, 69, 96, 0.15);
}
.pricing-card__badge {
position: absolute;
top: -14px;
left: 50%;
transform: translateX(-50%);
background: #e94560;
color: #fff;
padding: 5px 20px;
border-radius: 20px;
font-size: 13px;
font-weight: 600;
}
.pricing-card h3 { font-size: 22px; margin: 0 0 15px; }
.price-amount { font-size: 42px; font-weight: 800; color: #1a1a2e; }
.price-period { font-size: 14px; color: #888; display: block; }
.pricing-card__features {
list-style: none;
padding: 0;
margin: 25px 0;
text-align: left;
}
.pricing-card__features li {
padding: 8px 0;
font-size: 14px;
border-bottom: 1px solid #f5f5f5;
}
.pricing-card__features li.included::before { content: "✓ "; color: #25D366; font-weight: bold; }
.pricing-card__features li.excluded { color: #ccc; }
.pricing-card__features li.excluded::before { content: "✗ "; }
.pricing-card__btn {
display: block;
padding: 14px;
border-radius: 8px;
text-decoration: none;
font-weight: 600;
border: 2px solid #e94560;
color: #e94560;
transition: all 0.3s;
}
.pricing-card__btn:hover { background: #e94560; color: #fff; }
.pricing-card__btn--primary { background: #e94560; color: #fff; }
.pricing-card__btn--primary:hover { background: #c73550; }
</style>
5. Intégrer le paiement mobile money
PayDunya avec Paid Memberships Pro
// Plugin ou code personnalisé pour PayDunya + PMPro
// Ajoutez comme gateway personnalisée dans functions.php
add_filter('pmpro_gateways', function($gateways) {
$gateways['paydunya'] = 'PayDunya (Wave / Orange Money)';
return $gateways;
});
// Implémenter la classe de gateway
class PMProGateway_paydunya extends PMProGateway {
function __construct($gateway = null) {
$this->gateway = $gateway;
return $this->gateway;
}
static function process(&$order) {
// Créer une facture PayDunya
$amount = $order->total;
$description = 'Abonnement ' . $order->membership_level->name;
// Appel API PayDunya pour créer le checkout
$response = wp_remote_post('https://app.paydunya.com/api/v1/checkout-invoice/create', [
'headers' => [
'Content-Type' => 'application/json',
'PAYDUNYA-MASTER-KEY' => 'VOTRE_MASTER_KEY',
'PAYDUNYA-PRIVATE-KEY' => 'VOTRE_PRIVATE_KEY',
'PAYDUNYA-TOKEN' => 'VOTRE_TOKEN',
],
'body' => json_encode([
'invoice' => [
'total_amount' => intval($amount),
'description' => $description,
],
'store' => [
'name' => get_bloginfo('name'),
],
'actions' => [
'callback_url' => home_url('/paydunya-ipn/'),
'return_url' => pmpro_url('confirmation', '?level=' . $order->membership_level->id),
'cancel_url' => pmpro_url('levels'),
],
'custom_data' => [
'order_id' => $order->id,
'user_id' => $order->user_id,
'level_id' => $order->membership_level->id,
],
]),
]);
$body = json_decode(wp_remote_retrieve_body($response), true);
if ($body['response_code'] === '00') {
// Rediriger vers la page de paiement PayDunya
wp_redirect($body['response_text']);
exit;
}
$order->error = 'Erreur de paiement. Veuillez réessayer.';
return false;
}
}
6. Tableau de bord du membre
// Shortcode [dashboard_membre] pour la page Mon compte
add_shortcode('dashboard_membre', function() {
if (!is_user_logged_in()) {
return '<p><a href="' . wp_login_url(get_permalink()) . '">Connectez-vous</a> pour accéder à votre espace.</p>';
}
$user = wp_get_current_user();
$level = pmpro_getMembershipLevelForUser($user->ID);
ob_start();
?>
<div class="member-dashboard">
<div class="member-dashboard__header">
<div class="member-avatar">
<?php echo get_avatar($user->ID, 80); ?>
</div>
<div>
<h2>Bienvenue, <?php echo esc_html($user->display_name); ?></h2>
<p class="member-level">
Formule : <strong><?php echo $level ? esc_html($level->name) : 'Gratuit'; ?></strong>
<?php if ($level && $level->enddate) : ?>
— Expire le <?php echo date('d/m/Y', $level->enddate); ?>
<?php endif; ?>
</p>
</div>
</div>
<div class="member-dashboard__grid">
<a href="/formations" class="dashboard-card">
<span class="dashboard-card__icon">📚</span>
<h3>Mes formations</h3>
<p>Accéder aux cours et tutoriels</p>
</a>
<a href="/membership-account/" class="dashboard-card">
<span class="dashboard-card__icon">⚙️</span>
<h3>Mon compte</h3>
<p>Gérer mon profil et abonnement</p>
</a>
<a href="/membership-invoice/" class="dashboard-card">
<span class="dashboard-card__icon">📄</span>
<h3>Factures</h3>
<p>Historique de paiements</p>
</a>
<a href="https://wa.me/221XXXXXXXXX" class="dashboard-card">
<span class="dashboard-card__icon">💬</span>
<h3>Support WhatsApp</h3>
<p>Poser une question</p>
</a>
</div>
</div>
<?php
return ob_get_clean();
});
/* CSS du dashboard membre */
.member-dashboard { max-width: 900px; margin: 0 auto; }
.member-dashboard__header {
display: flex; align-items: center; gap: 20px;
padding: 25px; background: #f8f9fa; border-radius: 12px;
margin-bottom: 25px;
}
.member-avatar img { border-radius: 50%; }
.member-level { color: #666; font-size: 15px; }
.member-dashboard__grid {
display: grid;
grid-template-columns: repeat(auto-fit, minmax(200px, 1fr));
gap: 15px;
}
.dashboard-card {
background: #fff; padding: 25px; border-radius: 12px;
border: 2px solid #eee; text-decoration: none; color: #333;
text-align: center; transition: border-color 0.3s, transform 0.3s;
}
.dashboard-card:hover { border-color: #e94560; transform: translateY(-3px); }
.dashboard-card__icon { font-size: 30px; display: block; margin-bottom: 10px; }
.dashboard-card h3 { font-size: 16px; margin: 0 0 5px; }
.dashboard-card p { font-size: 13px; color: #888; margin: 0; }
7. Contenu goutte-à-goutte (drip content)
Le drip content débloque progressivement le contenu après l’inscription, au lieu de tout donner d’un coup :
// Restriction par ancienneté du membre
add_shortcode('drip_content', function($atts, $content) {
$atts = shortcode_atts(['jours' => 0, 'level' => ''], $atts);
if (!is_user_logged_in()) return '';
$user_id = get_current_user_id();
$level = pmpro_getMembershipLevelForUser($user_id);
if (!$level) return '';
// Calculer l'ancienneté en jours
$start = strtotime($level->startdate);
$days_member = floor((time() - $start) / 86400);
if ($days_member >= intval($atts['jours'])) {
return do_shortcode($content);
}
$remaining = intval($atts['jours']) - $days_member;
return '<div class="drip-locked">
🔒 Ce contenu sera débloqué dans ' . $remaining . ' jours.
</div>';
});
// Usage : [drip_content jours="7"]Contenu débloqué après 7 jours[/drip_content]
8. Bonnes pratiques
- Offrez de la valeur gratuite d’abord : un espace membre qui cache tout derrière un paywall ne convertit pas. Montrez la qualité de votre contenu gratuit pour convaincre les visiteurs de payer
- WhatsApp comme levier : offrez le support WhatsApp aux membres payants — c’est un argument de vente très efficace au Sénégal
- Paiement mensuel : les paiements mensuels (5 000-15 000 FCFA) sont mieux acceptés que les paiements annuels au Sénégal
- Communauté : créez un groupe WhatsApp ou Telegram privé pour les membres premium — la communauté renforce la rétention
- Email d’onboarding : envoyez une séquence de 3-5 emails automatiques après l’inscription pour guider le nouveau membre
- Rétention : publiez du contenu frais régulièrement (minimum 2 fois par semaine) pour que les membres restent abonnés
Un espace membre bien géré peut générer des revenus récurrents prévisibles. Commencez avec PMPro gratuit et 2-3 niveaux d’abonnement, puis ajoutez des fonctionnalités au fur et à mesure que votre communauté grandit.
Site web clé-en-main
Conception, hébergement, formation, support — tout est compris. Vous repartez avec un site qui fonctionne et la maîtrise pour le faire évoluer.
À partir de 350 000 FCFA
Pourquoi un espace membre transforme la relation client
Un espace membre n est pas qu un login : c est un changement de modele commercial. Convertir des visiteurs anonymes en membres identifies multiplie la valeur du client moyen (LTV) par 3 a 5 selon les secteurs. Acces a des contenus reserves, suivi de commandes, gestion d abonnement, communaute interne — autant de mecaniques qui creent de la retention. Une organisation qui passe d un site vitrine a un site avec espace membre voit typiquement son revenu recurrent multiplie en 6-12 mois.
Les plugins de reference en 2026
MemberPress (179 USD/an) est le plus complet pour le contenu protege et l abonnement. Restreint pages, posts, categories par niveau d adhesion. Integration Stripe/PayPal pour les paiements recurrents. Drip content (deblocage progressif), affiliate program inclus. Standard pour les sites de formation, de coaching, et de membership communautaire.
Restrict Content Pro (99 USD/an) plus leger et plus performant que MemberPress. Excellente integration WooCommerce. Cible : sites a fort trafic ou la performance compte autant que les fonctionnalites.
BuddyBoss (228 USD/an) au-dela du membership pur, c est une plateforme communaute (profils utilisateur, forums, messages prives, groupes). Pour un projet community-driven (formation collaborative, club professionnel), c est le standard 2026.
WP Members (gratuit, plan Pro 89 USD/an) suffit pour les besoins basiques : creation de compte, login, restriction contenu. Adapte aux sites associatifs ou aux PME avec budget limite.
Architecture technique
WordPress integre nativement la gestion d utilisateurs (table wp_users). Les plugins membership ajoutent des roles personnalises (Membre Bronze, Silver, Gold), un champ niveau d adhesion, et des regles de restriction sur le contenu. Le frontend affiche du contenu different selon le role.
Pour des fonctionnalites avancees (profil enrichi, photo de profil, champs personnalises), BuddyPress (gratuit, fondation BuddyBoss) ou Ultimate Member (gratuit, extensions payantes) ajoutent une couche complete de social/profile. Pour la majorite des projets B2C, BuddyPress suffit largement.
Securite — points non negociables
Authentification a deux facteurs pour les comptes admin et les abonnements payants. Le plugin WP 2FA ou Two Factor Authentication ajoute TOTP ou email. Bloque 99 pour cent des compromissions de compte.
Reset password securise. Tokens uniques, expiration courte (1 heure), invalidation apres usage. WordPress natif gere correctement ces aspects, ne pas ecrire de logique custom sans expertise.
Limit Login Attempts. Bloquer apres 5 echecs successifs depuis la meme IP. Empeche les attaques brute-force sur les comptes membres.
Connexion en HTTPS exclusivement. Forcer HTTPS pour toutes les URLs admin et membres. Sans cela, les credentials transitent en clair. Hostinger et la majorite des hebergeurs offrent Let s Encrypt gratuit.
FAQ
Comment gerer le RGPD pour un espace membre ?
(1) Consentement explicite a la creation de compte avec lien vers la politique de confidentialite. (2) Page Mes donnees ou le membre peut voir et exporter toutes ses informations. (3) Bouton Supprimer mon compte qui efface effectivement les donnees personnelles. (4) Anonymisation des donnees apres une duree de retention definie. WordPress 4.9.6+ inclut des outils de base export/erase qui couvrent le minimum legal.
WooCommerce ou MemberPress pour vendre un abonnement ?
WooCommerce Subscriptions (199 USD/an) pour un produit a abonnement classique avec gestion commerciale complete (factures, comptabilite). MemberPress pour la gestion d acces a du contenu protege avec niveau d adhesion. Les deux peuvent cohabiter sur le meme site.
Comment integrer une communaute (forum, messagerie) ?
BuddyPress avec bbPress (forums) integres. Ou bascule complete vers BuddyBoss qui packagee l ensemble. Pour des besoins de messagerie temps reel, Rocket.Chat ou Discord en complement, integres via SSO.
References
- MemberPress — memberpress.com
- Restrict Content Pro — restrictcontentpro.com
- BuddyBoss — buddyboss.com
- WooCommerce Subscriptions — woocommerce.com/products/woocommerce-subscriptions