false, 'excluded_slugs' => [], 'excluded_ips' => [], 'excluded_roles' => [], 'allowed_users' => [], 'redirect_url' => '/maintenance', ]; $saved_options = get_option('pausera_settings', []); $this->options = wp_parse_args($saved_options, $defaults); add_action('admin_menu', [$this, 'admin_menu']); add_action('admin_init', [$this, 'register_settings']); add_action('template_redirect', [$this, 'handle_redirect']); add_action('admin_notices', [$this, 'admin_notice']); add_action('admin_bar_menu', [$this, 'add_admin_bar_status'], 100); } public function register_settings() { register_setting('pausera_group', 'pausera_settings', [ 'sanitize_callback' => [$this, 'sanitize_settings'] ]); } public function sanitize_settings($input) { add_option('pausera_settings_saved', 1); return [ 'enable_maintenance' => !empty($input['enable_maintenance']), 'excluded_slugs' => isset($input['excluded_slugs']) ? array_filter(array_map('sanitize_title', (array) $input['excluded_slugs'])) : [], 'excluded_ips' => array_filter(array_map('trim', explode(',', sanitize_text_field($input['excluded_ips'] ?? '')))), 'excluded_roles' => isset($input['excluded_roles']) ? array_filter(array_map('sanitize_text_field', (array) $input['excluded_roles'])) : [], 'redirect_url' => esc_url_raw($input['redirect_url'] ?? '/maintenance'), 'allowed_users' => isset($input['allowed_users']) ? array_filter(array_map('sanitize_user', (array) $input['allowed_users'])) : [], ]; } public function admin_notice() { if (get_option('pausera_settings_saved')) { delete_option('pausera_settings_saved'); echo '
Settings saved successfully.