Title: DownUp
Author: Deepak Rajpal
Published: <strong>October 23, 2026</strong>
Last modified: October 23, 2026

---

Search plugins

![](https://ps.w.org/downup/assets/banner-772x250.png?rev=3760849)

![](https://ps.w.org/downup/assets/icon-256x256.png?rev=3760849)

# DownUp

 By [Deepak Rajpal](https://profiles.wordpress.org/deepakrajpal/)

[Download](https://downloads.wordpress.org/plugin/downup.1.0.0.zip)

 * [Details](https://wordpress.org/plugins/downup/#description)
 * [Reviews](https://wordpress.org/plugins/downup/#reviews)
 *  [Installation](https://wordpress.org/plugins/downup/#installation)
 * [Development](https://wordpress.org/plugins/downup/#developers)

 [Support](https://wordpress.org/support/plugin/downup/)

## Description

DownUp marks a plugin or theme’s current version as a pre-release of itself (appending
a `-dev` suffix, e.g. `1.4.2` becomes `1.4.2-dev`), purely so WordPress’s own update
system offers a normal update for it. Nothing is downloaded or changed beyond that
one version number — WordPress (or the plugin’s/theme’s own update source) does 
the rest, exactly as if a real new release had come out.

**In short:**

 * Works on both **plugins and themes**, the same way.
 * Never downloads, installs, or touches anything beyond that one version line.
 * **Enabled by default** for everything — an opt-out settings screen, not opt-in.
 * Two use cases, same mechanism either way — see below.

#### Main use case: force a clean reinstall

Sometimes a plugin or theme is already on its latest version, but you still want
WordPress to redownload and reinstall it anyway — a file went missing, got corrupted,
was tampered with, or you just want to be sure you’re running an unmodified copy
of what’s actually published. WordPress has no built-in “reinstall this even though
it’s already current” button for an individual plugin or theme. This plugin gives
you one: it marks the current version as a pre-release of itself, so WordPress offers
a completely normal update — which reinstalls that exact same version, fresh.

#### Secondary use case: forcing an update check after a same-version redeploy

If you deploy your own plugin or theme code to multiple environments (e.g. staging
and production) without bumping the version number every time, WordPress correctly
sees no version difference and never shows an update — even though the code changed.
Instead of hand-editing the version header down and back up on every deploy, this
plugin does it for you.

#### How it works, either way

On demand, it rewrites the `Version:` header to a lower pre-release value (e.g. `
1.4.2` becomes `1.4.2-dev`). WordPress (or the plugin’s/theme’s own update checker,
if it has one) then reports an update is available, and you complete it the normal
way via Update Now.

It never downloads, installs, or modifies any code beyond that one header line. 
It relies entirely on WordPress’s own update mechanism, or the target plugin’s/theme’s
own legitimate update source.

#### Workflow

 1. As soon as the plugin is active, every installed plugin gets a “Prepare Update”
    row action on the Plugins page; every installed theme gets the same link on the
    Tools > DownUp screen (WordPress’s Themes screen doesn’t support in-context custom
    actions the way the Plugins screen does). Uncheck any plugin or theme you don’t
    want this on there.
 2. After deploying new code with an unchanged version number, click “Prepare Update”
    for the plugin (on the Plugins page) or theme (on Tools > DownUp) you just deployed.
 3. Click “Update Now” as usual to finish.

## Screenshots

[⌊The Tools > DownUp screen: choose which plugins and themes get a "Prepare Update"
action. Everything is enabled by default.⌉⌊The Tools > DownUp screen: choose which
plugins and themes get a "Prepare Update" action. Everything is enabled by default
.⌉[

The Tools > DownUp screen: choose which plugins and themes get a “Prepare Update”
action. Everything is enabled by default.

[⌊The Plugins screen: each plugin gets a "Prepare Update" row action (highlighted).
After you click it, WordPress shows its normal "update available" notice (see the
Purgify row) and Update Now finishes the job.⌉⌊The Plugins screen: each plugin gets
a "Prepare Update" row action (highlighted). After you click it, WordPress shows
its normal "update available" notice (see the Purgify row) and Update Now finishes
the job.⌉[

The Plugins screen: each plugin gets a “Prepare Update” row action (highlighted).
After you click it, WordPress shows its normal “update available” notice (see the
Purgify row) and Update Now finishes the job.

## Installation

 1. Upload the `downup` folder to `/wp-content/plugins/`, or install it through the
    Plugins > Add New screen in wp-admin.
 2. Activate the plugin through the Plugins screen.
 3. That’s it — every plugin now has a “Prepare Update” row action on the Plugins page.
    Go to Tools > DownUp to manage themes, or to turn this off for specific plugins
    or themes.

## FAQ

### Does this plugin download or install anything?

No. It only rewrites one line (the `Version:` header) in the target plugin’s or 
theme’s main file. The actual download and install still happens through WordPress’s
own “Update Now,” using either WordPress.org or the target’s own legitimate update
source — never this plugin.

### What exactly does “Prepare Update” do?

It appends a `-dev` suffix to the current version (e.g. `1.4.2` becomes `1.4.2-dev`).
Since that string compares as lower than the real version, WordPress’s normal update
check reports an update is available, the same way it would for a genuine new release.

### Why a `-dev` suffix instead of just lowering the version number?

Decrementing a number (e.g. `1.4.2` to `1.4.1`) risks colliding with a real version
that was actually released before. Appending `-dev` is always guaranteed to compare
as lower without guessing at arithmetic or matching a real past release.

### What if I click “Prepare Update” twice by accident?

Nothing happens the second time — the plugin detects the version already carries
the `-dev` marker and refuses, asking you to finish or cancel the pending update
first.

### I clicked “Prepare Update” but no update is showing. Why?

“Prepare Update” only makes your installed version look like a pre-release of itself.
WordPress still needs an update source that knows about the real version, so an 
update only shows if the latest version that source reports is equal to or higher
than the version you had installed.

The most common cause is publishing a brand-new release and preparing it straight
away: WordPress.org’s update check can lag behind the plugin’s own page for a while,
so it still reports the previous release — which is lower than yours, so there is
nothing to offer yet. Wait a while, then go to Dashboard > Updates and click “Check
again”.

Also note that a plugin or theme with no update source at all (not on WordPress.
org and without its own updater) will never show an update, however it’s prepared.

### How do I stop this from showing up for a specific plugin or theme?

Go to Tools > DownUp and uncheck it in the Plugins or Themes list there. Everything
is enabled by default; unchecking an item just hides the “Prepare Update” link for
it.

### Does this work on themes too, or just plugins?

Both, but not identically in the UI. Plugins get a “Prepare Update” row action right
on the Plugins page, because WordPress supports custom row actions there. Themes
don’t have an equivalent — WordPress’s Themes screen is built from JS templates 
that only recognize a few fixed buttons (Activate, Customize, Delete), so there’s
no way to inject a custom action into it. Themes instead get their “Prepare Update”
link on the Tools > DownUp screen itself. Either way, the underlying mechanism is
identical — a `-dev` suffix appended to the `Version:` line — and the resulting “
update available” notice still shows up normally wherever WordPress would normally
show it (the Plugins list, or the theme’s tile on Appearance > Themes).

### Is this safe to use on any plugin or theme?

It only touches the item’s own version header, nothing else, and requires the `update_plugins`(
or `update_themes`) capability plus a nonce on every action. That said, it will 
happily “prepare” anything you point it at — including things you didn’t mean to—
so it’s worth keeping the settings checklist limited to what you actually manage
this way.

## Reviews

![](https://secure.gravatar.com/avatar/ad55b5aee38de7dd702f5dd2c258638c9d28358776d3a9e9341b4bfb7eaf279d?
s=60&d=retro&r=g)

### 󠀁[Works like a charm!](https://wordpress.org/support/topic/works-like-a-charm-2478/)󠁿

 [manishk90123](https://profiles.wordpress.org/manishk90123/) October 23, 2026

Super easy to use and works just as expected. 👍

 [ Read all 1 review ](https://wordpress.org/support/plugin/downup/reviews/)

## Contributors & Developers

“DownUp” is open source software. The following people have contributed to this 
plugin.

Contributors

 *   [ Deepak Rajpal ](https://profiles.wordpress.org/deepakrajpal/)

[Translate “DownUp” into your language.](https://translate.wordpress.org/projects/wp-plugins/downup)

### Interested in development?

[Browse the code](https://plugins.trac.wordpress.org/browser/downup/), check out
the [SVN repository](https://plugins.svn.wordpress.org/downup/), or subscribe to
the [development log](https://plugins.trac.wordpress.org/log/downup/) by [RSS](https://plugins.trac.wordpress.org/log/downup/?limit=100&mode=stop_on_copy&format=rss).

## Changelog

#### 1.0.0

 * Initial release: enabled by default for all plugins and themes (opt-out settings
   list), fake-downgrade action for both, WP-CLI commands (`wp downup prepare <plugin
   >`, `wp downup prepare-theme <theme>`).

## Meta

 *  Version **1.0.0**
 *  Last updated **3 days ago**
 *  Active installations **Fewer than 10**
 *  WordPress version ** 5.6 or higher **
 *  Tested up to **7.1.3**
 *  PHP version ** 7.4 or higher **
 * Tags
 * [deployment](https://wordpress.org/plugins/tags/deployment/)[developer-tools](https://wordpress.org/plugins/tags/developer-tools/)
   [reinstall](https://wordpress.org/plugins/tags/reinstall/)[themes](https://wordpress.org/plugins/tags/themes/)
   [updates](https://wordpress.org/plugins/tags/updates/)
 *  [Advanced View](https://wordpress.org/plugins/downup/advanced/)

## Ratings

 5 out of 5 stars.

 *  [  1 5-star review     ](https://wordpress.org/support/plugin/downup/reviews/?filter=5)
 *  [  0 4-star reviews     ](https://wordpress.org/support/plugin/downup/reviews/?filter=4)
 *  [  0 3-star reviews     ](https://wordpress.org/support/plugin/downup/reviews/?filter=3)
 *  [  0 2-star reviews     ](https://wordpress.org/support/plugin/downup/reviews/?filter=2)
 *  [  0 1-star reviews     ](https://wordpress.org/support/plugin/downup/reviews/?filter=1)

[Your review](https://wordpress.org/support/plugin/downup/reviews/#new-post)

[See all reviews](https://wordpress.org/support/plugin/downup/reviews/)

## Contributors

 *   [ Deepak Rajpal ](https://profiles.wordpress.org/deepakrajpal/)

## Support

Got something to say? Need help?

 [View support forum](https://wordpress.org/support/plugin/downup/)