Ich benutze eine Funktion, die es mir erlaubt, mehr als eine Fracht im Warenkorb basierend auf der Versandklasse jedes Produkts zu berechnen. Die Funktion hat kein Problem, es ist perfekt. Aber wenn ich die Anfrage im Bereich der Verwaltung von Woocommerce überprüfe, muss ich in der Methode der Vorlage den Namen der Klasse identifizieren, die jedem Gegenstand entspricht.Produkte anzeigen Versandklassen in WooCommerce Auftrag bearbeiten Seite
Das heißt, ich muss die Artikel für jede Klasse unterscheiden, da ich die Versandklasse verwende, um verschiedene Lieferanten über die Bestellungen im Laden zu informieren.
Aber ich habe keine Ahnung, wie Sie diese Einstellung vornehmen.
Unten ist die Funktion, die ich benutze, mit Paketen basierend auf den erstellten Klassen arbeiten. Diese Funktion ist verantwortlich für die Berechnung der Fracht im Warenkorb entsprechend der Versandklasse. Wie zeige ich den Namen der Versandart auf der Bestellseite im Store-Admin an?
function custom_split_shipping_packages_shipping_class($packages) {
// Reset all packages
$packages = array();
$regular_package_items = array();
$split_package_items = array();
$split_shipping_class = 'da-vinci'; // Shipping class slug
foreach (WC()->cart->get_cart() as $item_key => $item) {
if ($item['data']->needs_shipping()) {
if ($split_shipping_class == $item['data']->get_shipping_class()) {
$split_package_items[ $item_key ] = $item;
} else {
$regular_package_items[ $item_key ] = $item;
}
}
}
// Create shipping packages
if ($regular_package_items) {
$packages[] = array(
'contents' => $regular_package_items,
'contents_cost' => array_sum(wp_list_pluck($regular_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()
)
);
}
if ($split_package_items) {
$packages[] = array(
'contents' => $split_package_items,
'contents_cost' => array_sum(wp_list_pluck($split_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;
}
add_filter('woocommerce_cart_shipping_packages', 'custom_split_shipping_packages_shipping_class');