PHP Constants Manager
PHP Constants Manager provides a secure and user-friendly interface for managing PHP constants in WordPress. No more editing wp-config.php or theme files to add or modify constants!
Key Features
- Complete Constant Management: Create, read, update, and delete PHP constants from the WordPress admin
- Dual View System: “My Constants” for your custom constants and “All Constants” to view every constant in your WordPress installation
- Native WordPress UI: Built using WP_List_Table with sorting, searching, and bulk actions
- Multiple Data Types: Support for String, Integer, Float, Boolean, and NULL constant types with strict validation
- Real-time Validation: Form fields validate values against selected type with immediate feedback
- Active/Inactive States: Toggle constants on/off without deleting them
- Conflict Detection: Visual indicators show when constants are already defined elsewhere (predefined)
- Screen Options: Customize table views with adjustable items per page and column visibility controls
- Early Loading Option: Optional must-use plugin creation for loading constants before other plugins
- Load Order Awareness: Constants loaded during plugins_loaded action (priority 1) for broad compatibility
- Comprehensive Help: Built-in help system with detailed documentation and best practices
- Administrator Only: Secure access restricted to users with manage_options capability
- Database Storage: Constants stored safely in a custom database table with full audit trail
- Import/Export: Backup and migrate constants using CSV files with detailed error reporting
- WP-CLI Integration: Manage constants, import/export CSV, and toggle early loading from the terminal via
wp phpcm ...— ideal for automation, CI/CD, and multi-site provisioning
Understanding Predefined Constants
The plugin intelligently detects when constants are already defined by WordPress core, other plugins, or your theme: * Not Predefined: Your constant is unique and will work normally * Predefined: The constant exists elsewhere – your definition is saved but won’t override the existing value due to PHP’s constant rules
Use Cases
- Manage environment-specific configuration
- Toggle debug constants without file editing
- Store API keys and configuration values securely
- Create fallback constants for different environments
- Document constant purposes with built-in descriptions
- Audit all constants in your WordPress installation
- Backup constants to CSV files for migration between sites
- Import constants in bulk from properly formatted CSV files
- Automate site setup and deployment pipelines with WP-CLI (
wp phpcm add MY_KEY ...)
WP-CLI Commands
When WP-CLI is available, the plugin registers a phpcm command suite that mirrors the admin UI:
wp phpcm list [--active] [--inactive] [--type=<type>] [--search=<term>] [--format=<format>]— list managed constantswp phpcm get <name>— show a single constant (supports--field=<field>)wp phpcm add <name> [<value>] [--type=<type>] [--description=<text>] [--inactive] [--porcelain]— create a constant (value can be-to read from stdin)wp phpcm update <name> [--value=<value>] [--type=<type>] [--description=<text>] [--active|--inactive]— update fieldswp phpcm delete <name>... [--yes]— delete one or more by namewp phpcm activate|deactivate|toggle <name>...— flip active statewp phpcm defined <name>— report whether the constant is currently defined and by whom (this plugin, early-load, or elsewhere like wp-config.php)wp phpcm all-defines [--user-defined] [--search=<term>]— inspect every PHP constant present in the processwp phpcm status— plugin health summary (table, row counts, early-loading state)wp phpcm import <file|-> [--overwrite]— import CSV (file path or stdin)wp phpcm export [<file>] [--active] [--inactive] [--type=<type>]— write CSV to a file or stdoutwp phpcm early-loading enable|disable|status— manage the must-use plugin that loads constants before all other plugins
Run wp help phpcm <subcommand> for detailed usage, flags, and examples.
Developer Information
Database Schema
The plugin creates a custom table {prefix}phpcm_constants with the following structure:
* id – Primary key (auto-increment)
* name – Constant name (unique, varchar 191)
* value – Constant value (longtext)
* type – Data type (enum: string, integer, float, boolean, null)
* is_active – Whether the constant is loaded (tinyint)
* description – Optional description (text)
* created_at – Creation timestamp (datetime)
* updated_at – Last update timestamp (datetime)
WordPress Hooks Used
plugins_loaded(priority 1) – Early constant loading for maximum compatibilityadmin_menu– Menu registrationadmin_post_*– Form submission handlingwp_ajax_*– AJAX operationsWP_CLI::add_command('phpcm', ...)– Registers the CLI command when WP-CLI is available
Load Order & Compatibility
Constants are defined during plugins_loaded with priority 1, ensuring they are available to:
* All theme functions and templates
* Other plugins (unless using higher priority)
* WordPress core hooks like init, wp_loaded, etc.
Security Implementation
- Capability requirement:
manage_options(administrators only) - Nonce verification on all form submissions and AJAX requests
- SQL injection prevention with prepared statements
- Input sanitization using WordPress core functions
- Output escaping for all displayed data
Code Standards
This plugin follows WordPress coding standards and best practices: * PSR-4 autoloading structure * WordPress database abstraction layer * Internationalization ready * WP_List_Table implementation * Standard WordPress admin UI patterns
