'GET', 'callback' => [__CLASS__, 'tabs'], 'permission_callback' => [__CLASS__, 'can_manage'], ]); register_rest_route('wnw/v1', '/settings/(?P[a-z0-9_\-]+)', [ [ 'methods' => 'GET', 'callback' => [__CLASS__, 'get_tab'], 'permission_callback' => [__CLASS__, 'can_manage'], 'args' => ['section' => ['required' => false]], ], [ 'methods' => 'POST', 'callback' => [__CLASS__, 'save_tab'], 'permission_callback' => [__CLASS__, 'can_manage'], ], ]); } public static function tabs(WP_REST_Request $req) { return ['tabs' => SettingsProvider::get_tabs()]; } public static function get_tab(WP_REST_Request $req) { $tab = sanitize_key($req['tab']); $section = sanitize_text_field($req->get_param('section') ?? ''); return SettingsProvider::get_tab_schema($tab, $section); } public static function save_tab(WP_REST_Request $req) { $tab = sanitize_key($req['tab']); $section = sanitize_text_field($req->get_param('section') ?? ''); $payload = (array) $req->get_json_params(); return SettingsProvider::save_tab($tab, $section, $payload); } }