定制 arraypress/wp-register-settings 二次开发

按需修改功能、优化性能、对接业务系统,提供一站式技术支持

邮箱:yvsm@zunyunkeji.com | QQ:316430983 | 微信:yvsm316

arraypress/wp-register-settings

Composer 安装命令:

composer require arraypress/wp-register-settings

包简介

A flexible WordPress settings manager with caching, dot notation, and smart defaults for plugin development.

README 文档

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

统计信息

  • 总下载量: 0
  • 月度下载量: 0
  • 日度下载量: 0
  • 收藏数: 1
  • 点击次数: 0
  • 依赖项目数: 0
  • 推荐数: 0

GitHub 信息

  • Stars: 1
  • Watchers: 0
  • Forks: 0
  • 开发语言: PHP

其他信息

  • 授权协议: GPL-2.0-or-later
  • 更新时间: 2025-12-04