/**
* Save shipping and tax options.
*/
public function wc_setup_shipping_taxes_save()
{
check_admin_referer('wc-setup');
$enable_shipping = isset($_POST['woocommerce_calc_shipping']);
$enable_taxes = isset($_POST['woocommerce_calc_taxes']);
if ($enable_shipping) {
update_option('woocommerce_ship_to_countries', '');
} else {
update_option('woocommerce_ship_to_countries', 'disabled');
}
update_option('woocommerce_calc_taxes', $enable_taxes ? 'yes' : 'no');
update_option('woocommerce_prices_include_tax', sanitize_text_field($_POST['woocommerce_prices_include_tax']));
if ($enable_shipping && !empty($_POST['shipping_cost_domestic'])) {
// Create a domestic shipping zone
$zone = new WC_Shipping_Zone($zone_data['zone_id']);
$zone->set_zone_name(__('Domestic', 'woocommerce'));
$zone->set_zone_order(1);
$zone->add_location(WC()->countries->get_base_country(), 'country');
$zone->save();
// Add a flat rate shipping method to this domestic zone
$instance_id = $zone->add_shipping_method('flat_rate');
$shipping_method = new WC_Shipping_Flat_Rate($instance_id);
$option_key = $shipping_method->get_instance_option_key();
// Update rate settings
$costs = array();
$costs[] = wc_format_decimal(sanitize_text_field($_POST['shipping_cost_domestic']));
if ($item_cost = sanitize_text_field($_POST['shipping_cost_domestic_item'])) {
$costs[] = $item_cost . ' * [qty]';
}
$shipping_method->instance_settings['cost'] = implode(' + ', array_filter($costs));
$shipping_method->instance_settings['enabled'] = 'yes';
$shipping_method->instance_settings['type'] = 'order';
update_option($option_key, $shipping_method->instance_settings);
}
if ($enable_shipping && !empty($_POST['shipping_cost_worldwide'])) {
// Add a flat rate shipping method to the worldwide zone
$zone = WC_Shipping_Zones::get_zone(0);
$instance_id = $zone->add_shipping_method('flat_rate');
$shipping_method = new WC_Shipping_Flat_Rate($instance_id);
$option_key = $shipping_method->get_instance_option_key();
// Update rate settings
$costs = array();
$costs[] = wc_format_decimal(sanitize_text_field($_POST['shipping_cost_worldwide']));
if ($item_cost = sanitize_text_field($_POST['shipping_cost_worldwide_item'])) {
$costs[] = $item_cost . ' * [qty]';
}
$shipping_method->instance_settings['cost'] = implode(' + ', array_filter($costs));
$shipping_method->instance_settings['enabled'] = 'yes';
$shipping_method->instance_settings['type'] = 'order';
update_option($option_key, $shipping_method->instance_settings);
}
if ($enable_taxes && !empty($_POST['woocommerce_import_tax_rates'])) {
$locale_info = (include WC()->plugin_path() . '/i18n/locale-info.php');
$tax_rates = array();
$country = WC()->countries->get_base_country();
$state = WC()->countries->get_base_state();
if (isset($locale_info[$country])) {
if (isset($locale_info[$country]['tax_rates'][$state])) {
$tax_rates = $locale_info[$country]['tax_rates'][$state];
} elseif (isset($locale_info[$country]['tax_rates'][''])) {
$tax_rates = $locale_info[$country]['tax_rates'][''];
}
if (isset($locale_info[$country]['tax_rates']['*'])) {
$tax_rates = array_merge($locale_info[$country]['tax_rates']['*'], $tax_rates);
}
}
if ($tax_rates) {
$loop = 0;
foreach ($tax_rates as $rate) {
$tax_rate = array('tax_rate_country' => $rate['country'], 'tax_rate_state' => $rate['state'], 'tax_rate' => $rate['rate'], 'tax_rate_name' => $rate['name'], 'tax_rate_priority' => isset($rate['priority']) ? absint($rate['priority']) : 1, 'tax_rate_compound' => 0, 'tax_rate_shipping' => $rate['shipping'] ? 1 : 0, 'tax_rate_order' => $loop++, 'tax_rate_class' => '');
WC_Tax::_insert_tax_rate($tax_rate);
}
}
}
wp_redirect(esc_url_raw($this->get_next_step_link()));
exit;
}