webkinder/wordpress-options-page-api

WordPress settings api abstraction class

2.2.0 2025-03-20 14:23 UTC

This package is auto-updated.

Last update: 2025-04-20 14:38:54 UTC


README

It's a PHP class wrapper for handling WordPress Settings API. This is an easily accessible OOP API for developers to use in their own plugins.

Package Installation (via Composer)

To install this package, edit your composer.json file:

{
    "require": {
        "webkinder/wordpress-options-page-api": "2.2.0"
    }
}

Now run:

$ composer install

Usage Example

Registering options

use WebKinder\SettingsAPI;

(new SettingsAPI(['network_settings' => false]))
	->set_sections(
		[
			[
				'id' => 'custom_options',
				'title' => __('Custom Options'),
			],
		]
	)
	->set_fields([
		'custom_options' => [
			[
				'name' => 'information_text',
				'label' => __('Information Text'),
				'type' => 'textarea',
			],
			[
				'name' => 'radio_option',
				'label' => __('Radio Option'),
				'type' => 'radio',
				'options' => [
					'top' => __('Top'),
					'bottom' => __('Bottom'),
					'bottom-right' => __('Bottom Right'),
				],
			],
			[
				'name' => 'checkbox_option',
				'label' => __('Checkbox Option'),
				'type' => 'checkbox',
				'desc' => __('aktivieren'),
			],
			[
				'name' => 'multicheck_option',
				'label' => __('Multicheck Options'),
				'type' => 'multicheck',
				'options' => [
					'top' => __('Top'),
					'bottom' => __('Bottom'),
					'bottom-right' => __('Bottom Right'),
				],
			],
		],
	])
	->register_page('Options page', 'Options page', 'manage_options', 'custom-options-page')
	->admin_init()
;

Retrieving saved options

/**
 * Get the value of a settings field
 *
 * @param string $option settings field name
 * @param string $section the section name this field belongs to
 * @param string $default default text if it's not found
 *
 * @return mixed
 */
function prefix_get_option( $option, $section, $default = '' ) {

    $options = get_option( $section );

    if ( isset( $options[$option] ) ) {
        return $options[$option];
    }

    return $default;
}

What this plugin for?

This is an API for the WordPress Settings API

Acknowledgments

This is an extended version of tareq1988 with more features and opinionated changes and additions.

Changelog:

2.2.0 (20 March, 2025)
------------------------
- Add option "multiple" to select fields

2.1.1 (19 March, 2024)
------------------------
- Update docs
- More dynamic handling

2.1.0 (19 March, 2024)
------------------------
- Add support for network options

2.0.2 (24 April, 2023)
------------------------
- Better check for multilang

2.0.1 (29 March, 2023)
------------------------
- Fix hidden translation fields that were required and could be empty

2.0.0 (28 March, 2023)
------------------------
- Add proper versioning
- Add conditional support for hiding and disabling fields
- Add option for required fields
- Add multilang support (WPML only)

1.0.0 (14 March, 2019)
------------------------
- First version published