diff --git a/src/Admin/OptionsManager.php b/src/Admin/OptionsManager.php index a9d89c2..02fab45 100644 --- a/src/Admin/OptionsManager.php +++ b/src/Admin/OptionsManager.php @@ -150,8 +150,13 @@ public function configuredPlatformNames(): array * @param array $input * @return array */ - public function sanitize(array $input): array + public function sanitize(mixed $input): array { + // WordPress passes $_POST data directly; guard against non-array input. + if (! is_array($input)) { + return $this->all(); + } + $existing = $this->all(); $sanitized = [ 'platforms' => $existing['platforms'] ?? [], diff --git a/src/Admin/SettingsPage.php b/src/Admin/SettingsPage.php index be1d104..fa9142a 100644 --- a/src/Admin/SettingsPage.php +++ b/src/Admin/SettingsPage.php @@ -195,6 +195,8 @@ public function registerSettings(): void 'owlstack_settings', [ 'type' => 'array', + // Custom callback needed for array-type settings. + // All keys sanitized via sanitize_key(), all values via sanitize_text_field(). 'sanitize_callback' => [$this->optionsManager, 'sanitize'], ], );