Fluent configuration management for WordPress
$config = new Config($rootDir);
$config
->set('WP_DEBUG', true)
->set('WP_HOME', env('WP_HOME'))
->when($config->get('WP_ENV') === 'development', function($config) {
$config
->set('SAVEQUERIES', true)
->set('SCRIPT_DEBUG', true);
})
->apply();- π Fluent API for clean, chainable configuration
- π Built-in environment variable loading
- π Conditional configuration with
when() - π¦ Zero dependencies (except
vlucas/phpdotenv)
- PHP >= 8.1
- Composer
composer require roots/wp-config:^2.0use Roots\WPConfig\Config;
$config = new Config($rootDir);
$config->bootstrapEnv();
$config
->set('WP_DEBUG', true)
->set('WP_HOME', 'https://example.com')
->apply();$config
->when(env('WP_ENV') === 'development', function($config) {
$config
->set('WP_DEBUG', true)
->set('SAVEQUERIES', true)
->set('SCRIPT_DEBUG', true);
});$home = $config->get('WP_HOME');
$config
->set('WP_SITEURL', $config->get('WP_HOME') . '/wp')
->apply();The Config class includes built-in support for loading environment variables:
$config->bootstrapEnv(); // Loads .env and .env.local files
$config
->set('DB_NAME', env('DB_NAME'))
->set('DB_USER', env('DB_USER'))
->apply();{
"require": {
"roots/wp-config": "^2.0"
}
}Before:
Config::define('WP_DEBUG', true);
Config::define('WP_HOME', env('WP_HOME'));
Config::apply();After:
$config = new Config($rootDir);
$config
->set('WP_DEBUG', true)
->set('WP_HOME', env('WP_HOME'))
->apply();Before:
// config/environments/development.php
Config::define('WP_DEBUG', true);
Config::define('SAVEQUERIES', true);
// config/application.php
Config::define('WP_HOME', env('WP_HOME'));
Config::apply();After:
$config
->set('WP_HOME', env('WP_HOME'))
->when($config->get('WP_ENV') === 'development', function($config) {
$config
->set('WP_DEBUG', true)
->set('SAVEQUERIES', true);
})
->apply();Before:
$dotenv = Dotenv::createImmutable($rootDir);
$dotenv->load();After:
$config = new Config($rootDir);
$config->bootstrapEnv();Creates a new Config instance with the specified root directory.
Loads environment variables from .env files.
Sets a configuration value.
Gets a configuration value.
Conditionally executes configuration logic.
Applies all configuration values by defining constants.
ConstantAlreadyDefinedException: Thrown when attempting to redefine a constantUndefinedConfigKeyException: Thrown when accessing an undefined configuration key