🔴 Advanced
⏱️ 45 minutes
Pro Feature
⏱️ 45 minutes
Pro Feature
Summary
Set up a complete membership site with role-based access control, content restrictions, member-only areas, and integration with subscription plugins. Perfect for online courses, premium content sites, communities, and subscription businesses.
Prerequisites
- ✅ Attributes User Access Pro installed
- ✅ Custom login/registration pages created
- ✅ Content protection plugin (Restrict Content Pro, MemberPress, or similar)
- ✅ Payment gateway configured (if using paid memberships)
- ✅ Email system tested and working
Step 1: Define Membership Tiers
Plan your membership structure before configuration:
Example Membership Levels
| Tier | WordPress Role | Access Level | Features |
|---|---|---|---|
| Free Member | subscriber | Basic content | Limited articles, community access |
| Silver Member | silver_member (custom) | Standard content | Most articles, basic courses |
| Gold Member | gold_member (custom) | Premium content | All content, advanced courses, support |
| Lifetime Member | lifetime_member (custom) | Everything | All current + future content |
Step 2: Create Custom User Roles
- Go to Users → Attributes User Access → User Roles
- Click Add New Role
- Configure each membership role:
- Role Name: silver_member
- Display Name: Silver Member
- Capabilities: read, comment, upload_files
- Access Level: 2 (for content restriction)
- Repeat for each tier
Step 3: Configure Registration Forms per Tier
Create separate registration forms for different membership levels:
// Free Membership Registration
[attrua_registration_form role="subscriber" redirect_to="/welcome-free"]
// Silver Membership Registration (with payment)
[attrua_registration_form role="silver_member" redirect_to="/checkout/silver"]
// Gold Membership Registration
[attrua_registration_form role="gold_member" redirect_to="/checkout/gold"]
Add Membership-Specific Fields
- Company name (for business memberships)
- Job title or industry
- Interests or specialization
- Referral source
- Terms & conditions acceptance
Step 4: Set Up Content Protection
Restrict content based on membership level:
Method 1: Using Shortcodes
// Show content only to silver members and above
[attrua_restrict roles="silver_member,gold_member,lifetime_member"]
This content is only visible to Silver members and above.
[/attrua_restrict]
// Show different content based on role
[attrua_restrict roles="free_member"]
Upgrade to Silver to unlock this content!
[/attrua_restrict]
[attrua_restrict roles="silver_member,gold_member"]
Welcome Premium Member! Here's your exclusive content.
[/attrua_restrict]
Method 2: Page/Post Protection
- Edit page or post
- Find Access Control metabox
- Select required membership levels
- Configure redirect for unauthorized users
- Add upgrade message/call-to-action
Step 5: Create Member Dashboard
Build a centralized dashboard for members:
Dashboard Components
- 👤 Profile Management – Edit personal info, avatar
- 🔐 Security Settings – Password, 2FA, sessions
- 📊 Membership Status – Current tier, expiration date
- 💳 Billing History – Invoices, payment methods
- 📚 Content Access – Courses, downloads, resources
- 🏆 Achievements/Badges – Gamification elements
- 💬 Community Access – Forums, groups, messaging
- ⬆️ Upgrade Options – Higher tier promotions
// Create dashboard page with shortcode
[attrua_member_dashboard]
// Or custom dashboard sections
Welcome, [attrua_user_meta key="first_name"]!
Your membership: [attrua_user_role_display]
[attrua_membership_status]
[attrua_recent_content]
[attrua_upgrade_prompt]
Step 6: Configure Subscription Integration
Connect with payment/subscription plugins:
WooCommerce Subscriptions
// Auto-assign role based on subscription
add_action('woocommerce_subscription_status_updated', function($subscription, $new_status, $old_status) {
if ($new_status === 'active') {
$user_id = $subscription->get_user_id();
$product_id = $subscription->get_items()[0]->get_product_id();
// Map product to role
$role_map = [
123 => 'silver_member', // Silver product ID
124 => 'gold_member', // Gold product ID
];
if (isset($role_map[$product_id])) {
$user = new WP_User($user_id);
$user->set_role($role_map[$product_id]);
}
}
}, 10, 3);
Step 7: Set Up Email Automations
Configure automated member communications:
Email Triggers
- ✉️ Welcome Email – Upon registration/first payment
- 📧 Trial Ending – 3 days before trial expires
- ⚠️ Payment Failed – Payment method issue
- ✅ Subscription Renewed – Successful renewal
- ❌ Cancellation Confirmed – Membership canceled
- ⬆️ Upgrade Confirmation – Moved to higher tier
- ⬇️ Downgrade Notice – Moved to lower tier
- 🎁 Special Offers – Promotions for tier upgrades
Step 8: Implement Access Expiration
Handle membership expirations gracefully:
Expiration Workflow
- 30 Days Before: First renewal reminder
- 14 Days Before: Second reminder with benefits recap
- 7 Days Before: Final reminder with special offer
- Expiration Day: Downgrade to free tier
- Grace Period: 7 days to renew at current price
- After Grace: Full downgrade, send re-engagement email
// Auto-downgrade expired memberships
add_action('attrua_membership_expired', function($user_id, $old_role) {
$user = new WP_User($user_id);
$user->set_role('subscriber'); // Downgrade to free tier
// Send expiration email
attrua_send_email($user_id, 'membership_expired', [
'old_role' => $old_role,
'renewal_url' => get_renewal_url($user_id),
]);
}, 10, 2);
Best Practices for Membership Sites
- ✅ Clear tier differences – Make benefits obvious
- ✅ Easy upgrades – Allow self-service tier changes
- ✅ Grandfathering – Protect existing members from price increases
- ✅ Trial periods – Offer risk-free trials
- ✅ Cancellation flow – Make it easy but offer retention
- ✅ Community building – Foster member engagement
- ✅ Regular content – Consistent value delivery
- ✅ Member feedback – Listen and adapt offerings