sanitize_field_options($decoded_options); } else { $sanitized_field['options'] = array(); } } elseif (is_array($field['options'])) { $sanitized_field['options'] = $this->sanitize_field_options($field['options']); } else { $sanitized_field['options'] = array(); } } if (isset($field['default_value'])) { $sanitized_field['default_value'] = sanitize_text_field($field['default_value']); } if ($sanitized_field['type'] === 'checkbox') { if (isset($field['value'])) { $sanitized_field['value'] = sanitize_text_field($field['value']); } else { $sanitized_field['value'] = '1'; } } if ($sanitized_field['type'] === 'textarea') { if (isset($field['rows'])) { $sanitized_field['rows'] = intval($field['rows']); if ($sanitized_field['rows'] < 1) { $sanitized_field['rows'] = 4; } } else { $sanitized_field['rows'] = 4; } } if ($sanitized_field['type'] === 'number') { if (isset($field['min'])) { $sanitized_field['min'] = sanitize_text_field($field['min']); } if (isset($field['max'])) { $sanitized_field['max'] = sanitize_text_field($field['max']); } } $sanitized['custom_fields'][] = $sanitized_field; } } return $sanitized; } private function sanitize_field_options($options) { $sanitized_options = array(); if (is_array($options)) { foreach ($options as $option) { if (is_string($option)) { $label = sanitize_text_field($option); $value = $this->generate_option_slug($label); $sanitized_options[] = array( 'label' => $label, 'value' => $value ); } elseif (is_array($option) && isset($option['label']) && isset($option['value'])) { $sanitized_options[] = array( 'label' => sanitize_text_field($option['label']), 'value' => sanitize_text_field($option['value']) ); } elseif (is_array($option) && count($option) === 1) { $label = sanitize_text_field(reset($option)); $value = $this->generate_option_slug($label); $sanitized_options[] = array( 'label' => $label, 'value' => $value ); } } } return $sanitized_options; } private function generate_option_slug($text) { $slug = strtolower($text); $slug = preg_replace('/[^a-z0-9]+/', '_', $slug); $slug = trim($slug, '_'); if (empty($slug)) { $slug = 'option_' . uniqid(); } return $slug; } public function display_admin_page() { require_once ENSPIREPLUGINS_ACFW_PLUGIN_DIR . 'includes/admin-page.php'; } }