settingsService = $settingsService; } /** * @param WP_REST_Request $data * * @return WP_REST_Response * * @throws InvalidArgumentException * @throws ForbiddenException */ public function handle(WP_REST_Request $data): WP_REST_Response { // Verify the nonce Sanitizer::verifyNonce($data->get_header('X-WP-Nonce')); // Get URL parameters (category and option) $settingsCategory = Sanitizer::sanitizeText($data->get_url_params()['category']); $settingsOption = Sanitizer::sanitizeText($data->get_url_params()['option']); if (empty($settingsCategory) || empty($settingsOption)) { throw new InvalidArgumentException( BackendStrings::getSettingsStrings()['settings_category_or_option_missing'] ); } // Get the setting $settingValue = $this->settingsService->getSetting($settingsCategory, $settingsOption); return new WP_REST_Response([ 'message' => BackendStrings::getSettingsStrings()['setting_retrieved'], 'data' => [ 'value' => $settingValue, ] ], 200); } }