WordPress update control

Decide exactly what updates and when

Disable Updates lets you hold back WordPress core, its translations, and any individual plugin or theme, so nothing updates or nags about updating until you decide it should.

  • Block core version updates and core translation downloads separately.
  • Choose exactly which plugins and themes stay held back.
  • Control plugin and theme translation updates independently too.
  • Notifications disappear right along with the update itself.
Update ControlDisable Updates

WordPress Core

Core version updatesPrevents WordPress from checking for and installing core version updates.
Core translationsPrevents WordPress from downloading updated core language files.

Plugins

UpdatesTranslations
Perfmatters
Query Monitor
2 items held backCore and one plugin, held at their current version.
Active
Quick answer

What does Disable Updates do?

When the disable_updates module is active, TOWP_Disable_Updates filters WordPress's own update transients, pre_site_transient_update_core, site_transient_update_plugins and site_transient_update_themes, to strip out whatever's been selected to hold back, and vetoes the matching auto_update_* filters so nothing updates silently in the background either. Core version updates, core translations, and each plugin and theme individually, along with their own translation files, can all be controlled separately; because anything held back moves into the transient's no_update list rather than simply getting deleted, WordPress registers it as checked and current rather than leaving it in an ambiguous state.

The "updates whenever WordPress feels like it" problem

Updating shouldn't be something that just happens overnight

Since updates arrive on WordPress's own schedule, a site has no built-in way to say "not yet" to just one plugin.

Core, plugins and themes all update on their own schedule

WordPress checks for and can automatically apply updates to core, plugins and themes without asking, which works fine until an update changes something a site actually depended on.

There's no built-in way to hold specific things back

A site that wants to update deliberately, on a staging copy first or during a planned maintenance window, has no native way to say "not this plugin, not yet" without disabling automatic updates everywhere at once.

A dedicated WordPress solution

Held back exactly where you choose

The module gives granular control over what updates and what doesn't, all the way down to individual plugins and their translation files.

Core, held back on its own

Stop WordPress core from checking for or installing version updates, independent of anything else.

Plugins and themes, one at a time

Choose exactly which plugins and themes stay at their current version, leaving everything else to update normally.

Translations, controlled separately

Hold back language file updates for core, or for any individual plugin or theme, independently of their version updates.

Verified feature set

Granularity down to one plugin's translations

Every capability below is present in the supplied PHP class and its settings registration.

Core translations

Language file updates held back separately

Core translation entries get stripped from the update transient, and automatic translation updates for core are vetoed independently of the version update setting.

site_transient_update_coreauto_update_translation
Per-plugin control

Held back individually, by slug

The module removes each selected plugin from the pending-updates list, moves it into the no_update list, and vetoes its own automatic update too.

site_transient_update_pluginsPer-plugin slug matching
Per-theme control

The same granularity for themes

Each selected theme gets the identical treatment: removed from pending updates, marked as current, and excluded from automatic updates.

site_transient_update_themesPer-theme slug matching
Per-plugin and per-theme translations

A separate column of control

Translation updates for individual plugins and themes can be held back independently of their version updates, matching the two-column layout in the settings screen.

Independent from version updatesMatched by slug and type
Proper transient handling

Marked current, not just hidden

A held-back item moves into the transient's no_update property rather than simply disappearing, so WordPress registers it as checked and current.

no_update propertyClean transient state
Practical use cases

Where deliberate updating helps most

The module supports any workflow where updates happen on purpose, not by default.

Staging-first update workflows

Hold plugins and themes at their current version until an update has passed testing on a staging copy of the site.

Scheduled maintenance windows

Keep everything at its current version between planned update windows, rather than letting changes land whenever WordPress checks.

A plugin or theme with a known problematic update

Hold back one specific plugin that's had update issues before, while letting everything else on the site continue updating normally.

Operational benefits

Precise control, not a blanket switch

The module combines fine-grained selection with proper suppression of both notifications and silent updates.

Precise, not all-or-nothingEvery other WordPress update-control approach tends to be global; this one goes down to individual plugins, themes and their translations.
No mismatched naggingSuppressing the notification along with the update means the admin doesn't keep showing an update count for something deliberately held back.
Silent auto-updates blocked tooVetoing the auto_update filters closes the background update path, not just the manual one visible in the dashboard.
A deliberate decision, not a defaultUpdating becomes something a site owner chooses to do, on their own schedule, rather than something that happens automatically.
Performance behaviour

Filters existing data, adds no requests

The verified implementation reuses WordPress's own update-check data rather than duplicating any of it.

Filters existing transients, no extra requests

The module works entirely by filtering WordPress's own update-check data; it doesn't add any additional API calls or database queries of its own.

No effect on items not selected

Anything not explicitly held back passes through the filters untouched, so normal updates for everything else aren't slowed down.

A handful of array operations

Each filter callback does simple array filtering and lookups against the saved settings, adding negligible processing time.

Security implementation

An honest trade-off, stated plainly

The code separates concerns carefully and never hides the responsibility that comes with holding an update back.

01

An explicit, documented trade-off

The settings screen itself states plainly that anything held back stays at its current version, and tracking what needs updating becomes the site owner's responsibility.

02

Administrator-only configuration

Only an administrator with access to TheOneWP settings can choose what gets held back.

03

Version and translation control kept separate

Since the two operate independently, holding back a translation update doesn't silently also hold back a security-relevant version update, and vice versa.

04

No effect on manual updates through wp-admin

An administrator can still manually trigger an update for anything held back; the module only suppresses the automatic check and notification.

Verified compatibility

Built around every native WordPress update transient and filter

The supplied code integrates through APIs present in WordPress core; this page makes no compatibility claim beyond the verified implementation.

Core updates

pre_site_transient_update_core and auto_update_core

The standard WordPress filters for intercepting the core update check and controlling core auto-updates.

pre_site_transient_update_coreauto_update_core
Plugin and theme updates

site_transient_update_plugins and site_transient_update_themes

The same transients WordPress itself populates with pending plugin and theme updates, filtered here per selection.

site_transient_update_pluginssite_transient_update_themes
Auto-update vetoes

auto_update_plugin, auto_update_theme, auto_update_translation

The three filters WordPress core checks before applying any automatic background update, used here to veto updates for held-back items specifically.

auto_update_pluginauto_update_translation
Solution comparison

TheOneWP versus common alternatives

Compare the verified Disable Updates implementation with a typical wp-config.php constant.

CapabilityTheOneWP Disable UpdatesOther common solutions
Holding back core updates Version and translations controlled separatelyUsually an all-or-nothing constant in wp-config.php
Per-plugin and per-theme control Individually selectable, with translations tooRarely available without a dedicated plugin
Silent background updates Vetoed alongside the visible notificationOften only the notification is addressed, not auto-updates
Transient handling Marked as checked and current, not left ambiguousA naive filter can leave WordPress's update state inconsistent
Administration One settings screen for core, every plugin and themeRequires a mix of constants, snippets and separate plugins
Recommended workflow

Take control of updates in four steps

Since responsibility shifts to the site owner, decide deliberately what actually needs holding back.

01

Enable Disable Updates

Activate the module from the TheOneWP settings.

02

Decide on core

Hold back core version updates, core translations, or both, based on how the site's update schedule works.

03

Select specific plugins and themes

Check the individual plugins and themes that should stay at their current version, and their translations if needed.

04

Update deliberately

Apply held-back updates manually, on staging first if that's the workflow, whenever the site is actually ready.

Best practices

Hold back deliberately, track what's paused

Since tracking becomes the site owner's job, a little discipline keeps held-back updates from being forgotten.

01

Hold back only what genuinely needs it

Selecting everything by default defeats much of the value of staying current; use this for specific, deliberate exceptions.

02

Track what's held back somewhere

Since the settings screen itself notes that tracking becomes the site owner's responsibility, keep a record of what's paused and why.

03

Revisit held-back items regularly

A plugin held back during a past issue may be safe to update again; check periodically rather than leaving it paused indefinitely.

04

Prioritize security-relevant updates

Be especially deliberate about holding back anything with a known security fix; test and apply those as quickly as the workflow allows.

Common mistakes

Avoid habits that create real risk

Holding back updates is powerful, and the same power creates a real responsibility to track it.

Holding back updates and forgetting about them

An update paused for a good reason during a busy week can stay paused far longer than intended without a way to track it.

Assuming a translation toggle also affects the version

Because version updates and translation updates operate independently, disabling one doesn't touch the other.

Leaving security-relevant plugins held back too long

A plugin paused for compatibility reasons can also be the one that needs a security update the most; check held-back items regularly.

Frequently asked questions

Disable Updates FAQ

These answers come directly from the verified class and its settings registration.

What does Disable Updates do?

It lets an administrator hold back WordPress core, core translations, and individual plugins, themes and their translations, suppressing both the update notification and any silent automatic update.

Does this stop me from updating manually?

No. An administrator can still trigger an update manually through wp-admin for anything held back; the module only suppresses the automatic check and notification.

Can I hold back a plugin's version updates but keep its translations current?

Yes. Each plugin and theme lets you control version updates and translation updates independently.

Does holding back core translations affect core version updates?

No. Core version updates and core translation updates are two separate settings, controlled by different filters.

Does this stop WordPress from auto-updating something in the background?

Yes. The module vetoes the relevant auto_update filters for anything held back, closing the silent background update path as well as the visible one.

How does the module know which plugin a saved setting refers to?

It converts each plugin's file path into a canonical slug, the same identifier the settings screen used when saving the choice.

What happens to something held back in WordPress's own update count?

It moves into the update transient's no_update list, so WordPress registers it as checked and current rather than leaving it in an inconsistent state.

Is there a risk to holding back updates long-term?

Yes. The settings screen itself notes that anything held back stays at its current version, so tracking what still needs updating becomes the site owner's responsibility.

Can I hold back an entire category, like all plugins, at once?

Each plugin and theme is selected individually; there's no single switch for "all plugins" or "all themes" as a category.

Who can change what's held back?

Only an administrator with access to the TheOneWP settings screen.

Stop letting updates happen overnight.Choose exactly what updates, and when.

Use Disable Updates to hold back core, individual plugins, themes and their translations, until you're ready to update deliberately.