WP Manifestindependent plugin directory
manifest / ecommerce / wc-product-upload-with-uppy

WooCommerce Product Upload with Uppy

Async file uploads with Uppy for WooCommerce downloadable products

by Frugan · github.com/wp-spaghetti/wc-product-upload-with-uppy · website

0stars
4release downloads
0forks

Install

The author publishes release zips, so WP-CLI can install straight from GitHub:

wp plugin install https://github.com/wp-spaghetti/wc-product-upload-with-uppy/releases/download/v0.1.0/wc-product-upload-with-uppy.zip

Readme

WooCommerce Product Upload with Uppy (WordPress Plugin)

Async file uploads with Uppy for WooCommerce downloadable products.

The plugin automatically replaces the "Choose file" button in WooCommerce downloadable products with Uppy's upload interface, enabling chunked uploads for large files.

Requirements

Installation

You can install the plugin in three ways: manually, via Composer from WPackagist, or via Composer from GitHub Releases.

Manual Installation
  1. Go to the Releases section of this repository.
  2. Download the latest release zip file.
  3. Log in to your WordPress admin dashboard.
  4. Navigate to Plugins > Add New.
  5. Click Upload Plugin.
  6. Choose the downloaded zip file and click Install Now.
Installation via Composer from WPackagist

If you use Composer to manage WordPress plugins, you can install it from WordPress Packagist:

  1. Open your terminal.
  2. Navigate to the root directory of your WordPress installation.
  3. Ensure your composer.json file has the following configuration: *
{
    "require": {
        "composer/installers": "^1.0 || ^2.0",
        "wpackagist-plugin/wc-product-upload-with-uppy": "^0.1"
    },
    "extra": {
        "installer-paths": {
            "wp-content/plugins/{$name}/": [
               "type:wordpress-plugin"
            ]
        }
    }
}
  1. Run the following command:
composer update

Note:
* composer/installers might already be required by another dependency.

Installation via Composer from GitHub Releases

If you use Composer to manage WordPress plugins, you can install it from this repository directly.

Standard Version (uses WordPress update system):

  1. Open your terminal.
  2. Navigate to the root directory of your WordPress installation.
  3. Ensure your composer.json file has the following configuration: *
{
    "require": {
        "composer/installers": "^1.0 || ^2.0",
        "wp-spaghetti/wc-product-upload-with-uppy": "^0.1"
    },
    "repositories": [
        {
            "type": "package",
            "package": {
                "name": "wp-spaghetti/wc-product-upload-with-uppy",
                "version": "0.1.0",
                "type": "wordpress-plugin",
                "dist": {
                    "url": "https://github.com/wp-spaghetti/wc-product-upload-with-uppy/releases/download/v0.1.0/wc-product-upload-with-uppy.zip",
                    "type": "zip"
                }
            }
        }
    ],
    "extra": {
        "installer-paths": {
            "wp-content/plugins/{$name}/": [
               "type:wordpress-plugin"
            ]
        }
    }
}

Version with Git Updater (uses Git Updater Lite for updates):

For installations that need updates managed via Git instead of WordPress.org, use the --with-git-updater version:

{
    "require": {
        "composer/installers": "^1.0 || ^2.0",
        "wp-spaghetti/wc-product-upload-with-uppy": "^0.1"
    },
    "repositories": [
        {
            "type": "package",
            "package": {
                "name": "wp-spaghetti/wc-product-upload-with-uppy",
                "version": "0.1.0",
                "type": "wordpress-plugin",
                "dist": {
                    "url": "https://github.com/wp-spaghetti/wc-product-upload-with-uppy/releases/download/v0.1.0/wc-product-upload-with-uppy--with-git-updater.zip",
                    "type": "zip"
                }
            }
        }
    ],
    "extra": {
        "installer-paths": {
            "wp-content/plugins/{$name}/": [
               "type:wordpress-plugin"
            ]
        }
    }
}
  1. Run the following command:
composer update

Note:
* composer/installers might already be required by another dependency.
* The --with-git-updater version includes Git Updater Lite for automatic updates detection, while the standard version relies on WordPress.org update system.

Configuration

Add these constants to your wp-config.php file to customize the plugin behavior:

// Chunk size for TUS uploads (in bytes)
// Default: 2097152 (2MB)
define('WPSPAGHETTI_WCPUWU_CHUNK_SIZE', 2 * 1024 * 1024);

// Maximum file size allowed for upload (in bytes)
// Default: null (no limit, respects PHP upload_max_filesize and post_max_size)
// Example: 100MB limit
define('WPSPAGHETTI_WCPUWU_MAX_FILE_SIZE', 100 * 1024 * 1024);

// Allowed file types (array of MIME types or file extensions)
// Default: [] (all types allowed)
// Example: ['application/pdf', '.pdf'] (Only PDF files)
define('WPSPAGHETTI_WCPUWU_ALLOWED_FILE_TYPES', ['application/pdf', '.pdf']);

// Example: Multiple document types
// define('WPSPAGHETTI_WCPUWU_ALLOWED_FILE_TYPES', [
//     'application/pdf',
//     'application/zip',
//     'application/msword',
//     'application/vnd.openxmlformats-officedocument.wordprocessingml.document',
//     '.pdf',
//     '.zip',
//     '.doc',
//     '.docx'
// ]);

// Enable cache busting for assets (useful during development)
// Default: false
define('WPSPAGHETTI_WCPUWU_CACHE_BUSTING', true);

Known Issues

Wordfence Firewall Compatibility

If you're using Wordfence with the Web Application Firewall (WAF) enabled, you may encounter 403 Forbidden errors during file uploads. This happens because Wordfence's WAF rule "Allow PHP in Posts and Pages <= 3.0.4 - Authenticated (Subscriber+) Remote Code Execution" can mistakenly flag TUS chunked uploads as malicious.

Solution:

If you don't use the plugin "Allow PHP in Posts and Pages", you can safely disable this specific WAF rule:

  1. Go to Wordfence → Firewall → Manage Firewall
  2. Scroll to Firewall Rules
  3. Find: Allow PHP in Posts and Pages <= 3.0.4 - Authenticated (Subscriber+) Remote Code Execution
  4. Click Disable for that rule

This will not affect your site's security if you don't use that specific plugin.

Alternative Solution:

If you need to keep that rule enabled, you can whitelist the TUS upload endpoint:

  1. Go to Wordfence → Firewall → Manage Firewall → Whitelisted URLs
  2. Add these rules (one by one):
    • URL: /wp-json/wc-product-upload-with-uppy/v1/upload | Type: POST Body | Param: *
    • URL: /wp-json/wc-product-upload-with-uppy/v1/upload | Type: Header | Param: Upload-Offset
    • URL: /wp-json/wc-product-upload-with-uppy/v1/upload | Type: Header | Param: Upload-Length
    • URL: /wp-json/wc-product-upload-with-uppy/v1/upload | Type: Header | Param: Tus-Resumable
    • URL: /wp-json/wc-product-upload-with-uppy/v1/upload | Type: Header | Param: Content-Type

More info

See LINKS file.

Changelog

Please see CHANGELOG for a detailed list of changes for each release.

We follow Semantic Versioning and use Conventional Commits to automatically generate our changelog.

Release Process

  • Major versions (1.0.0 → 2.0.0): Breaking changes
  • Minor versions (1.0.0 → 1.1.0): New features, backward compatible
  • Patch versions (1.0.0 → 1.0.1): Bug fixes, backward compatible

All releases are automatically created when changes are pushed to the main branch, based on commit message conventions.

Contributing

For your contributions please use:

See CONTRIBUTING for detailed guidelines.

Sponsor

Buy Me A Coffee

License

(ɔ) Copyleft 2025 Frugan.
GNU GPLv3, see LICENSE file.

Read the full README on GitHub →

Releases

TagPublishedAssetDownloads
v0.1.0 Nov 22, 2025 wc-product-upload-with-uppy.zip 4