# ultimate-store-kit/trunk/includes/API/Settings.php

Ultimate Store Kit, version trunk. 67 lines.

- Page: https://pluginprobe.com/plugins/ultimate-store-kit/trunk/code/includes/API/Settings.php
- Raw: https://pluginprobe.com/plugins/ultimate-store-kit/trunk/raw/includes/API/Settings.php
- Modified: 2026-04-12T06:10:48+00:00

Line numbers below start at 1. Link to a line or a range by appending a fragment to the
page URL, for example `https://pluginprobe.com/plugins/ultimate-store-kit/trunk/code/includes/API/Settings.php#L10-L20`.

```php
<?php

/**
 * Core Plugin REST API Settings Handler
 *
 * Registers REST routes for saving core admin settings.
 * Loaded unconditionally so REST requests work outside is_admin().
 */

namespace UltimateStoreKit\API;

use UltimateStoreKit\API\Base;

if (!defined('ABSPATH')) {
    exit;
}

class Settings extends Base {

    private static $instance = null;

    public static function get_instance() {
        if (is_null(self::$instance)) {
            self::$instance = new self();
        }
        return self::$instance;
    }

    protected function get_namespace() {
        return 'ultimate-store-kit/v1';
    }

    protected function get_routes() {
        return [
            [
                'path'     => '/settings',
                'methods'  => 'POST',
                'callback' => [$this, 'save_settings'],
            ],
        ];
    }

    /**
     * Save core plugin settings.
     */
    public function save_settings(\WP_REST_Request $request) {
        $section  = sanitize_text_field($request->get_param('section'));
        $settings = $request->get_param('settings');

        $allowed_sections = [
            'ultimate_store_kit_active_modules',
            'ultimate_store_kit_edd_modules',
            'ultimate_store_kit_general_modules',
            'ultimate_store_kit_other_settings',
        ];

        if (!in_array($section, $allowed_sections, true)) {
            return $this->error('invalid_section', 'Invalid section');
        }

        $sanitized = $this->sanitize_settings($settings);
        update_option($section, $sanitized);

        return $this->success(['message' => __('Settings saved successfully.', 'ultimate-store-kit')]);
    }
}

```
