私は、カート内で複数の貨物を各商品の出荷クラスに基づいて計算する機能を使用しています。この関数には問題はなく、完璧です。しかし、私はwoocommerceの管理の領域での要求をチェックするとき、私は提出の方法で、各項目に対応するクラスの名前を識別する必要があります。商品を表示するWooCommerceでの出荷クラスオーダー編集ページ
つまり、私は出荷クラスを使用して、店舗で行われた注文について異なるサプライヤーに知らせるため、各クラスのアイテムを区別する必要があります。
しかし、この調整方法はわかりません。
以下は、作成したクラスに基づいてパッケージを操作する私が使用する機能です。この機能は、出荷クラスに応じたショッピングカートの貨物の計算を担当します。店舗管理の注文ページに配送クラス名を表示するにはどうすればよいですか?
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');