Woocommerce Split Order с использованием пакетов доставки - PullRequest
0 голосов
/ 13 января 2019

Я надеялся получить некоторое представление о том, как пакеты доставки работают с Woocommerce.

У меня есть сайт, на котором мы хотели бы разделить заказы по классу доставки (изначально). В настоящее время я добился добавления нескольких способов доставки к оформлению заказа на основе кода, который Jeroen Sormani создал в своем блоге, и теперь он также является плагином.

Мой главный вопрос: поскольку в приведенном ниже коде уже есть соответствующие позиции заказа и способ доставки, связанные с каждой посылкой, можно ли использовать каждую посылку для создания нового заказа? или подзаказ?

//////////// SPLIT SHIPPING METHODS BY CLASS

function custom_split_shipping_packages_shipping_class( $packages ) {
// Reset all packages
$packages              = array();
$regular_package_items = array();
$split_package_items   = array();
$split_shipping_class = 'pharma-product'; // 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' );`

Любая помощь, понимание потенциала (или нет) будет принята.

С уважением Терри

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...