Get shipping zone using it's ID
public static get_shipping_method ( $instance_id ) : WC_Shipping_Meethod | boolean | ||
return | WC_Shipping_Meethod | boolean |
/** * Test: WC_Shipping_Zones::get_shipping_method */ public function test_get_shipping_method() { // Setup WC_Helper_Shipping_Zones::create_mock_zones(); // Test $zone = WC_Shipping_Zones::get_zone_by('zone_id', 1); $instance_id = $zone->add_shipping_method('flat_rate'); $shipping_method = WC_Shipping_Zones::get_shipping_method($instance_id); // Assert $this->assertInstanceOf('WC_Shipping_Flat_Rate', $shipping_method); // Clean WC_Helper_Shipping_Zones::remove_mock_zones(); }
/** * Show instance settings * @param int $instance_id */ protected function instance_settings_screen($instance_id) { $zone = WC_Shipping_Zones::get_zone_by('instance_id', $instance_id); $shipping_method = WC_Shipping_Zones::get_shipping_method($instance_id); if (!$shipping_method) { wp_die(__('Invalid shipping method!', 'woocommerce')); } if (!$zone) { wp_die(__('Zone does not exist!', 'woocommerce')); } if (!$shipping_method->has_settings()) { wp_die(__('This shipping method does not have any settings to configure.', 'woocommerce')); } if (!empty($_POST['save'])) { if (empty($_REQUEST['_wpnonce']) || !wp_verify_nonce($_REQUEST['_wpnonce'], 'woocommerce-settings')) { echo '<div class="updated error"><p>' . __('Edit failed. Please try again.', 'woocommerce') . '</p></div>'; } $shipping_method->process_admin_options(); $shipping_method->display_errors(); } include_once dirname(__FILE__) . '/views/html-admin-page-shipping-zones-instance.php'; }
/** * Save method settings */ public static function shipping_zone_methods_save_settings() { if (!isset($_POST['wc_shipping_zones_nonce'], $_POST['instance_id'], $_POST['data'])) { wp_send_json_error('missing_fields'); exit; } if (!wp_verify_nonce($_POST['wc_shipping_zones_nonce'], 'wc_shipping_zones_nonce')) { wp_send_json_error('bad_nonce'); exit; } if (!current_user_can('manage_woocommerce')) { wp_send_json_error('missing_capabilities'); exit; } $instance_id = absint($_POST['instance_id']); $zone = WC_Shipping_Zones::get_zone_by('instance_id', $instance_id); $shipping_method = WC_Shipping_Zones::get_shipping_method($instance_id); $shipping_method->set_post_data($_POST['data']); $shipping_method->process_admin_options(); wp_send_json_success(array('methods' => $zone->get_shipping_methods(), 'errors' => $shipping_method->get_errors())); }