'string', 'sanitize_callback' => 'postexketab_validate_api_key', 'default' => '' )); register_setting('postex_settings_group', 'postex_free_shipping_label', ['sanitize_callback' => 'sanitize_text_field']); register_setting('postex_settings_group', 'postex_free_shipping_status', ['sanitize_callback' => 'sanitize_text_field']); register_setting('postex_settings_group', 'postex_free_shipping_amount', [ 'type' => 'integer', 'sanitize_callback' => 'postexketab_sanitize_price', 'default' => 1000000 ]); register_setting('postex_settings_group', 'postex_free_shipping_label_suburban', ['sanitize_callback' => 'sanitize_text_field']); register_setting('postex_settings_group', 'postex_free_shipping_status_suburban', ['sanitize_callback' => 'sanitize_text_field']); register_setting('postex_settings_group', 'postex_free_shipping_amount_suburban', [ 'type' => 'integer', 'sanitize_callback' => 'postexketab_sanitize_price', 'default' => 1000000 ]); register_setting('postex_settings_group', 'postex_in_town_label', ['sanitize_callback' => 'sanitize_text_field']); register_setting('postex_settings_group', 'postex_in_town_state', ['sanitize_callback' => 'sanitize_text_field']); register_setting('postex_settings_group', 'postex_in_town_city', ['sanitize_callback' => 'sanitize_text_field']); register_setting('postex_settings_group', 'postex_in_town_city_label', ['sanitize_callback' => 'sanitize_text_field']); register_setting('postex_settings_group', 'postex_shipping_enabled', ['sanitize_callback' => 'sanitize_text_field']); register_setting('postex_settings_group', 'postex_normal_delivery_status', ['sanitize_callback' => 'sanitize_text_field']); register_setting('postex_settings_group', 'postex_normal_delivery_label', ['sanitize_callback' => 'sanitize_text_field']); register_setting('postex_settings_group', 'postex_normal_delivery_price', [ 'type' => 'integer', 'sanitize_callback' => 'postexketab_sanitize_price', 'default' => 1000000 ]); register_setting('postex_settings_group', 'postex_fast_delivery_status', ['sanitize_callback' => 'sanitize_text_field']); register_setting('postex_settings_group', 'postex_fast_delivery_label', ['sanitize_callback' => 'sanitize_text_field']); register_setting('postex_settings_group', 'postex_fast_delivery_price', [ 'type' => 'integer', 'sanitize_callback' => 'postexketab_sanitize_price', 'default' => 500000 ]); register_setting('postex_settings_group', 'postex_receiver_delivery_allow', ['sanitize_callback' => 'sanitize_text_field']); register_setting('postex_settings_group', 'postex_receiver_delivery_label', ['sanitize_callback' => 'sanitize_text_field']); register_setting('postex_settings_group', 'postex_debug_log', ['sanitize_callback' => 'sanitize_text_field']); register_setting('postex_settings_group', 'postex_cod_status', ['sanitize_callback' => 'postexketab_handle_cod_status_change']); register_setting('postex_settings_group', 'postex_cod_max_total', ['type' => 'integer', 'sanitize_callback' => 'postexketab_sanitize_price', 'default' => 50000000]); function postexketab_handle_cod_status_change($new_value) { $new_value = is_scalar($new_value) ? sanitize_text_field((string) $new_value) : ''; $enable = ($new_value === 'on') ? 'yes' : 'no'; $cod_settings = (array) get_option('woocommerce_cod_settings', []); if (!isset($cod_settings['enabled']) || $cod_settings['enabled'] !== $enable) { $cod_settings['enabled'] = $enable; update_option('woocommerce_cod_settings', $cod_settings); } return $new_value; } register_setting('postex_settings_group', 'postex_default_payment', ['type' => 'string', 'sanitize_callback' => 'sanitize_text_field']); register_setting('postex_settings_group', 'postex_default_collect_type', ['type' => 'string', 'sanitize_callback' => 'sanitize_text_field']); register_setting('postex_settings_group', 'postex_default_box', ['type' => 'string', 'sanitize_callback' => 'sanitize_text_field']); register_setting('postex_settings_group', 'postex_default_shipping_method', ['type' => 'string', 'sanitize_callback' => 'sanitize_text_field']); register_setting('postex_settings_group', 'postex_default_additional', ['type' => 'array', 'sanitize_callback' => 'postexketab_sanitize_default_additional_services']); } add_action('admin_init', 'postexketab_register_settings'); //The panel is a shop management screen, so it runs on manage_woocommerce. //options.php enforces manage_options on its own unless these filters lower it, //which would let a shop manager open the form but fail on save. add_filter('option_page_capability_postex_settings_group', 'postexketab_settings_capability'); add_filter('option_page_capability_postex_api_key_group', 'postexketab_settings_capability'); function postexketab_settings_capability() { return 'manage_woocommerce'; } add_action('admin_notices', 'postexketab_settings_saved_notice'); function postexketab_settings_saved_notice() { $settings_updated = isset($_GET['settings-updated']) && is_string($_GET['settings-updated']) ? sanitize_text_field(wp_unslash($_GET['settings-updated'])) : ''; if (postexketab_is_plugin_admin_page('postexketab-settings') && $settings_updated === 'true') { ?>

تنظیمات با موفقیت ذخیره شد