如何在 WooCommerce 上以相同的順序拆分購物車項目(帶視頻)

已發表: 2022-02-09
Split cart items

最後更新 - 2022 年 5 月 4 日

您的在線商店的運輸策略取決於很多因素。 有時您會銷售一堆需要完全不同的運輸方式的產品。 如果您的客戶一起訂購這些產品怎麼辦? 您將如何按順序管理多種運輸方式? 這種情況也適用於多供應商市場,不同供應商希望應用特定的運輸方式。 在本文中,我們將討論一些需要在一個訂單中選擇多種運輸方式的場景。 此外,我們將了解您如何以相同的順序拆分購物車商品並使用不同的方式發貨。

需要拆分購物車的不同場景

在不同的場景中,您希望將購物車拆分為同一訂單並向客戶提供不同的運輸方式。 以下是其中一些:

當您有多個倉庫時

有時您會使用多個倉庫來存儲您的產品。 當客戶的訂單包含來自多個倉庫的產品時,您將如何計算運費? 可用的運輸方式、費率甚至交貨時間將根據您發送它的倉庫而有所不同。 在這裡,您可以拆分購物車並向客戶提供多種運輸方式。 總體而言,它將幫助您以更透明的方式顯示運輸選項。

與普通產品一起運送重型產品

在某些情況下,您在商店中銷售一種或兩種需要貨運的產品。 如果客戶將這些產品與一些常規產品一起訂購怎麼辦? 您可以拆分購物車並顯示單獨的運輸方式。 從純粹的客戶體驗角度來看,當購物車中有特殊運輸要求的產品時,您可以考慮隱藏其他運輸方式。 但是,為了無縫履行,有時您可能希望將運輸選項分開。 因此,在這種情況下,以相同的順序拆分購物車對您很有用。

僅限特定運輸類別的免費送貨

考慮一個場景,您希望僅對屬於特定運輸類別的產品提供免費送貨服務。 客戶在訂購此運輸類別的產品時,很有可能會訂購其他一些產品。 那麼你將如何處理這種情況。 您可以讓其他送貨方式覆蓋免費送貨選項。 但是,如果您想清楚地向客戶傳達特定運輸類別提供免費運輸選項,您可以拆分購物車。 這樣,客戶就可以清楚地知道他們為哪些產品收取運費。

處理只取貨的產品

有時您可能會銷售您不想發貨但允許從您所在位置取貨的產品。 您可以為客戶提供購買此類產品和其他常規產品的選項。 此外,您可以讓客戶選擇是否需要運送一些產品,或者可以在本地提取所有產品。

WooCommerce 高級運輸選項

這個插件讓您可以自由地將購物車分成多個運輸包裹。 根據您選擇的配置,每個運輸包裹都有自己的費率。 它提供條件邏輯來幫助您完全按照您想要的方式設置不同的運輸包裹。 在前端,客戶將看到每個包裹的可用運輸選項,並可以做出相應的選擇。

在同一訂單中拆分購物車項目
此插件可幫助您以相同的順序拆分購物車項目,並有選擇地應用運輸方式。

您可以使用此插件在需要不同運輸方式的產品在購物車中的不同情況下拆分運輸車。 該插件還有助於您的訂單履行過程,因為通知會發送給客戶以及商店經理,詳細說明所選的運輸方式。

特徵

以下是此插件的一些有用功能:

  • 根據購物車詳細信息、產品功能或運輸位置創建無限的運輸包裹。
  • 根據您的商店策略對包裹的順序進行排序。
  • 幫助您動態控制運輸包裹創建的條件邏輯。
  • 命名在購物車中創建的各個運輸包裹
  • 重命名默認 WooCommerce 運輸選項。
  • 有選擇地從包裹中排除運輸方式。

該插件的單一站點訂閱將花費您 49 美元。

如何使用高級運輸條件插件拆分購物車?

您可以按照以下步驟在商店中設置多個運輸包裹:

1:購買插件。 安裝並激活它。

2:從設置頁面啟用插件並添加運輸包裹。

在同一訂單中拆分購物車項目
啟用插件後,您可以創建一個新的運輸包。

3. 確定運輸包裝中包含的產品。

在同一訂單中拆分購物車項目
您可以根據不同的條件選擇產品。

4. 定義創建多個運輸包時應用運輸包的順序。

在同一訂單中拆分購物車項目
您可以簡單地拖放來設置運輸包裹的應用優先級。

5. 客戶在從多個運輸包裹中添加產品時會看到拆分購物車。

在同一訂單中拆分購物車項目
購物車將根據設置顯示多個包裹。

請注意:不屬於任何運輸包裹的產品將一起在默認的“運輸”選項下。

在多供應商市場中拆分購物車

您在同一訂單中看到拆分購物車的另一種情況是在有多個供應商的商店中。 如果您經營一家擁有多個供應商的商店,您可能想了解如何有選擇地應用運輸方式。

您需要使用多供應商插件來設置多個供應商的產品。 這些插件中的大多數允許供應商處理自己的運輸策略。 根據設置,當客戶在一個訂單中選擇不同供應商的產品時,購物車將被拆分以顯示多個運輸選項。

使用拆分購物車顯示實時費率

如您所知,您可以通過將流行的運輸公司集成到您的 WooCommerce 商店來使用實時運費。 ELEX 是流行的開發人員之一,它有幾個插件可以幫助您集成流行的運輸公司,如 USPS、FedEx、UPS 等。但是,您將如何拆分購物車並為每個供應商提供設置自己適用的實時費率的靈活性?

您可以使用以下代碼片段為客戶提供為每個包裹選擇不同運輸選項的選項。 它將從同一訂單中拆分購物車商品,並通過多種運輸方式發貨。

如果要顯示特定供應商的名稱,則可以使用模板 cart-shipping.php 中的鉤子,然後替換供應商名稱而不是隨機編號方法。

define("PV_ATTRIBUTE", "vendor");
if ( ! defined( 'ABSPATH' ) ) exit; // Exit if accessed directly
/**
* Check if WooCommerce is active
*/
if ( in_array( 'woocommerce/woocommerce.php', apply_filters( 'active_plugins', get_option( 'active_plugins' ) ) ) ) {
if ( ! class_exists( 'TH_Shipping_Options' ) ) {
class TH_Shipping_Options {
/**
* Constructor for your shipping class
*
* @access public
* @return void
*/
public function __construct() {
// take care of anything else that needs to be done immediately upon plugin instantiation, here in the constructor.
add_filter( 'woocommerce_cart_shipping_packages', array( &$this, 'th_woocommerce_cart_shipping_packages') );
// Overriding template to introduce vendor names along with standard labels across shipping packages.
//add_filter( 'woocommerce_locate_template', array( $this, 'th_woocommerce_locate_template' ), 10, 3 );
}
function th_woocommerce_locate_template( $template, $template_name, $template_path ) {
if('cart/cart-shipping.php' == $template_name)
{
$path = plugin_dir_path( __FILE__ ) . '/woocommerce/templates/' . $template_name;
return file_exists( $path ) ? $path : $template;
}
return $template;
}
function th_woocommerce_cart_shipping_packages( $packages ) {
// Reset the packages
$packages = array();
$vendor_items_map = array();
foreach ( WC()->cart->get_cart() as $item ) {
$product_id = $item['product_id'];
$vendors = get_product_vendors( $product_id );
if ( $item['data']->needs_shipping() ) {
if($vendors) {
foreach( $vendors as $vendor ) {
// Expecting/assuming there is only one Vendor assigned per product. Hm.
$vendor_items_map[$vendor->ID][] = $item;
break;
}
}
// No product vendor associated with item.
else {
$vendor_items_map['0'][] = $item;
}
}
}
foreach($vendor_items_map as $key => $vendor_items) {
$packages[] = array(
//'ship_via' => array( 'flat_rate' ),
'contents' => $vendor_items,
'contents_cost' => array_sum( wp_list_pluck( $vendor_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;
}
}
// finally instantiate our plugin class and add it to the set of globals
$GLOBALS['th_shipping_options_init'] = new TH_Shipping_Options();
}
// Start up this plugin
add_action( 'init', 'TH_Shipping_Options' );
function TH_Shipping_Options() {
global $TH_Shipping_Options;
$TH_Shipping_Options = new TH_Shipping_Options();
}
}

對 ELEX 插件的多供應商支持

如果您使用 ELEX 運輸插件,您可以使用此插件幫助供應商根據其位置訪問實時費率。 請注意,如果您已經在 WooCommerce 商店中安裝了多供應商插件和一個或多個 ELEX 運輸插件,則可以使用此插件。 它與流行的多供應商解決方案兼容,例如 Dokan、WooCommerce 產品供應商和 WC 供應商。

在同一訂單中拆分購物車項目
當多個供應商的產品在購物車中時,拆分購物車將顯示特定於供應商的運費。

特徵

以下是您可以使用此插件執行的所有操作的快速瀏覽:

  • 幫助供應商顯示他們自己與集成承運人的實時運費。
  • 通過添加所有運費在結帳頁面上提供組合運費的選項。
  • 與流行的多供應商解決方案和 ELEX 運輸插件兼容。

這個附加組件的單個站點訂閱費用為 49 美元。 請注意,只有當您在多供應商環境中擁有 ELEX 插件時,此插件才會起作用。

將購物車拆分到多個送貨地址

現在,購物車按同一訂單拆分的另一種情況是,當客戶希望按訂單將產品發送到多個地址時。 這是節日期間客戶想要向朋友和家人發送禮物時的常見問題。 因此,如果您提供將相同訂單中的商品發送到多個位置的選項,您可能會顯著提升客戶體驗。 讓我們看看如何管理它:

運送多個地址

此插件將幫助您的客戶將同一訂單中的商品發送到多個送貨地址,而不是創建多個訂單。 它還具有購物車複製選項,可以重新創建相同的購物車並將其發送到不同的地址。 此外,該插件為您提供了從多地址運輸選項中排除某些產品的靈活性。 您可以自定義文本,讓您的客戶了解在結帳頁面中運送到多個地址的可能性。

在同一訂單中拆分購物車項目
此插件可幫助您為客戶提供一個選項,以便在從同一訂單結賬時將產品發送到多個地址。

特徵

以下是該插件的突出特點:

  • 為您的客戶提供一個選項,以便通過一次結帳將其運送到多個地點。
  • 複製購物車以發送到多個位置。
  • 讓客戶保存多個地址
  • 訂單中的項目或地址數量沒有限制。
  • 從多個地址發貨中排除產品或類別。
  • 為部分完成的訂單發送狀態電子郵件的選項。
  • 支持所有 WooCommerce 運輸方式。

希望本文概述了您需要為同一訂單拆分購物車商品的不同場景。 本文中討論的策略和工具應該可以幫助您更好地管理商店,並為增強客戶體驗提供空間。

看看下面的視頻:

進一步閱讀

  • WooCommerce 的最佳運輸插件
  • 如何為 WooCommerce 創建多供應商市場。
  • 如何自定義 WooCommerce 購物車頁面?
  • 如何在 WooCommerce 中設置購物車限制?