Launch offer
20% off every Pro tier — and every renewal — for a limited time. Use the code at checkout:
Plugins & themes (Pro) — Pro
Activate, deactivate, switch theme, update either, install either — behind the same licence, capability and preview gates as every other write, with the reversible three snapshotted and the irreversible four saying so plainly.
Site owners who want “deactivate that plugin and see if the error goes away” to be a sentence, not a session in wp-admin.
Each of these is carried by named operations that exist in the release you can download today. The ids under every answer are the calls involved — nothing here is a plan.
Activation state is snapshotted before the change, and rollback restores it through every guard a forward call would run. A network-activated plugin is refused.
plugin-deactivate needs activate_plugins plugin-activate needs activate_plugins Each update is previewed and applied one at a time, and verified by the version actually installed afterwards — never by WordPress’s cached notion of what was waiting. Updates cannot be rolled back, and say so.
plugin-update needs update_plugins theme-update needs update_themes It takes the slug and nothing else — no web address, no zip, no file path — fetches only the download link WordPress.org answers with, and stores what lands deactivated. A failed install removes exactly the folder it part-wrote.
plugin-install needs install_plugins theme-install needs install_themes theme-switch needs switch_themes Activate, deactivate, switch theme, update and install — acting on the site’s own extensions, behind the same gates as everything else.
Needs: SiteHelm Pro on a licensed site. Where it is absent the operation refuses by name, rather than failing obscurely.
0 operations that only report. A read still asks WordPress for a capability against the object.
7 that change something — each one previewed as a diff, snapshotted, verified by reading the site back, and reversible from wp-admin.
This area is part of the Pro add-on. On an unlicensed site every call here refuses with IntegrationUnavailable rather than quietly doing nothing.
There is no argument anywhere that accepts a URL, a zip or a file path, and a site that sets DISALLOW_FILE_MODS is refused by name. What installs is only ever what WordPress.org itself serves.
Activate, deactivate and theme-switch snapshot the state they replace and restore it through every forward guard, so a rollback refuses on the same grounds a forward call would. The updates and installs say plainly that they cannot be rolled back, because WordPress has no clean way back to an older version.
Installing takes a WordPress.org slug and nothing else. There is no argument that accepts a URL, a zip or a file path, the only address ever fetched is the download link WordPress.org itself answers with, and what lands is stored deactivated — a theme is never made live by its install.
A site that sets DISALLOW_FILE_MODS or DISALLOW_FILE_EDIT refuses the four file writes by name, and keeps the three that only flip an option.
Get the free plugin What Pro costs How a write is guarded
Popups built with no trigger armed, dynamic tags checked against the registry the site actually has, and brand kits switchable in one call — with the undo created before the switch.
6 opsEvery area of the catalogue, by what it lets you do.
indexEvery operation on the site in one list, with capability, risk and rollback.
reference