pageName = $args['page_name']; $this->settingsName = $args['field_name']; $this->sectionName = $this->settingsName . '_section'; $this->defaultValue = isset($args['default_value']) ? $args['default_value'] : ''; $this->minValue = isset($args['min_value']) ? $args['min_value'] : ''; $this->maxValue = isset($args['max_value']) ? $args['max_value'] : ''; $this->decimals = isset($args['decimals']) ? $args['decimals'] : ''; $this->fieldLabel = isset($args['field_label']) ? stripslashes($args['field_label']) : ''; $this->textRight = isset($args['text_right']) ? stripslashes($args['text_right']) : ''; $this->description = isset($args['description']) ? $args['description'] : ''; $this->classAttribute = isset($args['class_attribute']) ? $args['class_attribute'] : ''; $this->optionValue = get_option($this->settingsName); if ($this->optionValue === false) { $this->optionValue = $this->defaultValue; } 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 valueSteps() { if ($this->decimals === '0') { return 'step="1"'; } if ($this->decimals === '1') { return 'step="0.1"'; } if ($this->decimals === '2') { return 'step="0.01"'; } } public function optionCallback($value) { if (empty($value)) { return ''; } if ($this->minValue) { if ($value < $this->minValue) { return ''; } } if ($this->maxValue) { if ($value > $this->maxValue) { return ''; } } $number = (float) $value; return $number ? round($number, $this->decimals) : ''; } public function displayCallback() { printf( ' %s%s', $this->settingsName, $this->settingsName, $this->optionValue, $this->minValue ? 'min="' . $this->minValue . '"' : 'min="0"', $this->maxValue ? 'max="' . $this->maxValue . '"' : '', $this->valueSteps(), $this->textRight, $this->description($this->description) ); } }