Skip to content

Releases: nonstopmarketing/EZ-Plugin-Deploy

v1.8.5 — Clearer Cloudflare-challenge message

Choose a tag to compare

@nonstopmarketing nonstopmarketing released this 15 Aug 06:58

Not a bug — a clearer message

The intermittent "Unexpected server response" some users hit was a Cloudflare security challenge ("Just a moment…") intercepting the admin-ajax.php request and returning an HTML challenge page instead of JSON. It's not a plugin error and not a timeout — reloading the page refreshes your Cloudflare clearance cookie and the next attempt goes through.

Change

The drop zone and EZ Delete now detect a challenge/HTML response and show:

Blocked by a Cloudflare security challenge — not a plugin error. Reload the page (F5) to refresh your clearance, then try again.

…instead of the generic error, so it's obvious what happened.

Install

Install the attached wp-ez-plugin-deploy-1.8.5.zip.

v1.8.4 — Fix "Unexpected server response" on install

Choose a tag to compare

@nonstopmarketing nonstopmarketing released this 17 Jun 06:33

Root cause

WP_Ajax_Upgrader_Skin lives in its own file that WordPress core only loads inside its built-in update AJAX handlers — not for a custom AJAX action like this plugin's. Instantiating it when the class wasn't loaded threw a fatal, producing a 500 with an HTML error body, which the browser couldn't parse → "Unexpected server response."

Fixes

  • Explicitly require_once the skin class file when the class is missing
  • Disable display_errors inside the handler so PHP notices/deprecations can't leak into and corrupt the JSON response
  • Register a shutdown handler that returns any remaining fatal as a JSON error, so if anything else ever fails you'll see the actual message and line number instead of a generic 500
  • Bail with a clear message if WP_Filesystem() can't initialize

Install

Download and install the attached wp-ez-plugin-deploy-1.8.4.zip.

v1.8.3 — Fix zip packaging (backslash path separators)

Choose a tag to compare

@nonstopmarketing nonstopmarketing released this 13 Jun 19:01

The real root cause

Every prior "Plugin file does not exist" / nested-folder failure traces back to how the zip was built, not the PHP.

PowerShell's Compress-Archive wrote zip entries with Windows backslash separators (wp-ez-plugin-deploy\readme.txt). On a Linux server, WordPress's unpacker couldn't see a single root directory in those entries, so it:

  1. Wrapped everything in a folder named after the zip filename (wp-ez-plugin-deploy-1.8.x/)
  2. Converted backslashes to slashes on extraction

…yielding wp-ez-plugin-deploy-1.8.x/wp-ez-plugin-deploy/wp-ez-plugin-deploy.php and a broken activation path.

Fix

Release zips are now produced with git archive, which writes proper forward-slash paths plus an explicit directory entry. WordPress detects the single root and installs to wp-content/plugins/wp-ez-plugin-deploy/ correctly.

Action required

  1. Delete any leftover wp-ez-plugin-deploy-* folders in wp-content/plugins/ via File Manager.
  2. Download and install the wp-ez-plugin-deploy-1.8.3.zip attached to this release (not a self-built zip).

It will now activate cleanly.

v1.8.2 — Fix nested install folders

Choose a tag to compare

@nonstopmarketing nonstopmarketing released this 13 Jun 18:55

Fix

Recurring "Plugin file does not exist" activation error caused by plugins installing into a wrongly-nested folder like my-plugin-1.2.3/my-plugin/.

WordPress's installer only descends one level into a nested archive, so a zip whose contents sit two levels deep ends up with the destination folder named after the outer wrapper (often the zip filename + version). That path doesn't match the plugin's real location, so activation 500s.

What changed

  • During drop-zone installs, the plugin now hooks upgrader_source_selection to locate the real plugin folder inside the unpacked source and rename it to the clean detected slug before WordPress moves it into wp-content/plugins/. Any nesting is collapsed; the folder always lands with the correct name.

Note on existing broken installs

If you already have a wrongly-named folder on disk (e.g. wp-ez-plugin-deploy-1.8.1/), delete it via File Manager first, then install wp-ez-plugin-deploy-1.8.2.zip normally.

Install

Upload wp-ez-plugin-deploy-1.8.2.zip via Plugins → Add New → Upload Plugin, or drop it onto the EZ Plugin Deploy zone.

v1.8.1 — Fix "Plugin file does not exist" on update

Choose a tag to compare

@nonstopmarketing nonstopmarketing released this 13 Jun 18:20

Fix

"Plugin file does not exist" error when installing an update over an existing plugin.

The fallback plugin-file scan was excluding any path already listed in the pre-deactivation active plugins snapshot — which is exactly where the updated plugin lives. Replaced with get_plugins() scoped to the known slug folder, which has no such exclusion.

Install

Drop wp-ez-plugin-deploy-1.8.1.zip onto the EZ Plugin Deploy zone.

v1.8.0 — Fix EZ Delete and old-version removal

Choose a tag to compare

@nonstopmarketing nonstopmarketing released this 13 Jun 18:18

Fixes

EZ Delete wasn't deleting and old plugin version wasn't being removed before install — both caused by the same root issue: WP_Filesystem on shared hosting (like SiteGround, WP Engine, Cloudways) silently fails when it can't write files without FTP credentials, even though the web process itself has full permission.

Changes

  • All file deletion now uses native PHP unlink() / rmdir() directly, bypassing WP_Filesystem entirely
  • Zip slug is now read from the uploaded file before File_Upload_Upgrader moves it — previously the slug read could fail after the move, leaving $zip_slug empty so nothing got deactivated/deleted

Install

Drop wp-ez-plugin-deploy-1.8.0.zip onto the EZ Plugin Deploy zone (or upload via Plugins → Add New).

v1.7.2 — EZ Delete restored on all inactive plugins

Choose a tag to compare

@nonstopmarketing nonstopmarketing released this 13 Jun 17:58

Change

Reverts v1.7.1 — EZ Delete is restored on all inactive plugin rows. It is needed for removing dev plugins that have file permission issues with WordPress's native delete.

Install

Upload wp-ez-plugin-deploy-1.7.2.zip via Plugins → Add New → Upload Plugin, or drop it onto the EZ Plugin Deploy zone.

v1.7.1 — EZ Delete scoped to own row

Choose a tag to compare

@nonstopmarketing nonstopmarketing released this 13 Jun 17:54

Fix

EZ Delete link now only appears on the EZ Plugin Deploy row in the plugins list. Previously it was injected on every inactive plugin row, which was unintended.

Install

Upload wp-ez-plugin-deploy.zip via Plugins → Add New → Upload Plugin, or drop it onto the EZ Plugin Deploy zone.

v1.7.0 — Drop zone on Add Plugins page

Choose a tag to compare

@nonstopmarketing nonstopmarketing released this 13 Jun 17:52

What's New

  • Drop zone now appears on wp-admin/plugin-install.php (Add Plugins page) in addition to plugins.php

Previous release highlights (v1.6.x)

  • v1.6.1 — Fixed 500 / "Unexpected server response" error caused by plugin activation hooks that produce output (wrapped activate_plugin() in output buffering)
  • v1.6.0 — Full security hardening: nonce-before-capability, ZIP magic-byte validation, strict slug allowlist, realpath confinement, fixed undefined variable in fallback scan, activation hooks no longer suppressed

Installation

Download wp-ez-plugin-deploy.zip and upload via Plugins → Add New → Upload Plugin, or drop it onto the EZ Plugin Deploy zone itself.

Full changelog

See readme.txt