WC_Cart::calculate_shipping
Uses the shipping class to calculate shipping then gets the totals when its finished.
Method of the class: WC_Cart{}
No Hooks.
Returns
Array.
Usage
$WC_Cart = new WC_Cart(); $WC_Cart->calculate_shipping();
WC_Cart::calculate_shipping() WC Cart::calculate shipping code WC 10.7.0
public function calculate_shipping() {
// Reset totals.
$this->set_shipping_total( 0 );
$this->set_shipping_tax( 0 );
$this->set_shipping_taxes( array() );
$this->shipping_methods = array();
$this->has_calculated_shipping = false;
if ( ! $this->needs_shipping() || ! $this->show_shipping() ) {
return $this->shipping_methods;
}
$this->has_calculated_shipping = true;
$this->shipping_methods = $this->get_chosen_shipping_methods( WC()->shipping()->calculate_shipping( $this->get_shipping_packages() ) );
$shipping_costs = wp_list_pluck( $this->shipping_methods, 'cost' );
$shipping_taxes = wp_list_pluck( $this->shipping_methods, 'taxes' );
$merged_taxes = array();
foreach ( $shipping_taxes as $taxes ) {
foreach ( $taxes as $tax_id => $tax_amount ) {
$merged_taxes[ $tax_id ] = ( $merged_taxes[ $tax_id ] ?? 0 ) + $tax_amount;
}
}
$this->set_shipping_total( array_sum( array_filter( $shipping_costs ) ) );
$this->set_shipping_tax( array_sum( $merged_taxes ) );
$this->set_shipping_taxes( $merged_taxes );
return $this->shipping_methods;
}