baxtian/wp_settings

Class to be inherite to create settings

Installs: 5

Dependents: 0

Suggesters: 0

Security: 0

pkg:composer/baxtian/wp_settings

0.1.2 2025-11-18 01:55 UTC

This package is auto-updated.

Last update: 2025-11-18 01:55:36 UTC


README

Class to be inherited to create a WP Settings.

Mantainers

Juan Sebastián Echeverry baxtian.echeverry@gmail.com

🚀 Usage Guide

This library requires a minimum of two configuration files: one to define the Page and one to define a Section within that page.

1. Defining the Settings Page

The page configuration file sets up the main menu item, its location, and basic properties within the WordPress dashboard.

PropertyDescriptionRequired?Example Value
slugThe unique identifier (slug) for this settings page in WordPress.Yesmy_plugin_options
page_titleThe title displayed at the top of the settings screen.YesMy Plugin Settings
sectionsAn array containing instances of the defined Section classes.YesSee examples below.
menu_titleThe text displayed for the menu/sub-menu item in the dashboard.YesPlugin Options
parent_slugThe slug of the existing parent menu this page belongs to.Yesoptions-general.php

Parent Slugs for Standard WordPress Menus:

  • Appearance: themes.php
  • Tools: tools.php
  • Settings: options-general.php
  • (Use a custom slug for a new top-level menu.)
<?php
namespace My_Plugin\Settings;

use My_Plugin\Settings\Section\Style;
use Baxtian\WP_Settings;

/**
 * Configuration page
 */
class My_Plugin extends WP_Settings
{
	use \Baxtian\SingletonTrait;

	protected function __construct()
	{
		$this->slug        = 'my_plugin';
		$this->parent_slug = 'options-general.php';
		$this->sections    = [
			new Style()
		];

		add_action('init', [$this, 'init']);

		parent::__construct();
	}

	public function init()
	{
		$this->page_title = __('My Plugin Settings', 'my_plugin');
		$this->menu_title = __('My Plugin', 'my_plugin');
	}

}

Filename: src/Settings/My_Plugin.php

2. Defining a Section

The section configuration defines a tab or logical grouping of settings within the Page.

PropertyDescriptionRequired?Example Value
slugThe unique identifier (slug) for this section within the page.Yesgeneral_settings_tab
titleThe title displayed for the section's tab.YesGeneral Settings
subsectionsAn array containing the definitions for each subsection.YesSee Subsection Properties below.

3. Defining Subsections and Fields

The subsections array holds definitions for the fields that will actually store data, grouped logically for display.

Subsection Properties

Each item in the subsections array defines a block of related fields:

PropertyDescriptionNotes
slugThe unique identifier (slug) for this subsection within the section.Used internally for grouping fields.
titleThe displayed title for this subsection block.Set to false to suppress the title display.
descriptionDescriptive text displayed below the title.Set to false to suppress the description.
fieldsAn array defining all input fields for this subsection.See Field Properties below.

Field Properties

Each item in the fields array defines a single input control:

PropertyDescriptionDefaultAvailable Types
nameThe unique option name used to retrieve this field's stored value.
labelThe descriptive label displayed next to the field.
typeThe type of input field to render.texttext, checkbox, dropdown, number, password
defaultThe fallback value used if the option has not yet been saved by the user.
descriptionHelp text displayed beneath the input field.Set to false to hide.
classCustom CSS classes to apply to the input element.
<?php
namespace My_Plugin\Settings\Section;

use Baxtian\WP_Settings\Section;

/**
 * Section of the configuration
 */
class Style extends Section
{
	public function __construct()
	{
		$this->slug = 'style';
		add_action('init', [$this, 'init']);

		parent::__construct();
	}

	public function init()
	{
		$this->title = __('Style', 'my_plugin');

		$this->subsections = [
			[
				'slug'        => 'colors',
				'title'       => __('Colors', 'my_plugin'),
				'description' => false,
				'fields'      => [
					[
						'name'        => 'text_color',
						'label'       => __('Text color', 'my_plugin'),
						'class'       => false,
						'description' => false,
						'default'     => 'black',
						'type'        => 'string',
					],
					[
						'name'        => 'text_background',
						'label'       => __('Text background color', 'my_plugin'),
						'class'       => false,
						'description' => false,
						'default'     => 'silver',
						'type'        => 'string',
					],
				],
			],
		];
	}
}

Filename: src/Settings/Section/Style.php

4. Retrieving an Option Value

To retrieve a field's value, call the instance of the settings class and use the get_option() method. If the field has not been configured by the user, the system automatically returns the defined default value. If the field is not registered or does not have a default value, the system generates an exception.

use My_Plugin\Settings\My_Plugin as Settings;
.
.
.
$settings = Settings::get_instance();
$text_color = $settings->get_option('text_color');
$text_background = $settings->get_option('text_background');

Changelog

0.1.2

  • Documentation.

0.1.1

  • First stable release.