Skip to main content
PRO Only
Pro Feature

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:

  1. Create WooCommerce product
  2. Set regular price (e.g., £10)
  3. Add to PMS subscription plan
  4. Set 100% discount for members
  5. 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

  1. Go to Paid Member Subscriptions > Subscription Plans
  2. Click Add New
  3. Configure plan details
  4. Set pricing and duration
  5. Publish plan

Step 3: Configure Product Discounts

  1. Edit subscription plan
  2. Go to Content Restriction tab
  3. Add products to plan
  4. Set 100% discount for free downloads
  5. Save plan

Step 4: Configure Download Settings

  1. Go to WP Enhanced > Free Download Woo
  2. Configure general settings
  3. Enable tracking (Pro)
  4. Set download limits (Pro)
  5. Save changes

Product Configuration

Make Product Free for Members:

  1. Edit product in WooCommerce
  2. Set regular price (e.g., £10)
  3. Make downloadable and virtual
  4. Add downloadable files
  5. Publish product

Add to Subscription Plan:

  1. Edit PMS subscription plan
  2. Go to Content Restriction
  3. Add product
  4. Set discount to 100%
  5. 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:

  1. ✅ User has active PMS subscription
  2. ✅ Product added to subscription plan
  3. ✅ Discount set to 100%
  4. ✅ Product is downloadable and virtual
  5. ✅ Cache cleared

Solution: Verify subscription plan configuration and product settings.

Download Button Not Showing

Check:

  1. ✅ Product price is £0.00 for member
  2. ✅ Product has downloadable files
  3. ✅ Plugin is active
  4. ✅ Product is included in settings

Solution: Verify product configuration and plugin settings.

Member Status Not Detected

Check:

  1. ✅ PMS plugin is active
  2. ✅ User is logged in
  3. ✅ Subscription is active
  4. ✅ No subscription expiration

Solution: Verify subscription status and user login.

Limits Not Applying

Check:

  1. ✅ Download tracking enabled
  2. ✅ Limits configured
  3. ✅ Member has applicable limits
  4. ✅ 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.