На мой взгляд это один из самых полезных хуков WooCoommerce и благодаря ему при оформлении заказа вы сможете отобразить сразу два метода доставки для разных классов.

Рассмотрим вероятный случай: вы используете разные классы доставки для товаров и покупатель добавил сразу оба класса в корзину. В таком случае WooCoomerce либо не сможет отобразить метод доставки при оформлении заказа, либо отобразит самый первый, который задан в настройках.

Благодаря данному хуку WooCommerce вы сможете вывести сразу оба метода доставки при оформлении заказа:

Для отображения второго метода доставки при оформлении заказа вставьте следующий код в файл function.php:

//WooCommerce 3.4.5
//Два метода доставки в корзине
function split_special_shipping_class_items( $packages ) {
  $found_item                     = false;
  $special_class                  = 'delivery'; //специальный класс для которого будет отображаться второй метод доставки
  $new_package                    = current( $packages );
  $new_package['contents']        = array();
  $new_package['contents_cost']   = 0;
  $new_package['applied_coupons'] = array();
  $new_package ['ship_via']        = array( 'free_shipping' ); // отображаем только этот метод доставки для класса
        $new_package['name'] = 'Отдельная доставка'; //имя доставки
    
  foreach ( WC()->cart->get_cart() as $item_key => $item ) {
    if ( $item['data']->needs_shipping() && $special_class === $item['data']->get_shipping_class() ){
      $found_item                            = true;
      $new_package['contents'][ $item_key ]  = $item;
      $new_package['contents_cost']         += $item['line_total'];

      $packages[0]['contents_cost'] = $packages[0]['contents_cost'] - $item['line_total'];
      unset( $packages[0]['contents'][ $item_key ] );

      if ( empty( $packages[0]['contents'] ) ) {
        unset( $packages[0] );
      }
        
    }
    }
if ( $found_item) {
     $packages[] = $new_package;
  }
  return $packages;	
}
add_filter( 'woocommerce_cart_shipping_packages', 'split_special_shipping_class_items' );
add_filter( 'woocommerce_shipping_package_name', 'rename_custom_package', 10, 3 );
function rename_custom_package( $package_name, $i, $package ) {
    if ( ! empty( $package['name'] ) ) {
        $package_name = $package['name'];
    }
    return $package_name;
}

Где находится файл function.php?

Файл function.php находится в папке вашей темы WordPress, путь к файлу следующий:
/wp-content/themes/Тема WordPress/function.php

Этот код еще работает?

Пожалуйста, сообщите мне в комментариях о работоспособности. Данный код тестировался с темой Newspaper, версией PHP 7 и WooCommerce указанной в коде.