Overview
The Advanced Access Control add-on provides granular permission management beyond basic role restrictions. Control access by individual users, membership levels, purchase history, geographic location, time windows, and more.
Prerequisites
- WordPress Download Manager installed
- Advanced Access Control add-on installed
- Understanding of WordPress user roles
Benefits
| Feature | Benefit |
|---|---|
| User-Level Access | Grant/revoke per user |
| Membership Integration | Works with membership plugins |
| Purchase-Based Access | Access after purchase |
| Time-Based Access | Schedule availability |
| Geo-Restrictions | Country/region limits |
| IP Restrictions | Whitelist/blacklist IPs |
Access Methods
User-Level Access
Grant access to specific users:
┌─────────────────────────────────────────────────────────────┐ │ User Access │ ├─────────────────────────────────────────────────────────────┤ │ │ │ Access Mode: │ │ ○ Role-based only (default) │ │ ● Include specific users │ │ ○ Specific users only (ignore roles) │ │ │ │ Allowed Users: │ │ [Search users... ] │ │ │ │ ┌───────────────────────────────────────────────────────┐ │ │ │ john@example.com ✕ │ │ │ │ jane@example.com ✕ │ │ │ │ bob@company.org ✕ │ │ │ └───────────────────────────────────────────────────────┘ │ │ │ │ [+ Add User] │ │ │ └─────────────────────────────────────────────────────────────┘
Group Access
Create user groups for easier management:
┌─────────────────────────────────────────────────────────────┐ │ User Groups │ ├─────────────────────────────────────────────────────────────┤ │ │ │ Available Groups: │ │ ☑ VIP Customers (15 users) │ │ ☑ Beta Testers (8 users) │ │ ☐ Partners (5 users) │ │ ☐ Staff (12 users) │ │ │ │ [Manage Groups] │ │ │ └─────────────────────────────────────────────────────────────┘
Managing Groups
┌─────────────────────────────────────────────────────────────┐ │ Manage User Groups │ ├─────────────────────────────────────────────────────────────┤ │ │ │ Group: VIP Customers │ │ Description: Premium customers with early access │ │ │ │ Members: │ │ ├─ john@example.com Added: Jan 5, 2026 [Remove] │ │ ├─ jane@company.org Added: Jan 8, 2026 [Remove] │ │ ├─ mike@business.com Added: Jan 10, 2026 [Remove] │ │ └─ ... │ │ │ │ [+ Add Members] [Import CSV] [Export] │ │ │ └─────────────────────────────────────────────────────────────┘
Time-Based Access
Schedule Availability
┌─────────────────────────────────────────────────────────────┐ │ Time-Based Access │ ├─────────────────────────────────────────────────────────────┤ │ │ │ ☑ Enable time restrictions │ │ │ │ Access Window: │ │ Start Date: [2026-01-15 ] Time: [09:00 ▼] │ │ End Date: [2026-03-15 ] Time: [23:59 ▼] │ │ │ │ Recurring Schedule: │ │ ☐ Enable recurring access │ │ │ │ Days: │ │ ☑ Mon ☑ Tue ☑ Wed ☑ Thu ☑ Fri ☐ Sat ☐ Sun │ │ │ │ Hours: │ │ From: [09:00 ▼] To: [17:00 ▼] │ │ │ │ Timezone: │ │ [Site timezone (UTC+0) ▼] │ │ │ │ Outside Schedule Message: │ │ [This download is only available during business hours ] │ │ │ └─────────────────────────────────────────────────────────────┘
Early Access
┌─────────────────────────────────────────────────────────────┐ │ Early Access │ ├─────────────────────────────────────────────────────────────┤ │ │ │ ☑ Enable early access for select users │ │ │ │ Public Release: [2026-02-01 ] │ │ Early Access: [2026-01-25 ] (7 days earlier) │ │ │ │ Early Access Groups: │ │ ☑ VIP Customers │ │ ☑ Beta Testers │ │ ☐ All logged-in users │ │ │ └─────────────────────────────────────────────────────────────┘
Geographic Restrictions
Country-Based Access
┌─────────────────────────────────────────────────────────────┐ │ Geographic Restrictions │ ├─────────────────────────────────────────────────────────────┤ │ │ │ Restriction Mode: │ │ ○ Allow all countries (no restrictions) │ │ ● Allow selected countries only (whitelist) │ │ ○ Block selected countries (blacklist) │ │ │ │ Countries: │ │ [United States ✕] [Canada ✕] [United Kingdom ✕] │ │ [+ Add Country] │ │ │ │ Detection Method: │ │ [IP Geolocation ▼] │ │ ○ IP Geolocation (recommended) │ │ ○ User profile country │ │ ○ Billing country (requires purchase) │ │ │ │ Blocked Message: │ │ [This download is not available in your region ] │ │ │ │ VPN/Proxy Detection: │ │ ☐ Block known VPN/proxy IPs │ │ │ └─────────────────────────────────────────────────────────────┘
Region/State Level
┌─────────────────────────────────────────────────────────────┐ │ State/Region Restrictions │ ├─────────────────────────────────────────────────────────────┤ │ │ │ Country: United States │ │ │ │ State Restrictions: │ │ ○ All states allowed │ │ ● Block selected states │ │ │ │ Blocked States: │ │ [California ✕] [New York ✕] │ │ [+ Add State] │ │ │ │ Reason: Regulatory compliance requirements │ │ │ └─────────────────────────────────────────────────────────────┘
IP-Based Access
IP Whitelist
┌─────────────────────────────────────────────────────────────┐ │ IP Whitelist │ ├─────────────────────────────────────────────────────────────┤ │ │ │ ☑ Enable IP whitelist (only these IPs can access) │ │ │ │ Allowed IPs/Ranges: │ │ ┌─────────────────────────────────────────────────────────┐ │ │ │ 192.168.1.0/24 Office network │ │ │ │ 10.0.0.50 Server IP │ │ │ │ 203.0.113.0/28 VPN range │ │ │ └─────────────────────────────────────────────────────────┘ │ │ │ │ [+ Add IP/Range] │ │ │ │ Format: Single IP (192.168.1.1) or CIDR (192.168.1.0/24) │ │ │ └─────────────────────────────────────────────────────────────┘
IP Blacklist
┌─────────────────────────────────────────────────────────────┐ │ IP Blacklist │ ├─────────────────────────────────────────────────────────────┤ │ │ │ ☑ Enable IP blacklist │ │ │ │ Blocked IPs: │ │ ┌─────────────────────────────────────────────────────────┐ │ │ │ 45.33.32.0/24 Known abuser range │ │ │ │ 104.244.42.129 Spam bot │ │ │ └─────────────────────────────────────────────────────────┘ │ │ │ │ Auto-block after: │ │ ☑ [5] failed download attempts in [1] hour │ │ ☑ [10] downloads in [1] minute (rate limit) │ │ │ │ Block duration: [24] hours (0 = permanent) │ │ │ └─────────────────────────────────────────────────────────────┘
Membership Integration
Supported Plugins
| Plugin | Integration |
|---|---|
| MemberPress | Full support |
| Paid Memberships Pro | Full support |
| Restrict Content Pro | Full support |
| WooCommerce Memberships | Full support |
| LearnDash | Course access |
| LifterLMS | Membership levels |
Membership Level Access
┌─────────────────────────────────────────────────────────────┐ │ Membership Access │ ├─────────────────────────────────────────────────────────────┤ │ │ │ Require Membership: │ │ ☑ Enable membership restriction │ │ │ │ Required Levels: │ │ ☑ Gold Membership │ │ ☑ Platinum Membership │ │ ☐ Silver Membership │ │ ☐ Bronze Membership │ │ │ │ Logic: │ │ ○ User must have ANY of selected levels │ │ ● User must have ALL selected levels │ │ │ │ Non-Member Message: │ │ [Upgrade to Gold or Platinum to access this download ] │ │ │ │ Upgrade Link: │ │ [https://yoursite.com/membership-plans/ ] │ │ │ └─────────────────────────────────────────────────────────────┘
Purchase-Based Access
Require Purchase
┌─────────────────────────────────────────────────────────────┐ │ Purchase Requirements │ ├─────────────────────────────────────────────────────────────┤ │ │ │ ☑ Require purchase to access │ │ │ │ Purchase Type: │ │ ○ Any purchase (existing customers) │ │ ● This specific product │ │ ○ Any product from category │ │ ○ Minimum order value │ │ │ │ If "Minimum order value": │ │ Minimum: [$50.00] │ │ Period: [Lifetime ▼] │ │ │ │ Grace Period: │ │ ☑ Allow access for [30] days after subscription expires │ │ │ └─────────────────────────────────────────────────────────────┘
Purchase History Check
Access Logic: ┌─────────────────────────────────────────────────────────────┐ │ 1. Check if user purchased this product → Yes: Allow │ │ 2. Check if user has active subscription → Yes: Allow │ │ 3. Check if within grace period → Yes: Allow │ │ 4. Check if user meets order minimum → Yes: Allow │ │ 5. Otherwise → Deny │ └─────────────────────────────────────────────────────────────┘
Download Quotas
Per-User Limits
┌─────────────────────────────────────────────────────────────┐ │ Download Quotas │ ├─────────────────────────────────────────────────────────────┤ │ │ │ ☑ Enable download quotas │ │ │ │ Quota Type: │ │ ○ Per package │ │ ● Per user (across all packages) │ │ ○ By user role │ │ │ │ Quota Settings: │ │ Max downloads: [10] per [day ▼] │ │ │ │ By Role: │ │ ├─ Administrator: Unlimited │ │ ├─ Subscriber: [5] per day │ │ ├─ Customer: [20] per day │ │ └─ Guest: [2] per day │ │ │ │ Quota Reset: │ │ ○ Rolling window │ │ ● Fixed reset (midnight) │ │ │ │ Quota Exceeded Message: │ │ [You've reached your daily download limit. Try again tomorrow]│ │ │ └─────────────────────────────────────────────────────────────┘
Bandwidth Limits
┌─────────────────────────────────────────────────────────────┐ │ Bandwidth Limits │ ├─────────────────────────────────────────────────────────────┤ │ │ │ ☑ Enable bandwidth limits │ │ │ │ Max bandwidth per user: │ │ [500] MB per [day ▼] │ │ │ │ By Role: │ │ ├─ Administrator: Unlimited │ │ ├─ VIP Customer: [5] GB per day │ │ ├─ Customer: [1] GB per day │ │ └─ Free User: [100] MB per day │ │ │ └─────────────────────────────────────────────────────────────┘
Access Rules
Rule Builder
Create complex access conditions:
┌─────────────────────────────────────────────────────────────┐ │ Access Rules │ ├─────────────────────────────────────────────────────────────┤ │ │ │ Rule 1: VIP Early Access │ │ ┌─────────────────────────────────────────────────────────┐ │ │ │ IF user_group = "VIP Customers" │ │ │ │ AND date >= "2026-01-15" │ │ │ │ THEN allow_access = true │ │ │ └─────────────────────────────────────────────────────────┘ │ │ [Edit] [Delete] │ │ │ │ Rule 2: Regional Restriction │ │ ┌─────────────────────────────────────────────────────────┐ │ │ │ IF country NOT IN ["US", "CA", "UK"] │ │ │ │ THEN allow_access = false │ │ │ │ ELSE allow_access = check_other_rules │ │ │ └─────────────────────────────────────────────────────────┘ │ │ [Edit] [Delete] │ │ │ │ Rule 3: Business Hours Only │ │ ┌─────────────────────────────────────────────────────────┐ │ │ │ IF time_of_day >= "09:00" AND time_of_day <= "17:00" │ │ │ │ AND day_of_week IN [1,2,3,4,5] │ │ │ │ THEN allow_access = true │ │ │ └─────────────────────────────────────────────────────────┘ │ │ [Edit] [Delete] │ │ │ │ [+ Add Rule] │ │ │ │ Rule Priority: Rules evaluated top to bottom │ │ First matching rule determines access │ │ │ └─────────────────────────────────────────────────────────────┘
Available Conditions
| Category | Conditions |
|---|---|
| User | Role, ID, Email, Group |
| Membership | Level, Status, Since |
| Purchase | Has purchased, Order value, Recent order |
| Time | Date, Time, Day of week |
| Location | Country, State, City, IP |
| Device | Type, OS, Browser |
| Custom | Meta values, Custom fields |
Access Tokens
Generate Access Tokens
For external/API access:
┌─────────────────────────────────────────────────────────────┐ │ Access Tokens │ ├─────────────────────────────────────────────────────────────┤ │ │ │ ☑ Enable token-based access │ │ │ │ Generate Token: │ │ User: [john@example.com ▼] │ │ Package: [Software Pro v2.0 ▼] │ │ Uses: [10] (0 = unlimited) │ │ Expires: [2026-02-15 ] │ │ │ │ [Generate Token] │ │ │ │ Active Tokens: │ │ ├─ abc123... john@... Software Pro 5/10 uses [Revoke]│ │ ├─ def456... jane@... Manual 2/5 uses [Revoke]│ │ └─ ghi789... API All packages ∞ uses [Revoke]│ │ │ └─────────────────────────────────────────────────────────────┘
Token Usage
Download URL with token: https://yoursite.com/download/123/?token=abc123xyz API access: curl -H "X-WPDM-Token: abc123xyz" https://yoursite.com/wp-json/wpdm/v1/download/123
Reporting
Access Logs
┌─────────────────────────────────────────────────────────────┐ │ Access Log │ ├─────────────────────────────────────────────────────────────┤ │ Filter: [All ▼] Date: [Jan 15 ] to [Jan 22 ] │ ├─────────────────────────────────────────────────────────────┤ │ Time User Package Access Reason │ ├─────────────────────────────────────────────────────────────┤ │ 14:32:05 john Software ✓ Allow VIP member │ │ 14:28:12 jane Manual ✓ Allow Purchased │ │ 14:25:44 guest Software ✗ Deny Geo-blocked │ │ 14:22:18 bob Templates ✗ Deny Quota exceeded │ │ 14:18:33 alice Ebook ✓ Allow Subscriber │ └─────────────────────────────────────────────────────────────┘
Access Analytics
Access Overview (Last 30 Days): ├─ Total attempts: 15,234 ├─ Allowed: 12,456 (82%) ├─ Denied: 2,778 (18%) │ Denial Reasons: ├─ Role restriction: 45% ├─ Geo-blocked: 25% ├─ Quota exceeded: 15% ├─ Time restriction: 10% └─ Other: 5%
Troubleshooting
User Can’t Access
Checklist:
- Check user role in WordPress
- Verify membership status
- Check purchase history
- Review geo-location
- Confirm not IP blocked
- Check time restrictions
- Review download quota
Unexpected Access
Checklist:
- Review all access rules
- Check for conflicting rules
- Verify group memberships
- Check token access
- Review admin overrides
Performance Issues
Solutions:
- Cache geo-lookups
- Optimize rule order
- Reduce rule complexity
- Enable query caching
- Review access logs
Best Practices
- Start restrictive – Easier to grant than revoke
- Use groups – Easier than individual user management
- Document rules – Keep track of why rules exist
- Regular audits – Review access periodically
- Test thoroughly – Verify rules work as expected
- Monitor logs – Watch for unusual patterns
Related Documentation
Last updated: January 2026
Applies to: WordPress Download Manager 7.x + Advanced Access Control Add-on