• Resolved Eugene.chint

    (@eugenechint)


    Would like to split cart totals-display shipping charges based on shipping class used.Right now for two different products having two different shipping charges, is charged for one and not calculated for other.So under shipping charges Cart totals to minus one shipping charge.Hope i am able to explain here.Below code shows only split but no charges which is explained more in picture.

     add_filter( 'woocommerce_cart_shipping_packages', 'wf_split_cart_by_shipping_class_group' );
    function wf_split_cart_by_shipping_class_group($packages){
    //Reset packages
    $packages = array();
    
          //Init splitted package
          $splitted_packages      =   array();
          
          // Group of shipping class ids
          $class_groups =  array(
              'group1'    => array('10% of Price'),
              'group2'    =>  array('10Dollar Shipping'),
              // 'group3' =>  array(11,15,17),        
          );  
          
          foreach ( WC()->cart->get_cart() as $item_key => $item ) {
              if ( $item['data']->needs_shipping() ) {
                  
                  $belongs_to_class_group =   'none';
                  
                  $item_ship_class_id =   $item['data']->get_shipping_class();
                  
                  if($item_ship_class_id){
                      
                      foreach($class_groups as $class_group_key   =>  $class_group){
                          if(in_array($item_ship_class_id, $class_group)){                
                              $belongs_to_class_group = $class_group_key;
                              continue;
                          }
                      }
                      
                  }           
                  
                  $splitted_packages[$belongs_to_class_group][$item_key]  =   $item;
              }
          }
          
          // Add grouped items as packages 
          if(is_array($splitted_packages)){
              
              foreach($splitted_packages as $splitted_package_items){
                  $packages[] = array(
                      'contents'        => $splitted_package_items,
                      'contents_cost'   => array_sum( wp_list_pluck( $splitted_package_items, 'line_total' ) ),
                      'applied_coupons' => WC()->cart->get_applied_coupons(),
                      'user'            => array(
                           'ID' => get_current_user_id(),
                      ),
                      'destination'    => array(
                          'country'    => WC()->customer->get_shipping_country(),
                          'state'      => WC()->customer->get_shipping_state(),
                          'postcode'   => WC()->customer->get_shipping_postcode(),
                          'city'       => WC()->customer->get_shipping_city(),
                          'address'    => WC()->customer->get_shipping_address(),
                          'address_2'  => WC()->customer->get_shipping_address_2()
                      )
                  );
              }
          }
          return $packages;
      }
      
      
      

    `
    https://prntscr.com/ioj4dp

Viewing 2 replies - 1 through 2 (of 2 total)
Viewing 2 replies - 1 through 2 (of 2 total)
  • The topic ‘splitting product based on shipping class woocommerce doesnt display correct’ is closed to new replies.