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

dev-main 2025-11-30 20:17 UTC

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