Env Control
A flexible WordPress plugin that automatically controls settings based on environment detection (production vs non-production). Use this as a foundation to implement custom environment-based controls for any WordPress setting. Perfect for multi-environment workflows.
Install
No release zip yet. The repository archive installs, but the folder name will carry the branch suffix and updates will not flow:
wp plugin install https://github.com/neodavet/envcontrol/archive/refs/heads/main.zipEnvironment Control
A flexible WordPress plugin that automatically controls settings based on environment detection (production vs non-production). Use this as a foundation to implement custom environment-based controls for any WordPress setting.
🎯 Overview
Environment Control provides intelligent environment detection and serves as a framework for implementing environment-specific WordPress configurations. The plugin includes search engine indexing control as a practical example, but can be extended to manage any WordPress setting based on your environment.
🚀 Key Features
Framework Capabilities
- Environment Detection Foundation: Robust detection using
WP_ENVconstant or URL comparison - Extensible Architecture: Easy to extend for custom environment-based controls
- Developer-Friendly Functions: Clean API for building custom environment logic
- Safe Defaults: Fail-safe behavior prevents accidental production issues
Built-in Example: Search Engine Control
- Automatic Indexing Control: Prevents search engines from indexing non-production sites
- Production Override: Allows indexing only on production environments
- Configurable Behavior: Control what happens when plugin is deactivated
User Interface
- Status Dashboard: Clear environment status under Tools menu
- Visual Indicators: Color-coded production/non-production status
- Configuration Panel: Easy setup and management
- Admin Notices: Helpful notifications for non-production environments
📋 Requirements
- WordPress: 6.9 or higher
- PHP: 7.0 or higher
- Permissions: Administrator privileges for configuration
- Tested up to: WordPress 6.9
🛠️ Installation
From WordPress.org (Coming Soon)
- Go to your WordPress admin dashboard
- Navigate to Plugins > Add New
- Search for "Environment Control"
- Install and activate the plugin
Manual Installation
- Download the plugin files
- Upload the
envcontrolfolder to/wp-content/plugins/ - Activate the plugin through the Plugins menu in WordPress
- Go to Tools > Environment Control to configure
⚙️ Quick Setup
1. Configure Production URL
- Navigate to Tools > Environment Control
- Enter your production site URL (e.g.,
https://www.yoursite.com/) - Save settings
2. Environment Detection Setup
Method A: WP_ENV Constant (Recommended)
Add to your wp-config.php:
// Production environment
define('WP_ENV', 'production');
// Non-production environments
define('WP_ENV', 'development');
define('WP_ENV', 'staging');
define('WP_ENV', 'testing');
Method B: URL Comparison
If WP_ENV is not defined, the plugin automatically compares:
- Current site URL:
home_url('/') - Configured production URL (from settings)
🔧 How It Works
Environment Detection Logic
Is WP_ENV defined?
├── Yes: Is WP_ENV === 'production'?
│ ├── Yes: Production Mode ✅
│ └── No: Non-Production Mode ⚠️
└── No: Does current URL match production URL?
├── Yes: Production Mode ✅
└── No: Non-Production Mode ⚠️
Built-in Search Engine Control
- Production: Search engines allowed to index
- Non-Production: Search engines automatically blocked
- Plugin Deactivation: Safe default (allows indexing)
🛡️ Extensibility Framework
For Developers
Use Environment Control as a foundation for custom environment-based features:
// Check environment in your custom code
if (env_control_is_production_environment()) {
// Production-only functionality
enable_analytics();
enable_caching();
} else {
// Development/staging functionality
enable_debug_mode();
disable_email_sending();
}
// Get plugin settings
$settings = env_control_get_settings();
$production_url = env_control_get_production_url();
Extend for Custom Controls
The plugin architecture makes it easy to add environment-based controls for:
- Email Settings: Disable email sending on non-production
- Analytics: Enable/disable tracking codes
- Caching: Environment-specific caching strategies
- Debug Settings: Automatic debug mode on development
- Payment Gateways: Sandbox vs live payment processing
- CDN Settings: Different CDN configurations per environment
- Social Media: Prevent social sharing on staging sites
Example Custom Extension
// Add custom environment-based email control
add_filter('pre_option_admin_email', function($default) {
if (!env_control_is_production_environment()) {
return 'dev@yoursite.com'; // Use dev email on non-production
}
return $default; // Use configured email on production
});
📝 Use Cases
Base Framework
- Multi-Environment Workflows: Consistent behavior across environments
- Custom Setting Control: Environment-specific WordPress configurations
- Development Safety: Prevent production issues during development
- Staging Protection: Isolate staging environments from production behaviors
Search Engine Control (Included)
- Development Sites: Prevent localhost indexing
- Staging Sites: Protect staging URLs from search engines
- Client Sites: Ensure development work stays private
- Testing Environments: Block accidental search engine discovery
🔌 Developer Functions
Available Functions
env_control_is_production_environment()- Check if current environment is productionenv_control_get_settings()- Get all plugin settingsenv_control_get_production_url()- Get configured production URL
Hooks and Filters
- Use WordPress standard hooks to extend functionality
- Filter
pre_option_{option_name}to control any WordPress option - Add admin notices with
admin_noticesaction
🤝 Contributing
We welcome contributions! This plugin is designed to be a community-driven framework.
Development
- Fork the repository
- Create a feature branch
- Make your changes and test thoroughly
- Submit a Pull Request
Ideas for Contributions
- Additional environment detection methods
- New example implementations
- Documentation improvements
- Performance optimizations
- Security enhancements
📊 Roadmap
Framework Enhancements
- [ ] WP-CLI commands for environment management
- [ ] Multi-site (network) support
- [ ] Advanced environment detection methods
- [ ] Built-in logging and monitoring
Example Implementations
- [ ] Email control module
- [ ] Analytics control module
- [ ] Debug settings module
- [ ] Payment gateway control module
Integration
- [ ] Popular development tool integrations
- [ ] Docker environment detection
- [ ] Cloud platform integrations
📄 License
GPL2+ License - Free and open source
This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version.
👨💻 Author
neodavet - Portfolio
🆘 Support
- Documentation: This README and inline code documentation
- Issues: GitHub Issues (coming soon)
- WordPress.org Support: Available after plugin publication
💡 Getting Started Tips
- Start Simple: Use the built-in search engine control to understand the plugin
- Extend Gradually: Add custom environment controls one at a time
- Test Thoroughly: Always test environment detection in your specific setup
- Use WP_ENV: More reliable than URL comparison for most hosting environments
- Safe Defaults: The plugin is designed to fail safely - when in doubt, it assumes production
⚠️ Important: Always test in development before deploying to production. This plugin can modify WordPress core settings based on environment detection.
🎯 Perfect For: Developers, agencies, and teams managing WordPress sites across multiple environments who want intelligent, automatic environment-based configuration management.