Skip to content

Deployment Guard 0.1.0

Choose a tag to compare

@lazdins lazdins released this 05 Oct 07:11
· 4 commits to main since this release

Initial release of Deployment Guard, which locks editorial changes during deployments and migrations while the public site stays online.

Features

  • Manual editorial freeze from Tools > Deployment Guard or WP-CLI, and scheduled freeze windows evaluated against the site timezone on every relevant request (not dependent on WP-Cron).
  • Content write protection in classic wp-admin and the block editor: posts, pages, custom post types, revisions, taxonomies and terms, media, navigation menus, widgets and the Customizer.
  • REST API write protection (HTTP 423, error code deployment_guard_active) and XML-RPC write protection for content-changing methods; read-only requests are untouched.
  • deployment_guard_bypass capability, granted to roles with manage_options on activation and checked independently of role names.
  • WP-CLI commands other than wp deployment-guard are blocked from changing protected content during a freeze (use --user=<account with bypass> for an intentional change), and scheduled posts of protected types are held: they stay scheduled and publish normally after the freeze ends.
  • wp deployment-guard status|enable|disable|schedule.
  • Admin notice during a freeze (classic screens and block editor), settings screen with a bounded activity log, per-site Multisite operation, and a DEPLOYMENT_GUARD_FORCE constant to force the freeze on or off.

Requirements

WordPress 6.6+ and PHP 8.1+. GPL-2.0-or-later. No telemetry and no outbound HTTP requests.

Installation

Download deployment-guard.zip below and upload it under Plugins > Add New > Upload Plugin, or unzip it into wp-content/plugins/.

SHA-256: 3d1a7f07a42caeca3e19175ccb6d1388d30a63f9004240ccae7f61e961903956

Known limitations

The freeze works through WordPress's own entry points, capability checks and content functions. Direct database changes and third-party code that writes content without capability checks are outside what it can block. See the documented limitations.

Full details: CHANGELOG.md.