Refactor the WC_Shipping_Zone_Data_Store::read() method
This commit re-works the `WC_Shipping_Zone_Data_Store::read()` method in the following ways: 1. Remove a confusing conditional (`if ( 0 !== $zone->get_id() || '0' !== $zone->get_id() ) { ... }`) 2. Return early if we're dealing with Zone 0, eliminating additional conditional steps 3. Add documentation for the "woocommerce_shipping_zone_loaded" action hook
This commit is contained in:
parent
9dac51f129
commit
8d3803452d
|
@ -74,33 +74,41 @@ class WC_Shipping_Zone_Data_Store extends WC_Data_Store_WP implements WC_Shippin
|
||||||
public function read( &$zone ) {
|
public function read( &$zone ) {
|
||||||
global $wpdb;
|
global $wpdb;
|
||||||
|
|
||||||
$zone_data = false;
|
// Zone 0 is used as a default if no other zones fit.
|
||||||
|
if ( 0 === $zone->get_id() || '0' === $zone->get_id() ) {
|
||||||
|
$this->read_zone_locations( $zone );
|
||||||
|
$zone->set_zone_name( __( 'Locations not covered by your other zones', 'woocommerce' ) );
|
||||||
|
$zone->read_meta_data();
|
||||||
|
$zone->set_object_read( true );
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Indicate that the WooCommerce shipping zone has been loaded.
|
||||||
|
*
|
||||||
|
* @param WC_Shipping_Zone $zone The shipping zone that has been loaded.
|
||||||
|
*/
|
||||||
|
do_action( 'woocommerce_shipping_zone_loaded', $zone );
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
if ( 0 !== $zone->get_id() || '0' !== $zone->get_id() ) {
|
|
||||||
$zone_data = $wpdb->get_row(
|
$zone_data = $wpdb->get_row(
|
||||||
$wpdb->prepare(
|
$wpdb->prepare(
|
||||||
"SELECT zone_name, zone_order FROM {$wpdb->prefix}woocommerce_shipping_zones WHERE zone_id = %d LIMIT 1",
|
"SELECT zone_name, zone_order FROM {$wpdb->prefix}woocommerce_shipping_zones WHERE zone_id = %d LIMIT 1",
|
||||||
$zone->get_id()
|
$zone->get_id()
|
||||||
)
|
)
|
||||||
);
|
);
|
||||||
|
|
||||||
|
if ( ! $zone_data ) {
|
||||||
|
throw new Exception( __( 'Invalid data store.', 'woocommerce' ) );
|
||||||
}
|
}
|
||||||
|
|
||||||
if ( 0 === $zone->get_id() || '0' === $zone->get_id() ) {
|
|
||||||
$this->read_zone_locations( $zone );
|
|
||||||
$zone->set_zone_name( __( 'Locations not covered by your other zones', 'woocommerce' ) );
|
|
||||||
$zone->read_meta_data();
|
|
||||||
$zone->set_object_read( true );
|
|
||||||
do_action( 'woocommerce_shipping_zone_loaded', $zone );
|
|
||||||
} elseif ( $zone_data ) {
|
|
||||||
$zone->set_zone_name( $zone_data->zone_name );
|
$zone->set_zone_name( $zone_data->zone_name );
|
||||||
$zone->set_zone_order( $zone_data->zone_order );
|
$zone->set_zone_order( $zone_data->zone_order );
|
||||||
$this->read_zone_locations( $zone );
|
$this->read_zone_locations( $zone );
|
||||||
$zone->read_meta_data();
|
$zone->read_meta_data();
|
||||||
$zone->set_object_read( true );
|
$zone->set_object_read( true );
|
||||||
|
|
||||||
|
/** This action is documented in includes/datastores/class-wc-shipping-zone-data-store.php. */
|
||||||
do_action( 'woocommerce_shipping_zone_loaded', $zone );
|
do_action( 'woocommerce_shipping_zone_loaded', $zone );
|
||||||
} else {
|
|
||||||
throw new Exception( __( 'Invalid data store.', 'woocommerce' ) );
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|
Loading…
Reference in New Issue