pageName = $args['page_name']; $this->settingsName = $args['field_name']; $this->sectionName = $this->settingsName . '_section'; $this->placeholder = isset($args['placeholder']) ? stripslashes($args['placeholder']) : ''; $this->defaultValue = isset($args['default_value']) ? stripslashes($args['default_value']) : ''; $this->fieldLabel = isset($args['field_label']) ? stripslashes($args['field_label']) : ''; $this->classAttribute = isset($args['class_attribute']) ? $args['class_attribute'] : ''; $this->fieldStyle = isset($args['field_style']) ? $args['field_style'] : ''; $this->description = isset($args['description']) ? $args['description'] : ''; $this->descriptionItalic = isset($args['description_italic']) ? $args['description_italic'] : ''; $this->optionValue = get_option($this->settingsName); add_action('admin_init', [$this, 'optionsSettingsInit']); } public function optionsSettingsInit() { register_setting( $this->pageName, $this->settingsName, [ 'type' => 'string', 'group' => $this->pageName, 'sanitize_callback' => [$this, 'optionCallback'] ] ); add_settings_section( $this->sectionName, '', '', $this->pageName ); add_settings_field( $this->settingsName, $this->fieldLabel, [$this, 'displayCallback'], $this->pageName, $this->sectionName, [ 'label_for' => $this->settingsName, 'class' => $this->classAttribute ] ); } public function optionCallback($value) { if (has_filter(Plugin::PREFIX_ . 'sanitize_option_' . $this->settingsName)) { return apply_filters(Plugin::PREFIX_ . 'sanitize_option_' . $this->settingsName, $value); } return sanitize_textarea_field($value); } public function displayCallback() { printf( '%s', $this->settingsName, $this->settingsName, $this->placeholder ? 'placeholder="' . $this->placeholder . '"' : '', strtr($this->fieldStyle, '_', '-'), $this->optionValue, $this->description($this->description, $this->descriptionItalic) ); } }