Разделить раздел доставки в корзине и оформить заказ в зависимости от класса доставки - PullRequest
0 голосов
/ 05 октября 2019

Мне удалось собрать это вместе, но я борюсь с двумя вещами;получить возможность бесплатной доставки продуктов, чтобы фактически получить бесплатную доставку, и добавить название к каждому варианту доставки. Прямо сейчас они называются Отгрузка и Отгрузка 2.

Идея такова: создайте два класса доставки, один бесплатный и один несвободный. Назначьте продукты для этих классов. Присвойте классы опции доставки flat_rate и присвойте классу non-free стоимость. Затем примените эти классы к продуктам.

В корзине и оформлении заказа раздел доставки будет разделен на два на основе этих классов. Но ..

Если бесплатная доставка достигнута (настройка WooCommerce для бесплатной доставки на основе минимальной стоимости заказа), доставка по-прежнему предлагает фиксированную ставку, бесплатную доставку и местный пикап, в то время как другая стоит согласно flat_rate стоимость.

Может кто-нибудь помочь мне исправить это? Если достигнута бесплатная доставка, в параметре доставки должна отображаться только бесплатная доставка и местный пикап, а не фиксированная ставка.

Вот код, который я использую.

add_filter( 'woocommerce_cart_shipping_packages', 'wc_shipping_classes_settings' );
function wc_shipping_classes_settings( $packages ) {
$packages = array();
$non_free_shipping_items   = array();
$regular_items = array();
foreach ( WC()->cart->get_cart() as $item ) {
  if ( $item['data']->needs_shipping() ) {
      if ( $item['data']->get_shipping_class() == 'free' ) {
          $non_free_shipping_items[] = $item;
      } else {
          $regular_items[] = $item;
}}}

if ( $non_free_shipping_items ) {
  $packages[] = array(
      'ship_via'        => array( 'flat_rate' ),
      'contents'        => $non_free_shipping_items,
      'contents_cost'   => array_sum( wp_list_pluck( $non_free_shipping_items, 'line_total' ) ),
      'applied_coupons' => WC()->cart->applied_coupons,
      '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 ( $regular_items ) {
  $packages[] = array(
            'contents'        => $regular_items,
      'contents_cost'   => array_sum( wp_list_pluck( $regular_items, 'line_total' ) ),
      'applied_coupons' => WC()->cart->applied_coupons,
      '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;
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...