* @license GPL-3.0 * @copyright Barn2 Media Ltd * @version 1.4 */ class Settings_API_Helper implements Registerable, Conditional { /** * @var Plugin The plugin object. */ private $plugin; /** * @var Settings_Scripts Responsible for registering any additional settings scripts. */ private $scripts; public function __construct( Plugin $plugin ) { $this->plugin = $plugin; $this->scripts = new Settings_Scripts( $plugin ); } public function is_required() { return Util::is_admin(); } public function register() { $this->scripts->register(); } public static function add_settings_section( $section, $page, $title, $description_callback, $settings = false ) { if ( ! is_callable( $description_callback ) ) { $description_callback = '__return_false'; } add_settings_section( $section, $title, $description_callback, $page ); self::add_settings_fields( $settings, $section, $page ); } public static function add_settings_fields( $settings, $section, $page ) { if ( ! $settings || ! is_array( $settings ) ) { return; } foreach ( $settings as $setting ) { if ( ! is_array( $setting ) || empty( $setting['id'] ) ) { continue; } $args = wp_parse_args( $setting, array_fill_keys( array( 'id', 'type', 'desc', 'label', 'title', 'class', 'field_class', 'default', 'suffix', 'custom_attributes' ), '' ) ); $args['input_class'] = $args['class']; unset( $args['class'] ); $args['class'] = $args['field_class']; $args['label_for'] = $args['id']; $setting_callback = array( __CLASS__, 'settings_field_' . $args['type'] ); if ( is_callable( $setting_callback ) ) { add_settings_field( $args['id'], $args['title'], $setting_callback, $page, $section, $args ); } } } public static function settings_field_text( $args ) { $class = ! empty( $args['input_class'] ) ? $args['input_class'] : 'regular-text'; $type = ! empty( $args['type'] ) ? $args['type'] : 'text'; ?> />
/>