This page documents Pro edition compatibility with Paid Member Subscriptions. Upgrade to Pro to access these features.
Pro: Paid Member Subscriptions Compatibility
Integration with Paid Member Subscriptions for membership-based download access and limits.
Overview
Free Downloads for WooCommerce Pro integrates with Paid Member Subscriptions (PMS) to provide:
- Member-only free downloads
- Subscription-based access control
- Discount-based free downloads
- Member status checking
- Automatic access management
Features
Member-Only Downloads
Restrict free downloads to PMS members.
Configuration:
- Set products as member-only
- Configure subscription plans
- Apply download limits per plan
- Track member downloads
Benefits:
- Exclusive member content
- Increased subscription value
- Member retention
- Download analytics
Discount-Based Free Downloads
Products become free for members with 100% discount.
How It Works:
- Create WooCommerce product
- Set regular price (e.g., £10)
- Add to PMS subscription plan
- Set 100% discount for members
- Product becomes free download for members
Use Cases:
- Premium content for members
- Member rewards
- Subscription incentives
- Exclusive resources
Subscription Status Checking
Automatic verification of PMS subscription status.
Status Checks:
- Active subscription
- Expired subscription
- Cancelled subscription
- Trial period
- Grace period
Actions:
- Active: Allow downloads
- Expired: Block downloads
- Cancelled: Revoke access
- Trial: Apply trial limits
Configuration
Enable PMS Integration
Step 1: Install Paid Member Subscriptions
Install and activate Paid Member Subscriptions plugin.
Step 2: Create Subscription Plans
- Go to Paid Member Subscriptions > Subscription Plans
- Click Add New
- Configure plan details
- Set pricing and duration
- Publish plan
Step 3: Configure Product Discounts
- Edit subscription plan
- Go to Content Restriction tab
- Add products to plan
- Set 100% discount for free downloads
- Save plan
Step 4: Configure Download Settings
- Go to WP Enhanced > Free Download Woo
- Configure general settings
- Enable tracking (Pro)
- Set download limits (Pro)
- Save changes
Product Configuration
Make Product Free for Members:
- Edit product in WooCommerce
- Set regular price (e.g., £10)
- Make downloadable and virtual
- Add downloadable files
- Publish product
Add to Subscription Plan:
- Edit PMS subscription plan
- Go to Content Restriction
- Add product
- Set discount to 100%
- Save plan
Result:
- Non-members: See regular price (£10)
- Members: See free (£0.00) with download button
Use Cases
Premium Content Library
Setup:
- Create subscription plan (£9.99/month)
- Add premium products
- Set 100% discount for members
- Enable download tracking
Benefits:
- Recurring revenue
- Member-exclusive content
- Download analytics
- Member engagement
Tiered Access
Basic Plan (£5/month):
- Access to basic products
- 10 downloads per month
- Standard support
Pro Plan (£15/month):
- Access to all products
- 50 downloads per month
- Priority support
Enterprise Plan (£50/month):
- Unlimited access
- Unlimited downloads
- VIP support
Free Trial Strategy
7-Day Free Trial:
- Access to sample products
- 3 downloads during trial
- Automatic conversion to paid
After Trial:
- Full product access
- 20 downloads per month
- Billing starts
Developer Integration
Check PMS Membership
// Check if user has active PMS subscription
if (function_exists('pms_is_member')) {
$is_member = pms_is_member($user_id);
if ($is_member) {
// Allow download
}
}
Get Member's Subscription
// Get user's PMS subscription
$member_subscriptions = pms_get_member_subscriptions(array(
'user_id' => $user_id,
'status' => 'active'
));
foreach ($member_subscriptions as $subscription) {
$plan_id = $subscription->subscription_plan_id;
// Check plan permissions
}
Check Product Discount
// Check if product has 100% discount for member
$discount = pms_get_member_subscription_discount($user_id, $product_id);
if ($discount == 100) {
// Product is free for this member
// Show download button
}
Custom PMS Logic
add_filter('somdn_is_product_valid', 'pms_product_validation', 10, 2);
function pms_product_validation($is_valid, $product_id) {
// Check if user is PMS member
if (!is_user_logged_in()) {
return $is_valid;
}
$user_id = get_current_user_id();
// Check if member has 100% discount
if (function_exists('pms_get_member_subscription_discount')) {
$discount = pms_get_member_subscription_discount($user_id, $product_id);
if ($discount == 100) {
// Product is free for member
return true;
}
}
return $is_valid;
}
Apply Member Limits
add_filter('somdn_get_user_custom_limits', 'pms_member_limits', 10, 3);
function pms_member_limits($limits, $user_id, $product_id) {
// Get member's subscription plan
$subscriptions = pms_get_member_subscriptions(array(
'user_id' => $user_id,
'status' => 'active'
));
if (!empty($subscriptions)) {
$subscription = $subscriptions[0];
$plan_id = $subscription->subscription_plan_id;
// Get plan-specific limits
$plan_limits = get_post_meta($plan_id, 'somdn_pms_limits', true);
if ($plan_limits) {
$limits['amount'] = $plan_limits['amount'];
$limits['freq'] = $plan_limits['freq'];
}
}
return $limits;
}
Troubleshooting
Product Not Free for Members
Check:
- ✅ User has active PMS subscription
- ✅ Product added to subscription plan
- ✅ Discount set to 100%
- ✅ Product is downloadable and virtual
- ✅ Cache cleared
Solution: Verify subscription plan configuration and product settings.
Download Button Not Showing
Check:
- ✅ Product price is £0.00 for member
- ✅ Product has downloadable files
- ✅ Plugin is active
- ✅ Product is included in settings
Solution: Verify product configuration and plugin settings.
Member Status Not Detected
Check:
- ✅ PMS plugin is active
- ✅ User is logged in
- ✅ Subscription is active
- ✅ No subscription expiration
Solution: Verify subscription status and user login.
Limits Not Applying
Check:
- ✅ Download tracking enabled
- ✅ Limits configured
- ✅ Member has applicable limits
- ✅ Products included in limits
Solution: Verify limit configuration and tracking settings.
Best Practices
Subscription Setup
- Create clear subscription tiers
- Set appropriate pricing
- Configure meaningful discounts
- Test member experience
- Monitor subscription metrics
Product Configuration
- Use descriptive product names
- Add quality downloadable files
- Set appropriate regular prices
- Configure proper discounts
- Test download process
Member Communication
- Clearly state member benefits
- Show download limits
- Provide upgrade options
- Send usage notifications
- Offer support resources
Performance
- Monitor database queries
- Cache member checks
- Optimize discount calculations
- Regular cleanup
- Performance testing
Integration Examples
Member-Only Product
// Create product that's free for PMS members
$product = new WC_Product_Simple();
$product->set_name('Member Exclusive eBook');
$product->set_regular_price(9.99);
$product->set_downloadable(true);
$product->set_virtual(true);
// Add download file
$downloads = array(
array(
'name' => 'Exclusive eBook',
'file' => 'path/to/ebook.pdf'
)
);
$product->set_downloads($downloads);
$product->save();
// Add to PMS plan with 100% discount
// (Done through PMS admin interface)
Track Member Downloads
// Track downloads by PMS members
add_action('somdn_count_download', 'track_pms_member_download', 10, 3);
function track_pms_member_download($product_id, $user_id, $variation_id) {
if (!$user_id) {
return;
}
// Check if PMS member
if (function_exists('pms_is_member') && pms_is_member($user_id)) {
// Get member's subscription
$subscriptions = pms_get_member_subscriptions(array(
'user_id' => $user_id,
'status' => 'active'
));
if (!empty($subscriptions)) {
$subscription = $subscriptions[0];
// Increment download count for subscription
$count = get_post_meta($subscription->id, 'download_count', true);
update_post_meta($subscription->id, 'download_count', $count + 1);
}
}
}
Limitations
Known Limitations
Discount Detection:
- Only 100% discounts create free downloads
- Partial discounts don't trigger download button
- Manual price changes not detected
Subscription Status:
- Real-time status checking required
- Cache may delay status updates
- Grace period handling varies
Product Types:
- Simple products fully supported
- Variable products require Pro edition
- Grouped products not supported
Workarounds
For Partial Discounts: Use WooCommerce coupons instead of PMS discounts.
For Variable Products: Upgrade to Pro edition for full variable product support.
For Real-Time Status: Disable aggressive caching for member areas.
Related Topics
- WooCommerce Memberships - Memberships integration
- WooCommerce Subscriptions - Subscriptions integration
- Download Limits - Limits feature
- Compatibility Notes - General compatibility