=== Desktop Media Uploader ===
Contributors: 48hmorris
Tags: bulk upload, bulk replace, webp, avif, image optimization
Requires at least: 5.8
Tested up to: 7.0
Stable tag: 1.3.5
Requires PHP: 7.4
License: GPLv2 or later
License URI: https://www.gnu.org/licenses/gpl-2.0.html

Bulk upload and replace WordPress media files from a desktop app.

== Description ==

**Desktop Media Uploader for WordPress** works with a companion desktop application for macOS and Windows 11 to upload, overwrite, optimize, resize, and process WordPress media files from your desktop.

Instead of relying on browser uploads, PHP upload limits, or server-side image processing, the desktop app handles the heavy work locally and securely sends completed media to your WordPress site.

Use it when you need to upload large batches, replace many existing media files, process thousands of images, or avoid tying up your web server during media-heavy work.

### What it does

* **Bulk upload media files and folders**
  Drag files or folders into the desktop app and process large media batches from one upload queue.

* **Bulk replace existing media files**
  Replace multiple existing WordPress media files in one operation instead of updating files one by one.

* **Process thousands of files from your desktop**
  Built for high-volume media workflows, product image updates, catalog refreshes, migrations, and large media libraries.

* **Optimize images before upload**
  Create optimized JPEG, WebP, and AVIF files locally before they are transferred to WordPress.

* **Resize and control media sizes**
  Use familiar WordPress-style defaults, then enable or disable the image sizes you want the app to create.

* **Add watermarks during upload**
  Apply watermark images using simple positioning options during the desktop processing workflow.

* **Reduce server load**
  Image resizing, optimization, conversion, watermarking, and upload queue handling are performed by the desktop app instead of your hosting account.

* **Clear upload results**
  View upload progress, overwritten file counts, optimization savings, skipped conversions, errors, retries, and logs.

---

### Why use a desktop app?

Traditional WordPress uploads depend on browser sessions, PHP limits, web server configuration, and server-side image processing.

Desktop Media Uploader moves the upload workflow to your computer. The desktop app prepares files locally, then sends completed media to your WordPress site through this plugin.

**Result: high-volume WordPress media uploads with less server strain and fewer browser-upload headaches.**

---

### Desktop App Required

The companion desktop application is required to use this plugin.

Desktop app and free trial:
https://wpspeedmeup.com

The desktop app:

* Works on macOS and Windows 11
* Handles uploads, optimization, resizing, conversion, watermarking, and bulk media replacement
* Connects to any WordPress site where this plugin is installed and activated

The WordPress plugin acts as the secure communication endpoint for the desktop app.

---

### Bulk media replacement

Desktop Media Uploader can replace existing WordPress media files in bulk.

This is useful when you need to update product images, replace seasonal graphics, refresh catalog media, or sync a large group of files without manually replacing each item one at a time.

Overwrite rules are intentionally strict. If multiple matching media entries are found, the app blocks the overwrite and reports the conflict instead of guessing.

---

### Image optimization and conversion

The desktop app can create optimized image files before upload, including WebP and AVIF versions when enabled.

If a converted file is larger than the source file, the converted file is discarded automatically.

The upload summary can show savings for optimized images, WebP files, WebP thumbnails, AVIF files, and skipped conversions.

---

### Beginner-friendly, power-user ready

The desktop app includes tooltips for new users and advanced settings for experienced users.

Tooltips can be disabled when you no longer need guidance.

---

### Open API

This plugin exposes an open API. Developers can build custom upload tools or integrations that communicate with it.

---

### Third-Party Service Disclosure

This plugin works with the Desktop Media Uploader companion desktop application, available from wpspeedmeup.com. The desktop application is a separate product and is required to use this plugin.

The desktop application is available as a free trial. After the trial period, continued use requires a paid annual license for $12.00. Full pricing details are available at https://wpspeedmeup.com.

When in use, the desktop application connects directly to your WordPress site through this plugin's REST endpoints. Media files are transferred only between the desktop app and your WordPress installation.

The desktop application also communicates with wpspeedmeup.com for license verification and update checks. This is handled by the desktop application, not the WordPress plugin. Please refer to the privacy policy for details of what data is transmitted during these requests.

Privacy Policy:
https://wpspeedmeup.com/privacy-policy/

== Installation ==

### Option 1: WordPress Plugin Installer

1. Go to **Plugins → Add New**.
2. Search for **Desktop Media Uploader**.
3. Click **Install Now**.
4. Click **Activate**.
5. Download and install the companion desktop app from https://wpspeedmeup.com.

### Option 2: Manual Install

1. Download the plugin ZIP from https://wpspeedmeup.com.
2. Go to **Plugins → Add New → Upload Plugin**.
3. Upload the ZIP file.
4. Click **Install Now → Activate**.
5. Download and install the desktop app to begin uploading.

Quick start guide:
https://wpspeedmeup.com/wp-content/hesk343/knowledgebase.php?article=14

== Frequently Asked Questions ==

### Do I need the desktop app?

Yes. The desktop application performs the uploads, queue handling, resizing, optimization, conversion, watermarking, and bulk replacement workflow.

The WordPress plugin acts as the secure connection endpoint.

---

### Does the app work on macOS and Windows?

Yes. The desktop app works on macOS and Windows 11.

---

### Can I upload folders?

Yes. You can drag files or folders into the desktop app.

---

### Can it handle thousands of files?

Yes. The desktop app is designed for large media batches and high-volume upload workflows.

Actual speed depends on your computer, network connection, image settings, hosting environment, and file sizes.

---

### How does bulk media overwrite work?

 Overwrite replaces an existing Media Library attachment when the uploaded file has the same file name and file extension as an existing file.

 If the upload date is set to Current, Desktop Media Uploader searches the Media Library for a matching file name and extension. If a matching Media Library entry is found, that attachment is replaced.

 If the upload date is set to File Date or Custom Date, Desktop Media Uploader uses the selected date to look in that upload directory for a matching file. If a matching Media Library entry is found, that attachment is replaced.

 If no matching Media Library entry is found, the file is uploaded as a new Media Library item.

 The Set post date option is only available when Overwrite is enabled. It applies only during replacement and lets Desktop Media Uploader update the existing media attachment’s post date when that attachment is replaced.

 This is similar to how Easy Media Replace by ShortPixel handles media replacement, but Desktop Media Uploader is designed for bulk desktop uploads.
---

### Does this plugin modify or delete original files?

Files on the desktop system are never modified or deleted. Original media files in the WordPress Media Library are preserved unless you explicitly use overwrite behavior to replace matching media files.

---

### Does this bypass WordPress image processing?

Yes. The desktop app performs image processing before upload. The WordPress plugin receives prepared media from the desktop app instead of asking WordPress to generate all image processing during the upload request.

This helps reduce server load during large media operations.

---

### Are WebP and AVIF conversions automatic?

They are created when the related options are enabled in the desktop app.

If a converted file is larger than the source file, it is automatically discarded.

Serving WebP or AVIF images on the front end may require theme support, server support, or an additional WordPress plugin depending on your site setup.

---

### Does this support WordPress Multisite?

No. WordPress Multisite is not currently supported.

---

### Where can I get support?

Plugin support: WordPress.org support forums

Desktop app support:
https://wpspeedmeup.com/wp-content/hesk343/

### Does the desktop app update automatically?
The desktop app checks for updates when it launches.
If an update is available, an Install Update button appears in the lower left of the app footer.
Updates are installed when you choose to — the app does not update automatically without your action.

== Screenshots ==

1. Normal upload of 5,022 media files totaling 4,928.66 MB, with WebP files, on localhost. This removes network and shared-hosting delays to show raw application performance with a real-world image workload.
2. Overwrite of the same 5,022 Media Library files totaling 4,928.66 MB on localhost, completed faster than the normal upload and showing that overwrite adds no meaningful performance penalty.
3. Configure image optimization, resizing, metadata removal, WebP and AVIF generation, file dates, and overwrite behavior.
4. Select which registered image sizes should be created.
5. Add a watermark using grid, absolute-position, or tiled placement.
6. View detected PHP upload limits and recommended server settings.
7. Configure upload limits, server throttling, scheduled pauses, file logging, and server debug logging.
8. Per-file failure reporting identifies individual files that could not be uploaded while allowing the remaining batch to complete.
9. Automatic network retry detects recoverable network errors and retries affected requests without restarting the full upload.

== Changelog ==

= 1.3.5 =

* Initial release

