<?php defined('ABSPATH') || exit; if (class_exists('WC_Settings_Advanced', false)) { return new WC_Settings_Advanced(); } class WC_Settings_Advanced extends WC_Settings_Page { public function __construct() { $this->id = 'advanced'; $this->label = __('Advanced', 'woocommerce'); parent::__construct(); $this->notices(); } protected function get_own_sections() { return array('' => __('Page setup', 'woocommerce'), 'keys' => __('REST API', 'woocommerce'), 'webhooks' => __('Webhooks', 'woocommerce'), 'legacy_api' => __('Legacy API', 'woocommerce'), 'woocommerce_com' => __('WooCommerce.com', 'woocommerce')); } protected function get_settings_for_default_section() { $settings = array(array('title' => __('Page setup', 'woocommerce'), 'desc' => __('These pages need to be set so that WooCommerce knows where to send users to checkout.', 'woocommerce'), 'type' => 'title', 'id' => 'advanced_page_options'), array('title' => __('Cart page', 'woocommerce'), 'desc' => sprintf(__('Page contents: [%s]', 'woocommerce'), apply_filters('woocommerce_cart_shortcode_tag', 'woocommerce_cart')), 'id' => 'woocommerce_cart_page_id', 'type' => 'single_select_page_with_search', 'default' => '', 'class' => 'wc-page-search', 'css' => 'min-width:300px;', 'args' => array('exclude' => array(wc_get_page_id('checkout'), wc_get_page_id('myaccount'))), 'desc_tip' => true, 'autoload' => false), array('title' => __('Checkout page', 'woocommerce'), 'desc' => sprintf(__('Page contents: [%s]', 'woocommerce'), apply_filters('woocommerce_checkout_shortcode_tag', 'woocommerce_checkout')), 'id' => 'woocommerce_checkout_page_id', 'type' => 'single_select_page_with_search', 'default' => wc_get_page_id('checkout'), 'class' => 'wc-page-search', 'css' => 'min-width:300px;', 'args' => array('exclude' => array(wc_get_page_id('cart'), wc_get_page_id('myaccount'))), 'desc_tip' => true, 'autoload' => false), array('title' => __('My account page', 'woocommerce'), 'desc' => sprintf(__('Page contents: [%s]', 'woocommerce'), apply_filters('woocommerce_my_account_shortcode_tag', 'woocommerce_my_account')), 'id' => 'woocommerce_myaccount_page_id', 'type' => 'single_select_page_with_search', 'default' => '', 'class' => 'wc-page-search', 'css' => 'min-width:300px;', 'args' => array('exclude' => array(wc_get_page_id('cart'), wc_get_page_id('checkout'))), 'desc_tip' => true, 'autoload' => false), array('title' => __('Terms and conditions', 'woocommerce'), 'desc' => __('If you define a "Terms" page the customer will be asked if they accept them when checking out.', 'woocommerce'), 'id' => 'woocommerce_terms_page_id', 'default' => '', 'class' => 'wc-page-search', 'css' => 'min-width:300px;', 'type' => 'single_select_page_with_search', 'args' => array('exclude' => wc_get_page_id('checkout')), 'desc_tip' => true, 'autoload' => false), array('type' => 'sectionend', 'id' => 'advanced_page_options'), array('title' => '', 'type' => 'title', 'id' => 'checkout_process_options'), 'force_ssl_checkout' => array('title' => __('Secure checkout', 'woocommerce'), 'desc' => __('Force secure checkout', 'woocommerce'), 'id' => 'woocommerce_force_ssl_checkout', 'default' => 'no', 'type' => 'checkbox', 'checkboxgroup' => 'start', 'show_if_checked' => 'option', 'desc_tip' => sprintf(__('Force SSL (HTTPS) on the checkout pages (<a href="%s" target="_blank">an SSL Certificate is required</a>).', 'woocommerce'), 'https://docs.woocommerce.com/document/ssl-and-https/#section-3')), 'unforce_ssl_checkout' => array('desc' => __('Force HTTP when leaving the checkout', 'woocommerce'), 'id' => 'woocommerce_unforce_ssl_checkout', 'default' => 'no', 'type' => 'checkbox', 'checkboxgroup' => 'end', 'show_if_checked' => 'yes'), array('type' => 'sectionend', 'id' => 'checkout_process_options'), array('title' => __('Checkout endpoints', 'woocommerce'), 'type' => 'title', 'desc' => __('Endpoints are appended to your page URLs to handle specific actions during the checkout process. They should be unique.', 'woocommerce'), 'id' => 'checkout_endpoint_options'), array('title' => __('Pay', 'woocommerce'), 'desc' => __('Endpoint for the "Checkout &rarr; Pay" page.', 'woocommerce'), 'id' => 'woocommerce_checkout_pay_endpoint', 'type' => 'text', 'default' => 'order-pay', 'desc_tip' => true), array('title' => __('Order received', 'woocommerce'), 'desc' => __('Endpoint for the "Checkout &rarr; Order received" page.', 'woocommerce'), 'id' => 'woocommerce_checkout_order_received_endpoint', 'type' => 'text', 'default' => 'order-received', 'desc_tip' => true), array('title' => __('Add payment method', 'woocommerce'), 'desc' => __('Endpoint for the "Checkout &rarr; Add payment method" page.', 'woocommerce'), 'id' => 'woocommerce_myaccount_add_payment_method_endpoint', 'type' => 'text', 'default' => 'add-payment-method', 'desc_tip' => true), array('title' => __('Delete payment method', 'woocommerce'), 'desc' => __('Endpoint for the delete payment method page.', 'woocommerce'), 'id' => 'woocommerce_myaccount_delete_payment_method_endpoint', 'type' => 'text', 'default' => 'delete-payment-method', 'desc_tip' => true), array('title' => __('Set default payment method', 'woocommerce'), 'desc' => __('Endpoint for the setting a default payment method page.', 'woocommerce'), 'id' => 'woocommerce_myaccount_set_default_payment_method_endpoint', 'type' => 'text', 'default' => 'set-default-payment-method', 'desc_tip' => true), array('type' => 'sectionend', 'id' => 'checkout_endpoint_options'), array('title' => __('Account endpoints', 'woocommerce'), 'type' => 'title', 'desc' => __('Endpoints are appended to your page URLs to handle specific actions on the accounts pages. They should be unique and can be left blank to disable the endpoint.', 'woocommerce'), 'id' => 'account_endpoint_options'), array('title' => __('Orders', 'woocommerce'), 'desc' => __('Endpoint for the "My account &rarr; Orders" page.', 'woocommerce'), 'id' => 'woocommerce_myaccount_orders_endpoint', 'type' => 'text', 'default' => 'orders', 'desc_tip' => true), array('title' => __('View order', 'woocommerce'), 'desc' => __('Endpoint for the "My account &rarr; View order" page.', 'woocommerce'), 'id' => 'woocommerce_myaccount_view_order_endpoint', 'type' => 'text', 'default' => 'view-order', 'desc_tip' => true), array('title' => __('Downloads', 'woocommerce'), 'desc' => __('Endpoint for the "My account &rarr; Downloads" page.', 'woocommerce'), 'id' => 'woocommerce_myaccount_downloads_endpoint', 'type' => 'text', 'default' => 'downloads', 'desc_tip' => true), array('title' => __('Edit account', 'woocommerce'), 'desc' => __('Endpoint for the "My account &rarr; Edit account" page.', 'woocommerce'), 'id' => 'woocommerce_myaccount_edit_account_endpoint', 'type' => 'text', 'default' => 'edit-account', 'desc_tip' => true), array('title' => __('Addresses', 'woocommerce'), 'desc' => __('Endpoint for the "My account &rarr; Addresses" page.', 'woocommerce'), 'id' => 'woocommerce_myaccount_edit_address_endpoint', 'type' => 'text', 'default' => 'edit-address', 'desc_tip' => true), array('title' => __('Payment methods', 'woocommerce'), 'desc' => __('Endpoint for the "My account &rarr; Payment methods" page.', 'woocommerce'), 'id' => 'woocommerce_myaccount_payment_methods_endpoint', 'type' => 'text', 'default' => 'payment-methods', 'desc_tip' => true), array('title' => __('Lost password', 'woocommerce'), 'desc' => __('Endpoint for the "My account &rarr; Lost password" page.', 'woocommerce'), 'id' => 'woocommerce_myaccount_lost_password_endpoint', 'type' => 'text', 'default' => 'lost-password', 'desc_tip' => true), array('title' => __('Logout', 'woocommerce'), 'desc' => __('Endpoint for the triggering logout. You can add this to your menus via a custom link: yoursite.com/?customer-logout=true', 'woocommerce'), 'id' => 'woocommerce_logout_endpoint', 'type' => 'text', 'default' => 'customer-logout', 'desc_tip' => true), array('type' => 'sectionend', 'id' => 'account_endpoint_options')); $settings = apply_filters('woocommerce_settings_pages', $settings); if (wc_site_is_https()) { unset($settings['unforce_ssl_checkout'], $settings['force_ssl_checkout']); } return $settings; } protected function get_settings_for_woocommerce_com_section() { $tracking_info_text = sprintf('<a href="%s" target="_blank">%s</a>', 'https://woocommerce.com/usage-tracking', esc_html__('WooCommerce.com Usage Tracking Documentation', 'woocommerce')); $settings = array(array('title' => esc_html__('Usage Tracking', 'woocommerce'), 'type' => 'title', 'id' => 'tracking_options', 'desc' => __('Gathering usage data allows us to make WooCommerce better — your store will be considered as we evaluate new features, judge the quality of an update, or determine if an improvement makes sense.', 'woocommerce')), array('title' => __('Enable tracking', 'woocommerce'), 'desc' => __('Allow usage of WooCommerce to be tracked', 'woocommerce'), 'desc_tip' => sprintf(esc_html__('To opt out, leave this box unticked. Your store remains untracked, and no data will be collected. Read about what usage data is tracked at: %s.', 'woocommerce'), $tracking_info_text), 'id' => 'woocommerce_allow_tracking', 'type' => 'checkbox', 'checkboxgroup' => 'start', 'default' => 'no', 'autoload' => false), array('type' => 'sectionend', 'id' => 'tracking_options'), array('title' => esc_html__('Marketplace suggestions', 'woocommerce'), 'type' => 'title', 'id' => 'marketplace_suggestions', 'desc' => __('We show contextual suggestions for official extensions that may be helpful to your store.', 'woocommerce')), array('title' => __('Show Suggestions', 'woocommerce'), 'desc' => __('Display suggestions within WooCommerce', 'woocommerce'), 'desc_tip' => esc_html__('Leave this box unchecked if you do not want to see suggested extensions.', 'woocommerce'), 'id' => 'woocommerce_show_marketplace_suggestions', 'type' => 'checkbox', 'checkboxgroup' => 'start', 'default' => 'yes', 'autoload' => false), array('type' => 'sectionend', 'id' => 'marketplace_suggestions')); return apply_filters('woocommerce_com_integration_settings', $settings); } protected function get_settings_for_legacy_api_section() { $settings = array(array('title' => '', 'type' => 'title', 'desc' => '', 'id' => 'legacy_api_options'), array('title' => __('Legacy API', 'woocommerce'), 'desc' => __('Enable the legacy REST API', 'woocommerce'), 'id' => 'woocommerce_api_enabled', 'type' => 'checkbox', 'default' => 'no'), array('type' => 'sectionend', 'id' => 'legacy_api_options')); return apply_filters('woocommerce_settings_rest_api', $settings); } public function form_method($method) { return 'post'; } private function notices() { if (isset($_GET['section']) && 'webhooks' === $_GET['section']) { WC_Admin_Webhooks::notices(); } if (isset($_GET['section']) && 'keys' === $_GET['section']) { WC_Admin_API_Keys::notices(); } } public function output() { global $current_section; if ('webhooks' === $current_section) { WC_Admin_Webhooks::page_output(); } elseif ('keys' === $current_section) { WC_Admin_API_Keys::page_output(); } else { parent::output(); } } public function save() { global $current_section; if (apply_filters('woocommerce_rest_api_valid_to_save', !in_array($current_section, array('keys', 'webhooks'), true))) { if (isset($_POST['woocommerce_terms_page_id'], $_POST['woocommerce_checkout_page_id']) && $_POST['woocommerce_terms_page_id'] === $_POST['woocommerce_checkout_page_id']) { $_POST['woocommerce_terms_page_id'] = ''; } if (isset($_POST['woocommerce_cart_page_id'], $_POST['woocommerce_checkout_page_id'], $_POST['woocommerce_myaccount_page_id'])) { if ($_POST['woocommerce_cart_page_id'] === $_POST['woocommerce_checkout_page_id']) { $_POST['woocommerce_checkout_page_id'] = ''; } if ($_POST['woocommerce_cart_page_id'] === $_POST['woocommerce_myaccount_page_id']) { $_POST['woocommerce_myaccount_page_id'] = ''; } if ($_POST['woocommerce_checkout_page_id'] === $_POST['woocommerce_myaccount_page_id']) { $_POST['woocommerce_myaccount_page_id'] = ''; } } $this->save_settings_for_current_section(); $this->do_update_options_action(); } } } class WC_Settings_Rest_API extends WC_Settings_Advanced { } return new WC_Settings_Advanced();