wc-edostavka
wc-edostavka copied to clipboard
Полезный код
Добрый вечер! Нашел код который позволяет продукты в корзине делить и некоторым из них присваивать только нужный нам способ доставки. Только одна проблема карта яндекса не работает и графа выбора пункта ПВЗ не появляется. Вот сам код `/**
-
This function loops over cart items, and moves any item with shipping class 'special-class' into a new package.
-
The new package in this example only takes flat rate shipping. */ function split_special_shipping_class_items2( $packages ) { $found_item = false; $special_class = 'big-order'; // edit this with the slug of your shippig class $new_package = current( $packages ); $new_package['contents'] = array(); $new_package['contents_cost'] = 0; $new_package['applied_coupons'] = array(); $new_package['ship_via'] = array( 'flat_rate' ); // Only allow flat rate for items in special class $new_package['name2'] = 'Доставка 2'; // your custom label for this package
foreach ( WC()->cart->get_cart() as $item_key => $item ) { // Is the product in the special class? 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'];
// Remove from original package $packages[0]['contents_cost'] = $packages[0]['contents_cost'] - $item['line_total']; unset( $packages[0]['contents'][ $item_key ] ); // If there are no items left in the previous package, remove it completely. if ( empty( $packages[0]['contents'] ) ) { unset( $packages[0] ); } }
} if ( $found_item ) { $packages[] = $new_package; } return $packages; }
// Hook into shipping packages filter add_filter( 'woocommerce_cart_shipping_packages', 'split_special_shipping_class_items2' );
// output the new package name add_filter( 'woocommerce_shipping_package_name', 'rename_custom_package2', 10, 3 );
function rename_custom_package2( $package_name, $i, $package ) {
if ( ! empty( $package['name2'] ) ) {
$package_name = $package['name2'];
}
return $package_name;
}` Может Вам понятно почему карта и пвз не работают при этом коде? Заранее спасибо.