Black Friday 40% off yearly and lifetime plans · 18d left Ends in 18d09h22m Claim 40% off
Performance48 docs

How to Use Bulk Media Download in WordPress

Download multiple media files at once in Classic Monks. Select multiple files in the Media Library and download them as a ZIP archive.

By Founder & Lead Developer

Last updated

1 minute

Key takeaways

  • Single toggle, no nested options
  • Quick WordPress optimization with one click
  • Does not affect core WordPress functionality
  • Reversible (disable to restore default behavior)

Why You Need It

The WordPress Media Library doesn’t have a built-in batch download feature. Bulk Media Download fills this gap by packaging selected files into a ZIP.

How to Enable this Feature

  1. Step 1

    Navigate to Settings

    Click into the Classic Monks plugin settings, then the Performance tab, Media Enhancements subtab.

  2. Step 2

    Enable the Feature

    Toggle on the feature.

    Bulk media download enabled

  3. Step 3

    Save and Test

    Click Save Changes. Test on the frontend.

Common Use Cases

Project asset backup

Download all images from a project before archiving the project.

Client delivery

Package and send media assets to a client as a ZIP file.

Developer integration

This feature registers 5 WordPress hooks in bulk-media-download.php:

Actions:

  • admin_notices calls cm_bulk_download_admin_notices() (Shows download progress/completion notice)
  • wp_ajax_cm_get_bulk_download_progress calls cm_ajax_get_bulk_download_progress() (AJAX handler for download progress)
  • cm_cleanup_temp_files calls cm_cleanup_bulk_download_zips() (Cleans up temporary ZIP files)

Filters:

  • bulk_actions-upload calls cm_add_bulk_download_actions() (Adds Bulk Download to upload bulk actions)
  • handle_bulk_actions-upload calls cm_handle_bulk_download_actions() (Processes bulk download requests (priority 10))
// Hooked in bulk-media-download.php
add_filter( 'bulk_actions-upload', 'cm_add_bulk_download_actions' );

The feature modifies WordPress behavior by registering or removing hooks. Disabling it reverses those changes and WordPress returns to its default behavior.

Before you enable this feature

  1. Test on staging first to verify no conflicts with your theme or other plugins
  2. Check dependent plugins that may rely on the functionality being modified
  3. Monitor after enabling for any unexpected behavior on the frontend

How it works under the feature

This feature runs during the WordPress initialization phase. When enabled, its PHP code registers hooks that modify specific WordPress behaviors. The changes are non-destructive and reversible.

No database schema changes are made. The feature state is stored as a boolean value in the wp_options table and can be toggled at any time from the admin settings.

Troubleshooting

2 problems and how to fix each one.

The feature is not taking effect

Cause: The toggle is off, or a caching plugin is serving the old page.
Fix: Verify the toggle is on. Clear all caching layers.

The feature breaks another plugin

Cause: Another plugin depends on the functionality that this feature disables.
Fix: Disable this feature if it breaks another plugin.

Was this doc helpful?

Your answer tells us which docs to fix first.

Still stuck? Ask on the forum or email help@classicmonks.com.
Joy Chetry
Written by the person who built it

Joy Chetry

Founder & Lead Developer, Classic Monks

Joy is the founder of Classic Monks and GoodMonks Solutions, a web development agency that builds WordPress and WooCommerce sites for clients. Classic Monks grew out of the agency's own need to consolidate 20 to 30 separate plugins into one core stack.

Follow this doc on a real site.

Open a private WordPress site with Classic Monks, WooCommerce and Bricks Builder installed, and follow this doc step by step. Free for 24 hours, no card.

280 docs, written by Joy Chetry 15 day refund window