arraypress / wp-register-settings
A flexible WordPress settings manager with caching, dot notation, and smart defaults for plugin development.
Installs: 0
Dependents: 0
Suggesters: 0
Security: 0
Stars: 0
Watchers: 0
Forks: 0
Open Issues: 0
pkg:composer/arraypress/wp-register-settings
Requires
- php: >=7.4
This package is auto-updated.
Last update: 2025-12-04 21:07:57 UTC
README
A flexible WordPress settings manager with caching, dot notation support, registry pattern, and global helper functions.
Installation
composer require arraypress/wp-settings-utils
Usage
Registration
// Register a settings manager (first one becomes default) register_settings_manager( 'myplugin', 'myplugin_settings', [ 'api_key' => '', 'enable_feature' => true, 'max_items' => 10, ] );
Getting & Setting Values
// Get a setting $api_key = get_setting( 'api_key' ); $max = get_setting( 'max_items', 5 ); // With default // Update a setting update_setting( 'api_key', 'new_key_value' ); // Check if setting exists if ( has_setting( 'api_key' ) ) { // Setting exists } // Delete a setting delete_setting( 'api_key' );
Dot Notation
// Set nested values update_setting( 'api.stripe.public_key', 'pk_live_...' ); update_setting( 'api.stripe.secret_key', 'sk_live_...' ); // Get nested values $public_key = get_setting( 'api.stripe.public_key' ); // Check nested values if ( has_setting( 'api.stripe.secret_key' ) ) { // Secret key is set }
Accessing the Manager Directly
// Get the default manager $manager = settings_manager(); $manager->all(); // Get all settings $manager->reset(); // Reset to defaults $manager->clear_cache(); // Force reload from database // Get a specific manager by name $manager = settings_manager( 'myplugin' ); $manager->register_defaults( [ 'new_option' => 'value', ] );
Multiple Managers
// Register multiple managers register_settings_manager( 'myplugin', 'myplugin_settings', $defaults ); register_settings_manager( 'analytics', 'analytics_settings', $analytics_defaults ); // Access specific managers settings_manager( 'myplugin' )->get( 'api_key' ); settings_manager( 'analytics' )->get( 'tracking_id' ); // Helper functions use the first registered (default) manager get_setting( 'api_key' ); // Uses 'myplugin' manager
Real World Example
// In your plugin bootstrap register_settings_manager( 'sugarcart', 'sugarcart_settings', [ 'stripe_test_mode' => true, 'stripe_public_key' => '', 'stripe_secret_key' => '', 'success_page' => 0, 'enable_cart' => true, ] ); // Anywhere in your plugin function is_test_mode(): bool { return (bool) get_setting( 'stripe_test_mode', true ); } function get_stripe_key(): string { $mode = is_test_mode() ? 'test' : 'live'; return get_setting( "stripe_{$mode}_public_key", '' ); } // In admin or advanced usage settings_manager( 'sugarcart' )->reset(); settings_manager( 'sugarcart' )->clear_cache();
Functions
| Function | Description |
|---|---|
register_settings_manager( $name, $option, $defaults, $prefix ) |
Register a new manager |
settings_manager( $name ) |
Get a manager instance |
get_setting( $key, $default ) |
Get value from default manager |
update_setting( $key, $value ) |
Update value in default manager |
delete_setting( $key ) |
Delete from default manager |
has_setting( $key ) |
Check existence in default manager |
Manager Methods
| Method | Description |
|---|---|
get( $key, $default ) |
Get a setting value |
update( $key, $value ) |
Update a setting |
delete( $key ) |
Delete a setting |
has( $key ) |
Check if setting exists |
all() |
Get all settings |
reset() |
Reset to defaults |
clear_cache() |
Force reload from database |
register_defaults( $defaults ) |
Merge additional defaults |
get_option_name() |
Get the database option name |
get_defaults() |
Get default values |
Requirements
- PHP 8.0+
- WordPress 5.0+
License
GPL-2.0-or-later