-
Search Results
-
Is it possible to disable the package download page or at least create a default page template that doesn’t include the Previous Package and Next Package links? I have download packages that don’t require a login to download (links are sent directly to someone) but that also should not be discoverable or show up in a search index.
Topic: Downloading multiple files
I want my users to be able to download a program archive and a license file.
I have the packages working, i.e., when my users request a download link they get an email with a download button and clicking that results in the program archive being downloaded. Today I wanted to try this new scheme so I opened my existing package and dragged a file to the “Attach File” pane and it was added to the list of attached files. However, when I request a download link, the only file I get is the last added file, not both.
I have read that in the Pro version it should be possible to have it create one zip file of all attached files — how can I do that? What am I doing wrong? I have experimented with the settings “single file download” as well as the “cache zip file” but nothing I do seems to result in a multi-file download.
Hi WPDM team,
I’m writing to report an interaction between WordPress Download Manager (WPDM) and the Rara Business theme that consistently crashes WPDM single package pages. I’ve included the environment details, the reproducible error, and the workaround we implemented.
Environment
WordPress: 6.6.2
PHP: 8.2 (running on WHC / cPanel with zlib compression enabled)
WPDM: 3.2.99 (Free)
Theme: Rara Business (latest from WordPress.org, v1.2.9)
Hosting: Linux/Apache with Cloudflare in front
Permalink base for WPDM packages: /files/<slug>/
Problem description
After switching the WPDM package permalink base to /files/, visiting a package single page at /files/<package-slug>/ triggers a fatal error.
Stack trace excerpt:
PHP Fatal error: Uncaught TypeError: explode(): Argument #2 ($string) must be of type string, WP_Error given
in /wp-content/themes/rara-business/inc/template-functions.php:433
#0 /…/template-functions.php(231): rara_business_breadcrumb()
#1 /wp-includes/class-wp-hook.php(324): rara_business_content_start(”)
#2 /wp-includes/plugin.php(517): WP_Hook->do_action()
#3 /wp-content/themes/rara-business/header.php(59): do_action(‘rara_business_content’)
#4 /wp-content/themes/rara-business/single.php(12): get_header()Root cause:
The theme’s rara_business_content_start() calls rara_business_breadcrumb(), which assumes a post category context. On WPDM singles (custom post type wpdmpro), it receives a WP_Error. This value is passed directly into explode(), producing the fatal.What we tried
Switched to Twenty Twenty-Five → WPDM singles load normally.
Disabled all MU plugins and caching layers → crash persists with Rara Business.
Built a child theme to gate the do_action( ‘rara_business_content’ ) call → functional but brittle and caused styling regressions.
Minimal, upgrade-safe workaround
We developed a compatibility plugin (wpdm-rara-compat.php) that:
Removes the theme’s content-start callback from the rara_business_content hook.
Re-adds it with a guard so it runs everywhere except on WPDM singles.
Restores normal page layout on WPDM singles by injecting wrapper markup (container/row/content/sidebar) around the_content and aligning the page title.
Plugin code:
<?php
/**
* Plugin Name: WPDM × Rara Business Compat
* Description: Prevents Rara breadcrumb crash on WPDM singles, restores layout.
* Version: 1.0
*/add_action(‘after_setup_theme’, function () {
// Remove theme’s content-start callback
remove_action(‘rara_business_content’, ‘rara_business_content_start’, 10);// Re-add guarded callback
add_action(‘rara_business_content’, function () {
if ( is_singular([‘wpdmpro’,’wpdm_package’]) ) return;
if ( function_exists(‘rara_business_content_start’) ) {
rara_business_content_start();
}
}, 10);
}, 99);// === Layout wrapper for WPDM singles ===
add_filter(‘the_content’, function ($html) {
if (!is_singular(‘wpdmpro’) || !in_the_loop() || !is_main_query()) return $html;// Prevent double wrapping
if (str_contains($html, ‘class=”site-content single-wpdmpro”‘)) return $html;ob_start(); get_sidebar(); $sidebar = ob_get_clean();
return
‘<div id=”content” class=”site-content single-wpdmpro”>’ .
‘<div class=”container”><div class=”row”>’ .
‘<main id=”primary” class=”content-area col-lg-8″><div class=”site-main”>’ .
$html .
‘</div></main>’ .
$sidebar .
‘</div></div>’ .
‘</div>’;
}, 20);// Align WPDM single title with content column
add_filter(‘the_title’, function ($title, $post_id) {
if (is_admin() || !is_singular(‘wpdmpro’) || !in_the_loop() || !is_main_query()) return $title;
if ((int)$post_id !== (int)get_queried_object_id()) return $title;
if (strpos($title, ‘wpdm-title-wrap’) !== false) return $title;return ‘<div class=”container”><div class=”row”><div class=”col-lg-8 wpdm-title-wrap”>’ .
$title .
‘</div></div></div>’;
}, 10, 2);Current status
WPDM singles now load correctly at /download/<slug>/. Example: https://complianceinsight.ca/download/press-release-2025-09-02/
Site styling restored (title + content aligned with container/row).
No more fatals. Logs show only benign PHP 8.2 notices from the theme’s Customizer notice class (Deprecated: Creation of dynamic property …).
Suggestions
WPDM resilience: Adding a defensive check around breadcrumb/taxonomy lookups for custom post types would help WPDM work out-of-the-box with themes that assume posts/categories.
Theme interaction doc: A short WPDM doc page on “Theme compatibility” (especially around breadcrumb hooks) would help other users avoid this.
Optional hook: A dedicated filter to let developers wrap WPDM singles in their theme’s grid without intercepting the_content would simplify compatibility work.
Happy to provide a staging URL or further debug info if you’d like to see the exact crash path in action.
Thanks for your continued work on WPDM—outside this theme-specific issue, the plugin has been solid.
Hi guys,
We’re building a new website and have setup Download Manager Pro.
Currently the permalinks are not linking to the files and just open in a page which requires you to click on the link again to download them. Is there a setting in Download Manager Pro to make the files download automatically from the permalink?
I’m using the Newsletters plugin to alert subscribers when a new package is uploaded, specifically using the “Send Message To Subscriber” section on the “Add New File” page of the Download Manager.
Currently the email arrives with whatever text was input in the section above, plus a generic addition:
Check Updates (linked to website)
Best Regards,
Support Team
(link to website)I want to use a custom template for this, but cannot find anywhere in the backend of the website or in the plugin files to do this.
Topic: Customizing in Free version
Hi,
Amazing plugin. Eventually I plan to buy Pro, but for now I’m still playing around with it. Some questions:
Similar to a stock photo site, I want to be able to just have an image gallery with a link on each image (no buttons, title or description etc), that takes you to the image page, then on the linked image page I want the download button and description.
Do I need to use CSS to style this and create the linked page in the Free version? In the Pro version is there more customization for this?
Thanks!
Problem: Clicking the close button on WPDM download modals doesn’t close them. Instead, each click creates a duplicate modal instance in the DOM.
Environment:WP Download Manager: 6.8 (?) cant find a more precise version anywhere in settings.
PHP: 7.4
Theme: GeneratePress
Browsers: Chrome & Firefox & Edge (latest)What Happens:
enter password & Click download link → modal opens correctly
Click Close/X button → modal stays open
DOM inspector shows multiple div.modal.fade.show elements (one per click)
Only way to exit is refreshing the page or closing the tabConsole Shows:
⚠ JQMIGRATE: jQuery.fn.click() is deprecated
⚠ JQMIGRATE: jQuery.fn.unbind() is deprecated
⚠ JQMIGRATE: jQuery.fn.bind() is deprecatedon close click it shows in console (per click)
Object { 0: div#__boot_popup.modal.fade.show, length: 1 }
Object { 0: div#__boot_popup.modal.fade.show, length: 1 }
Object { 0: div#__boot_popup.modal.fade.show, length: 1 }
Object { 0: div#__boot_popup.modal.fade.show, length: 1 }
?rlkey=q3wsijol8yshduxp8hrkxl0q1&st=jafyh409&dl=0