WooCommerce: obtenga todas las zonas de envío y tarifas

Como desarrollador avanzado de WooCommerce , en algún momento realmente necesitará esta función de PHP, de la misma manera que a menudo navega a través de las guías visuales de WooCommerce de Business Bloomer o los captadores de productos / pedidos / carritos .

Esta vez vamos a estudiar cómo «obtener» las zonas de envío y las tarifas, porque es probable que deba recorrerlas cuando necesite mostrar las tarifas de envío en algún lugar, o para otras funcionalidades personalizadas. ¡Disfrutar!

Función personalizada de PHP: obtenga todas las zonas de envío de WooCommerce

/**
 * @function      Get WooCommerce Shipping Zones
 * @how-to        Get CustomizeWoo.com FREE
 * @author        Rodolfo Melogli
 * @compatible    WooCommerce 5
 * @donate $9     https://businessbloomer.com/bloomer-armada/
 */
 
function bbloomer_get_all_shipping_zones() {
   $data_store = WC_Data_Store::load( 'shipping-zone' );
   $raw_zones = $data_store->get_zones();
   foreach ( $raw_zones as $raw_zone ) {
      $zones[] = new WC_Shipping_Zone( $raw_zone );
   }
   $zones[] = new WC_Shipping_Zone( 0 ); // ADD ZONE "0" MANUALLY
   return $zones;
}

Luego puede recorrer las zonas en cualquier lugar que necesite y acceder a la información de la zona:

foreach ( bbloomer_get_all_shipping_zones() as $zone ) {
   $zone_id = $zone->get_id();
   $zone_name = $zone->get_zone_name();
   $zone_order = $zone->get_zone_order();
   $zone_locations = $zone->get_zone_locations();
   $zone_formatted_location = $zone->get_formatted_location();
   $zone_shipping_methods = $zone->get_shipping_methods(); // SEE BELOW
}

Función personalizada de PHP: obtenga todas las tarifas de envío de WooCommerce

Una vez que tenga acceso a todas las zonas de envío, también puede recorrer cada uno de sus métodos de envío.

/**
 * @function      Get All WooCommerce Shipping Rates
 * @how-to        Get CustomizeWoo.com FREE
 * @author        Rodolfo Melogli
 * @compatible    WooCommerce 5
 * @donate $9     https://businessbloomer.com/bloomer-armada/
 */
 
function bbloomer_get_all_shipping_rates() {
   foreach ( bbloomer_get_all_shipping_zones() as $zone ) {
      $zone_shipping_methods = $zone->get_shipping_methods();
      foreach ( $zone_shipping_methods as $index => $method ) {
         $method_is_taxable = $method->is_taxable();
         $method_is_enabled = $method->is_enabled();
         $method_instance_id = $method->get_instance_id();
         $method_title = $method->get_method_title(); // e.g. "Flat Rate"
         $method_description = $method->get_method_description();
         $method_user_title = $method->get_title(); // e.g. whatever you renamed "Flat Rate" into
         $method_rate_id = $method->get_rate_id(); // e.g. "flat_rate:18"
      }
      print_r( $zone_shipping_methods );  
   }
}

Deja un comentario