at path:
ROOT
/
wp-content
/
plugins
/
woocommerce
/
src
/
Admin
/
API
/
Settings.php
run:
R
W
Run
AI
DIR
2026-04-15 05:42:45
R
W
Run
Reports
DIR
2026-04-15 05:42:45
R
W
Run
Templates
DIR
2026-04-15 05:42:45
R
W
Run
AnalyticsImports.php
9.09 KB
2026-04-15 05:42:45
R
W
Run
Delete
Rename
Coupons.php
2.15 KB
2026-04-15 05:42:45
R
W
Run
Delete
Rename
CustomAttributeTraits.php
3.4 KB
2026-04-15 05:42:45
R
W
Run
Delete
Rename
Customers.php
2.11 KB
2026-04-15 05:42:45
R
W
Run
Delete
Rename
Data.php
939 By
2026-04-15 05:42:45
R
W
Run
Delete
Rename
DataCountries.php
1.12 KB
2026-04-15 05:42:45
R
W
Run
Delete
Rename
DataDownloadIPs.php
4.15 KB
2026-04-15 05:42:45
R
W
Run
Delete
Rename
Experiments.php
1.82 KB
2026-04-15 05:42:45
R
W
Run
Delete
Rename
Features.php
1.7 KB
2026-04-15 05:42:45
R
W
Run
Delete
Rename
Init.php
10.57 KB
2026-04-15 05:42:45
R
W
Run
Delete
Rename
LaunchYourStore.php
5.15 KB
2026-04-15 05:42:45
R
W
Run
Delete
Rename
Leaderboards.php
18.22 KB
2026-04-15 05:42:45
R
W
Run
Delete
Rename
Marketing.php
4.84 KB
2026-04-15 05:42:45
R
W
Run
Delete
Rename
MarketingCampaignTypes.php
6.02 KB
2026-04-15 05:42:45
R
W
Run
Delete
Rename
MarketingCampaigns.php
9.64 KB
2026-04-15 05:42:45
R
W
Run
Delete
Rename
MarketingChannels.php
5.74 KB
2026-04-15 05:42:45
R
W
Run
Delete
Rename
MarketingOverview.php
3.36 KB
2026-04-15 05:42:45
R
W
Run
Delete
Rename
MarketingRecommendations.php
5.94 KB
2026-04-15 05:42:45
R
W
Run
Delete
Rename
MobileAppMagicLink.php
2.1 KB
2026-04-15 05:42:45
R
W
Run
Delete
Rename
NoteActions.php
2.39 KB
2026-04-15 05:42:45
R
W
Run
Delete
Rename
Notes.php
25.32 KB
2026-04-15 05:42:45
R
W
Run
Delete
Rename
Notice.php
2.38 KB
2026-04-15 05:42:45
R
W
Run
Delete
Rename
OnboardingFreeExtensions.php
2.58 KB
2026-04-15 05:42:45
R
W
Run
Delete
Rename
OnboardingPlugins.php
10.66 KB
2026-04-15 05:42:45
R
W
Run
Delete
Rename
OnboardingProductTypes.php
1.8 KB
2026-04-15 05:42:45
R
W
Run
Delete
Rename
OnboardingProducts.php
1.94 KB
2026-04-15 05:42:45
R
W
Run
Delete
Rename
OnboardingProfile.php
18.38 KB
2026-04-15 05:42:45
R
W
Run
Delete
Rename
OnboardingTasks.php
32.02 KB
2026-04-15 05:42:45
R
W
Run
Delete
Rename
OnboardingThemes.php
5.49 KB
2026-04-15 05:42:45
R
W
Run
Delete
Rename
Options.php
10 KB
2026-04-15 05:42:45
R
W
Run
Delete
Rename
Orders.php
10.13 KB
2026-04-15 05:42:45
R
W
Run
Delete
Rename
PaymentGatewaySuggestions.php
5.86 KB
2026-04-15 05:42:45
R
W
Run
Delete
Rename
Plugins.php
21.22 KB
2026-04-15 05:42:45
R
W
Run
Delete
Rename
ProductAttributeTerms.php
4.36 KB
2026-04-15 05:42:45
R
W
Run
Delete
Rename
ProductAttributes.php
4.46 KB
2026-04-15 05:42:45
R
W
Run
Delete
Rename
ProductCategories.php
458 By
2026-04-15 05:42:45
R
W
Run
Delete
Rename
ProductForm.php
3.06 KB
2026-04-15 05:42:45
R
W
Run
Delete
Rename
ProductReviews.php
1.3 KB
2026-04-15 05:42:45
R
W
Run
Delete
Rename
ProductVariations.php
6.03 KB
2026-04-15 05:42:45
R
W
Run
Delete
Rename
Products.php
9.73 KB
2026-04-15 05:42:45
R
W
Run
Delete
Rename
ProductsLowInStock.php
17.62 KB
2026-04-15 05:42:45
R
W
Run
Delete
Rename
SettingOptions.php
878 By
2026-04-15 05:42:45
R
W
Run
Delete
Rename
Settings.php
4.2 KB
2026-04-15 05:42:45
R
W
Run
Delete
Rename
ShippingPartnerSuggestions.php
6.09 KB
2026-04-15 05:42:45
R
W
Run
Delete
Rename
Taxes.php
4.9 KB
2026-04-15 05:42:45
R
W
Run
Delete
Rename
Themes.php
6.12 KB
2026-04-15 05:42:45
R
W
Run
Delete
Rename
error_log
up
📄
Settings.php
Save
<?php /** * REST API Settings Controller * * Handles requests to save Settings. */ declare( strict_types = 1); namespace Automattic\WooCommerce\Admin\API; use WC_Admin_Settings; use Automattic\WooCommerce\Admin\Features\Settings\Init; defined( 'ABSPATH' ) || exit; /** * Settings Controller. * * @extends WC_REST_Data_Controller */ class Settings extends \WC_REST_Data_Controller { /** * Endpoint namespace. * * @var string */ protected $namespace = 'wc-admin'; /** * Route base. * * @var string */ protected $rest_base = 'legacy-settings'; /** * Register routes. */ public function register_routes() { register_rest_route( $this->namespace, '/' . $this->rest_base, array( array( 'methods' => \WP_REST_Server::EDITABLE, 'callback' => array( $this, 'save_settings' ), 'permission_callback' => array( $this, 'save_items_permissions_check' ), 'args' => array( 'schema' => array( $this, 'save_items_schema' ), ), ), ) ); } /** * Check if a given request has access to update settings. * * @param WP_REST_Request $request Full details about the request. * @return WP_Error|boolean */ public function save_items_permissions_check( $request ) { return current_user_can( 'manage_woocommerce' ); } /** * Save settings. * * @param WP_REST_Request $request Full details about the request. * @return WP_Error|WP_REST_Response */ public function save_settings( $request ) { global $current_section, $current_tab; // Verify nonce. if ( ! check_ajax_referer( 'wp_rest', false, false ) ) { return new \WP_Error( 'woocommerce_settings_invalid_nonce', __( 'Invalid nonce.', 'woocommerce' ), array( 'status' => 403 ) ); } $params = $request->get_params(); try { // Get current tab/section and set global variables. $current_tab = empty( $params['tab'] ) ? 'general' : sanitize_title( wp_unslash( $params['tab'] ) ); // WPCS: input var okay, CSRF ok. $current_section = empty( $params['section'] ) ? '' : sanitize_title( wp_unslash( $params['section'] ) ); // WPCS: input var okay, CSRF ok. $filter_name = '' === $current_section ? "woocommerce_save_settings_{$current_tab}" : "woocommerce_save_settings_{$current_tab}_{$current_section}"; /** * Filters whether to save settings. * * @since 3.7.0 * * @param bool $save Whether to save settings. */ if ( apply_filters( $filter_name, ! empty( $_POST['save'] ) ) ) { // WPCS: input var okay, CSRF ok. WC_Admin_Settings::save(); } $setting_pages = \WC_Admin_Settings::get_settings_pages(); // Reinitialize all setting pages in case behavior is dependent on saved values. foreach ( $setting_pages as $key => $setting_page ) { $class_name = get_class( $setting_page ); $setting_pages[ $key ] = new $class_name(); } $data = Init::get_page_data( array(), $setting_pages ); return new \WP_REST_Response( array( 'status' => 'success', 'data' => $data, ) ); } catch ( \Exception $e ) { return new \WP_Error( 'woocommerce_settings_save_error', // translators: %s: error message. sprintf( __( 'Failed to save settings: %s', 'woocommerce' ), $e->getMessage() ), array( 'status' => 500 ) ); } } /** * Get the schema, conforming to JSON Schema. * * @return array */ public function save_items_schema() { $schema = array( '$schema' => 'http://json-schema.org/draft-04/schema#', 'title' => 'options', 'type' => 'object', 'properties' => array( 'options' => array( 'type' => 'array', 'description' => __( 'Array of options with associated values.', 'woocommerce' ), 'context' => array( 'view' ), 'readonly' => true, ), 'tab' => array( 'type' => 'string', 'description' => __( 'Settings tab.', 'woocommerce' ), 'context' => array( 'view', 'edit' ), 'default' => 'general', ), 'section' => array( 'type' => 'string', 'description' => __( 'Settings section.', 'woocommerce' ), 'context' => array( 'view', 'edit' ), 'default' => '', ), ), ); return $schema; } }