About This Plugin
StageGuard is a WordPress plugin designed to clearly indicate and manage a staging environment. It provides various features to protect your staging site, prevent accidental emails, and manage plugin activations.
- Displays a prominent message in the admin panel and on the frontend indicating a staging environment – only if WooCommerce is not installed
- Automatically deactivates specific plugins on staging environments
- Prevents activation of certain plugins and provides a custom error message
- Activates Coming Soon mode for WooCommerce (if installed)
- Modifies search engine visibility settings
- Provides password protection for the staging site (redirects to WordPress login)
- Advanced IP restriction with multiple formats:
- Individual IP addresses (e.g., 192.168.1.1)
- CIDR notation for IP ranges (e.g., 192.168.1.0/24)
- IP address ranges (e.g., 192.168.1.1-192.168.1.10)
- Supports both IPv4 and IPv6
- Automatic localhost whitelisting for safety
- Smart proxy header detection (X-Forwarded-For, X-Real-IP)
- Filters robots.txt to discourage search engine indexing (no physical file modification)
- Catches and logs emails sent from the staging environment
- Includes WP-CLI commands for managing the plugin
- Clean, modular architecture with separated concerns
StageGuard will deactivate the following plugins:
- BunnyCDN
- Redis Cache
- Google Listings and Ads
- Metorik Helper
- Order Sync with Zendesk for WooCommerce
- Redis Object Cache
- RunCloud Hub
- Site Kit by Google
- Super Page Cache for Cloudflare
- WooCommerce – ShipStation Integration
- WP OPcache
- Headers Security Advanced & HSTS WP
- WP-Rocket
- Tidio Chat
- LiteSpeed Cache
- WP Fastest Cache
- PhastPress
- W3 Total Cache
- WP Optimize
- Autoptimize
- NitroPack
- WP Sync DB
- WP Sync DB Media Files
- UpdraftPlus
- Mailchimp for WooCommerce
- Upload the stageguard folder to the /wp-content/plugins/ directory.
- Activate the plugin through the ‘Plugins’ menu in WordPress.
- Go to Settings > StageGuard to configure the plugin.
Navigate to Settings > StageGuard in your WordPress admin panel to configure:
Toggle WordPress debug mode on or off. When enabled, WP_DEBUG constant will be set to true in wp-config.php.
Enable to redirect non-logged-in users to the WordPress login page. This ensures only authenticated users can access the staging site.
Enable IP-based access control to restrict who can view the staging site.
Specify IP addresses that should have access to the staging site. Supports multiple formats:
- Individual IPs: 192.168.1.1 (one per line)
- CIDR Notation: 192.168.1.0/24 (allows entire subnet)
- IP Ranges: 192.168.1.1-192.168.1.10 (allows range of IPs)
- IPv6 Support: 2001:db8::1 or 2001:db8::/32
The system automatically whitelists 127.0.0.1 and ::1 (localhost) for safety. Your current IP address is displayed in the settings page for convenience.
You can view the StageGuard logs in two ways:
- Admin Interface: Go to Settings > StageGuard Logs in the WordPress admin area.
- WP-CLI: Use the command wp stageguard show_log to view logs in the terminal.
StageGuard supports the following WP-CLI commands:
- wp stageguard debug_mode <on|off>: Toggle debug mode on or off.
- wp stageguard show_log [–lines=<number>]: Display the StageGuard log. Use the –lines option to specify the number of lines to show (default is 50).
- wp stageguard status: Shows current status.
- wp stageguard password_protection: Toggle password protection on or off.
- wp stageguard ip_restriction: Toggle IP restrictions on or off.
- wp stageguard show_log –clear: Clearing logs.
If you’re having issues with StageGuard, check the following:
- Logging Issues: Ensure that the web server has write permissions to the wp-content directory for logging.
- Staging Indicator Not Showing: Check if your theme is properly loading the wp_head action.
- Password Protection Not Working: Make sure you’re not already logged in to WordPress. The protection only affects non-authenticated users.
- IP Restriction Issues:
- Verify your IP format is correct (use the formats shown in Configuration section)
- Check if you’re behind a proxy – the plugin detects X-Forwarded-For headers
- Remember that 127.0.0.1 and ::1 are always whitelisted
- robots.txt Not Updating: The plugin uses WordPress’s virtual robots.txt. If you have a physical robots.txt file, it will take precedence. Delete the physical file to use the plugin’s filter.
- WordPress: 6.4 or higher
- PHP: 8.0 or higher
- License: GPL-2.0-or-later
For support, please open an issue on the GitHub repository.
We welcome contributions! Please feel free to submit pull requests or open issues for bugs and feature requests.