name = $name; $this->value = $value; $this->originalValue = $value; $this->config = $config; } public function set(mixed $value): self { $this->value = $value; $this->isDirty = ($value !== $this->originalValue); return $this; } public function get(): mixed { return $this->value; } public function markClean(): self { $this->originalValue = $this->value; $this->isDirty = false; return $this; } public function reset(): self { $this->value = $this->originalValue; $this->isDirty = false; return $this; } public function addError(string $message): self { $this->errors[] = $message; $this->isValid = false; return $this; } public function clearErrors(): self { $this->errors = []; $this->isValid = true; return $this; } public function type(): string { return $this->config['type'] ?? 'text'; } public function isWpDefault(): bool { return $this->config['_wp_default'] ?? false; } public function isTaxonomy(): bool { return $this->type() === 'taxonomy' && !isset($this->config['taxonomy_type']); } }