如何在 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 中设置购物车限制?