Kuvaus
Zevvo File Upload for WooCommerce allows your customers to upload files directly on product pages and have those files automatically attached to their orders. Whether you run a print-on-demand store, a custom gift shop, or any business that needs customer-supplied files, Zevvo handles it securely and smoothly.
Built from the ground up for HPOS (High-Performance Order Storage) compatibility, it works with both the classic and block-based WooCommerce cart and checkout.
Features
- Product-Level Configuration — Enable file uploads per product with its own settings
- Required Upload Option — Mark the upload field as required before adding to cart
- Flexible File Types — Support for JPG, PNG, GIF, WebP, PDF, and ZIP — toggle per product
- File Size Control — Set maximum file size per product (default: 10 MB)
- Multiple Files — Allow up to 5 files per product upload field
- Drag & Drop Interface — Clean, responsive drag-and-drop upload zone with keyboard support
- File Previews — In-browser image and PDF previews before upload
- Thumbnail Previews in Cart & Orders — Image thumbnails and file icons in cart, checkout, and order pages
- Admin File Dashboard — View, download, trash, and permanently delete all uploaded files from one screen
- CSV Export — Export all uploaded file data to CSV for reporting
- Trash & Restore — Soft-delete files with one-click restore from trash
- Automatic Cleanup — Daily cron job removes orphaned pending files (older than 24 hours)
- Order Integration — Files automatically attach to orders at checkout and display in order details
- Email Notifications — File thumbnails and icons included in WooCommerce order confirmation emails
- HPOS Compatible — Full support for WooCommerce High-Performance Order Storage
- Blocks Compatible — Works with Gutenberg block-based cart and checkout
- Secure Storage — Files stored with randomized names in a protected directory (.htaccess + index.php)
- Developer Hooks — Filters and actions for extending behavior without modifying plugin files
Perfect For
- Print-on-demand stores (T-shirts, mugs, posters, etc.)
- Custom engraving or embroidery shops
- Personalized gift and keepsake stores
- Photo printing and canvas services
- Graphic design and artwork commissions
- Legal, medical, or document processing services
- Any WooCommerce store that needs customer-supplied files
Security & Reliability
- Strict MIME type validation using WordPress’s
wp_check_filetype_and_ext() - Server-side re-validation on every upload request
- Files stored with MD5-hashed filenames — original names are never exposed on disk
- Upload directory protected with
.htaccess(denies PHP execution + directory listing) index.phpsentinel file prevents directory browsing on all servers- Per-session upload abuse limit (configurable via filter) prevents server exhaustion
- Per-page-load context ID system enforces per-product file count limits strictly
- Nonce verification on all AJAX requests and form submissions
- GDPR-friendly: automatic cleanup of pending (unattached) files via daily cron
Blocks
This plugin provides 1 block.
- Zevvo File Upload
Asennus
- Upload the plugin files to
/wp-content/plugins/zevvo-file-uploads, or install directly through the WordPress plugins screen - Activate the plugin through the Plugins screen in WordPress
- Click Settings under the plugin name on the Plugins page, or go to WooCommerce Zevvo Uploads
- Edit any WooCommerce product and find the Zevvo File Uploads metabox in the product sidebar
- Check Enable File Uploads, choose allowed file types, set size and count limits, then save
- Customers will now see the upload field on that product’s page
UKK
-
Is this compatible with HPOS?
-
Yes. Zevvo File Upload is built specifically for WooCommerce’s High-Performance Order Storage (HPOS) and works with both HPOS and legacy (post-based) order storage.
-
What file types are supported?
-
The plugin supports JPG, PNG, GIF, WebP, PDF, and ZIP. Each file type can be toggled on or off per product from the product metabox.
-
Where are files stored?
-
Files are stored in your WordPress uploads directory at
wp-content/uploads/zevvo_uploads/. Filenames are randomized (MD5 hash) for security. The directory is protected with.htaccessrules that prevent PHP execution and directory listing.Note for Nginx users:
.htaccessrules don’t apply on Nginx. Files are still protected by random hashed names, but we recommend configuring your Nginx server block to deny direct access to thezevvo_uploadsdirectory for additional protection. -
Can I set a file size limit?
-
Yes. Each product has its own maximum file size setting (in MB). The default is 10 MB.
-
How do I view uploaded files?
-
Go to WooCommerce Zevvo Uploads in your admin. You’ll see all uploaded files with options to view (with in-admin preview), download, move to trash, or permanently delete.
-
Are files shown in order emails?
-
Yes. Image uploads appear as thumbnail previews and documents (PDF, ZIP) appear as file icons in WooCommerce order confirmation emails sent to both customers and admins.
-
What happens to files when an order is cancelled?
-
Files remain in the system and stay attached to the order. You can manually delete them from the admin dashboard.
-
Does this work with variable products?
-
Yes. File upload settings are configured on the parent product and apply to all variations.
-
Can customers upload multiple files?
-
Yes. You can allow 1 to 5 files per product. The upload field displays a counter showing how many files have been selected out of the allowed maximum.
-
Can I make the upload field required?
-
Yes. Check the Required Field option in the product metabox. Customers will not be able to add the product to cart without uploading at least one file.
-
Is there a file upload limit per order?
-
No order-level limit. Each product in the cart can have its own independent file upload configuration.
-
What about theme compatibility?
-
The plugin works with any properly-coded WooCommerce theme. It uses standard WooCommerce hooks for classic themes, and includes Store API integration for block-based cart and checkout.
-
Can I export uploaded files data?
-
Yes. Go to WooCommerce Zevvo Uploads, navigate to the Process Uploads tab, and click the Export CSV button to download all file records as a CSV file.
-
How does automatic cleanup work?
-
A daily WordPress cron job removes ”pending” files (uploaded but never attached to an order) that are older than 24 hours. This prevents orphaned files from accumulating on your server. The retention period for attached files is configurable in the plugin settings.
-
How do I customize file upload behavior with code?
-
The plugin provides the following filters and actions for developers:
Filters:
*zevvo_allowed_file_types— Modify allowed MIME types for a product($types, $product_id)
*zevvo_max_upload_size— Modify the maximum file size in MB($size_mb, $product_id)
*zevvo_max_files_count— Modify the maximum number of files($max_files, $product_id)
*zevvo_session_abuse_limit— Change the per-session global upload ceiling($limit)Actions:
*zevvo_validate_upload— Run custom validation before a file is saved($file, $post_id)See the
docs/DEVELOPER-HOOKS.mdfile in the plugin directory for usage examples. -
Is this GDPR compliant?
-
Yes. Pending (unattached) files are automatically deleted after 24 hours. Attached files are stored only as long as needed for order processing, and you can configure automatic deletion after a set number of days in the plugin settings.
-
Does it work with Gutenberg blocks?
-
Yes. The plugin includes a Gutenberg block for product pages and is fully compatible with the WooCommerce block-based cart and checkout via the Store API integration.
-
What if I need help?
-
Use the WordPress.org support forum for this plugin.
Arvostelut
There are no reviews for this plugin.
Avustajat & Kehittäjät
“Zevvo File Upload for WooCommerce” perustuu avoimeen lähdekoodiin. Seuraavat henkilöt ovat osallistuneet tämän lisäosan kehittämiseen.
AvustajatKäännä “Zevvo File Upload for WooCommerce” omalle kielellesi.
Oletko kiinnostunut kehitystyöstä?
Browse the code, check out the SVN repository, or subscribe to the development log by RSS.
Muutosloki
1.0.0
- Initial release
- Per-product file upload configuration with enable/disable toggle
- Required upload field option — prevents add-to-cart without a file
- Support for JPG, PNG, GIF, WebP, PDF, and ZIP file types
- Drag-and-drop upload zone with keyboard accessibility and in-browser file preview
- Up to 5 files per product
- Admin dashboard with file view, download, trash, restore, and permanent delete
- CSV export of all upload records
- Thumbnail previews in cart, checkout, and order detail pages
- File previews (thumbnails + icons) in WooCommerce order emails
- HPOS (High-Performance Order Storage) compatibility declared
- Block-based cart and checkout support via WooCommerce Store API
- Secure file storage: randomized (hashed) filenames, protected upload directory
- Per-session abuse limit and per-page-load context ID for strict file count enforcement
- Automatic daily cron cleanup of orphaned pending files
- Developer filters:
zevvo_allowed_file_types,zevvo_max_upload_size,zevvo_max_files_count,zevvo_session_abuse_limit - Developer action:
zevvo_validate_upload - Mobile-responsive interface
