Skip to main content

Compatibility notes

Who this is for

This page is for developers and site owners integrating the plugin with WooCommerce extensions, page builders, caching, and third-party plugins.

WooCommerce compatibility

Minimum Requirements

  • WooCommerce: 3.0+
  • Tested up to: 8.x
  • HPOS: Fully compatible

Core Integration Points

Product Types:

  • Simple products ✅
  • Variable products ✅ (Pro)
  • Grouped products ❌
  • External/Affiliate products ❌
  • Subscription products ✅ (Pro)

Download Methods:

  • Force downloads ✅
  • X-Accel-Redirect/X-Sendfile ✅
  • Redirect only ✅

Product Features:

  • Downloadable files ✅
  • Virtual products ✅
  • Free products (£0.00) ✅
  • Paid products ❌

WooCommerce Extensions

WooCommerce Memberships

Compatibility: Full (Pro only)

Features:

  • Membership plan-specific download limits
  • Restricted product handling
  • Member-only downloads
  • Membership status checking

Implementation:

// Check if user has active membership
if (wc_memberships_is_user_active_member($user_id, $plan_id)) {
// Apply membership limits
}

Hooks:

  • somdn_custom_membership_limit_check - Custom limits
  • somdn_user_has_limit_excluded_membership - Exclusions

WooCommerce Subscriptions

Compatibility: Full (Pro only)

Features:

  • Free trial-specific limits
  • Subscription status checking
  • Renewal-based limit refresh
  • Trial period detection

Implementation:

// Check if user is in free trial
if (wcs_user_has_subscription($user_id, '', 'active')) {
$subscription = wcs_get_users_subscriptions($user_id);
if ($subscription->is_trial()) {
// Apply trial limits
}
}

Hooks:

  • somdn_subscription_trial_check - Trial detection
  • somdn_subscription_limit_refresh - Renewal handling

WooCommerce PDF Watermark

Compatibility: Full (Pro only)

Features:

  • Text watermarks
  • Image watermarks
  • Custom watermark text per product
  • Template tags support

Implementation:

add_filter('somdn_download_path', 'apply_watermark', 10, 2);
function apply_watermark($file_path, $product_id) {
if (is_pdf($file_path)) {
return watermark_pdf($file_path, $product_id);
}
return $file_path;
}

Template Tags:

  • {user_name} - User's full name
  • {user_email} - User's email
  • {date} - Download date
  • {product_name} - Product name

Compatibility: Partial (Pro only)

Features:

  • Discount-based free downloads
  • Member-only access
  • Subscription status checking

Limitations:

  • No built-in limit integration
  • Requires custom code for limits

WooCommerce Products List (NitroWeb)

Compatibility: Full

Features:

  • Table display compatibility
  • Download button in tables
  • Quick View integration

Implementation: Automatically detected and integrated.

Theme Compatibility

General Compatibility

Works with:

  • All WooCommerce-compatible themes
  • Storefront ✅
  • Astra ✅
  • OceanWP ✅
  • Divi ✅
  • Avada ✅

Requirements:

  • Theme must use standard WooCommerce hooks
  • Theme must support WooCommerce product pages

Known Issues

Flatsome Theme:

  • Quick View may require custom CSS
  • Solution: Add custom styles in theme settings

Porto Theme:

  • Archive display may need adjustment
  • Solution: Use template overrides

Elementor Pro:

  • Custom product templates may conflict
  • Solution: Use Elementor widgets with shortcodes

Page Builder Compatibility

Elementor

Compatibility: Full

Usage:

  • Use shortcodes in text widgets
  • Use HTML widget for custom layouts
  • Compatible with Elementor Pro WooCommerce widgets

Example:

[download_now id="123"]

WPBakery (Visual Composer)

Compatibility: Full

Usage:

  • Use shortcode element
  • Use raw HTML element for custom layouts

Gutenberg

Compatibility: Full

Usage:

  • Use shortcode block
  • Use HTML block for custom layouts
  • Compatible with WooCommerce blocks

Divi Builder

Compatibility: Full

Usage:

  • Use code module for shortcodes
  • Use text module with shortcodes enabled
  • Compatible with Divi WooCommerce modules

Caching Plugin Compatibility

WP Rocket

Compatibility: Full

Recommendations:

  • Exclude download URLs from cache
  • Exclude email capture forms from cache
  • Enable logged-in user cache

Configuration:

Exclude URLs:
/wp-admin/admin-ajax.php?action=somdn_*

W3 Total Cache

Compatibility: Full

Recommendations:

  • Exclude download pages from page cache
  • Exclude AJAX actions from object cache

WP Super Cache

Compatibility: Full

Recommendations:

  • Disable caching for logged-in users
  • Exclude download URLs

LiteSpeed Cache

Compatibility: Full

Recommendations:

  • Exclude download URLs from cache
  • Enable separate cache for logged-in users

Security Plugin Compatibility

Wordfence

Compatibility: Full

Notes:

  • Download requests may trigger rate limiting
  • Whitelist plugin AJAX actions if needed

Sucuri

Compatibility: Full

Notes:

  • May flag high download activity
  • Whitelist download URLs if needed

iThemes Security

Compatibility: Full

Notes:

  • Compatible with all security features
  • No special configuration needed

CDN Compatibility

Cloudflare

Compatibility: Full

Recommendations:

  • Exclude download URLs from cache
  • Use page rules for download paths

Page Rules:

URL: *download*
Cache Level: Bypass

KeyCDN

Compatibility: Full

Recommendations:

  • Exclude dynamic content
  • Use zone aliases for static files

Amazon CloudFront

Compatibility: Full

Recommendations:

  • Configure signed URLs for downloads
  • Exclude dynamic content from distribution

Multilingual Plugin Compatibility

WPML

Compatibility: Full

Features:

  • Translatable strings
  • Multi-language product support
  • Language-specific settings

Translation:

  • Settings page strings
  • Button text
  • Error messages
  • Email templates

Polylang

Compatibility: Full

Features:

  • Language switching
  • Translated products
  • Language-specific downloads

TranslatePress

Compatibility: Full

Features:

  • Visual translation
  • Automatic translation
  • Frontend editing

Email Marketing Compatibility

MailChimp

Compatibility: Full (Pro only)

Features:

  • Direct API integration
  • List subscription
  • Dynamic tagging
  • Double opt-in support

Mailster

Compatibility: Partial

Notes:

  • Requires custom integration
  • Use hooks for subscription

Newsletter

Compatibility: Partial

Notes:

  • Requires custom integration
  • Use hooks for subscription

Analytics Compatibility

Google Analytics

Compatibility: Full

Implementation:

// Track downloads
jQuery(document).on('click', '.somdn-download-button', function() {
gtag('event', 'download', {
'event_category': 'Free Downloads',
'event_label': jQuery(this).data('product-name')
});
});

MonsterInsights

Compatibility: Full

Features:

  • Automatic download tracking
  • Event tracking
  • Enhanced ecommerce

Matomo

Compatibility: Full

Implementation:

// Track downloads
_paq.push(['trackEvent', 'Free Downloads', 'Download', productName]);

Performance Optimization

Object Caching

Compatible with:

  • Redis ✅
  • Memcached ✅
  • APCu ✅

Recommendations:

  • Cache product validity checks
  • Cache user limits
  • Cache download counts

Implementation:

$cache_key = 'somdn_product_valid_' . $product_id;
$is_valid = wp_cache_get($cache_key);

if (false === $is_valid) {
$is_valid = somdn_is_product_valid($product_id);
wp_cache_set($cache_key, $is_valid, '', HOUR_IN_SECONDS);
}

Database Optimization

Recommendations:

  • Index custom post type queries
  • Limit download log retention
  • Archive old statistics

Cleanup:

// Delete logs older than 90 days
function cleanup_old_logs() {
$args = array(
'post_type' => 'somdn_tracked',
'date_query' => array(
array('before' => '90 days ago')
),
'posts_per_page' => -1,
'fields' => 'ids'
);

$old_logs = get_posts($args);
foreach ($old_logs as $log_id) {
wp_delete_post($log_id, true);
}
}

Known Conflicts

Conflicting Plugins

Download Manager Plugins:

  • May conflict with download handling
  • Solution: Disable for free products

Custom Checkout Plugins:

  • May interfere with purchasability
  • Solution: Exclude free products

Custom Product Type Plugins:

  • May not recognize free downloads
  • Solution: Add custom compatibility

Resolving Conflicts

Step 1: Identify Conflict

// Enable debug mode
define('WP_DEBUG', true);
define('WP_DEBUG_LOG', true);

Step 2: Test in Isolation

  • Disable other plugins
  • Test with default theme
  • Enable plugins one by one

Step 3: Add Compatibility

// Example compatibility fix
add_filter('conflicting_plugin_filter', 'fix_conflict');
function fix_conflict($value) {
if (somdn_is_free_download()) {
return modified_value;
}
return $value;
}

Testing Compatibility

Test Checklist

  • Product page displays correctly
  • Download buttons work
  • Email capture functions (Pro)
  • Limits enforce correctly (Pro)
  • Statistics track properly (Pro)
  • MailChimp integration works (Pro)
  • No JavaScript errors
  • No PHP errors
  • Mobile responsive
  • Cache compatibility

Testing Tools

Browser Console: Check for JavaScript errors

Query Monitor: Monitor database queries and performance

Debug Bar: View PHP errors and warnings

WP_DEBUG: Enable WordPress debug mode

Reporting issues

Information to provide

  1. WordPress version
  2. WooCommerce version
  3. Plugin version
  4. PHP version
  5. Theme name and version
  6. Conflicting plugin name and version
  7. Error messages
  8. Steps to reproduce

Support channels

  • Free edition: WordPress.org support forum — search existing topics and post with the information above.
  • Pro edition: WP Enhanced — submit a support ticket with your license key and the information above.

What's Next