买一送一、买多送一,订单中价格最低的商品直接免费赠送,是市场营销中很常见的一种促销方法,WooCommerce 本身没有提供实现这种促销方法的功能,但是我们可以通过 WooCommerce 的 Hook,很轻松的实现这种促销方法。请看下面的示例代码。
实现自动赠送购物车中价格最低的商品的方法
下面的代码中,我们首先遍历购物车中的商品,找到价格最低的商品,然后设置改商品的价格为 0,从而达到自动赠送该商品的功能。
add_action( 'woocommerce_before_calculate_totals', function ( $cart )
{
if ( is_admin() && ! defined( 'DOING_AJAX' ) ) {
return;
}
if ( did_action( 'woocommerce_before_calculate_totals' ) >= 2 ) {
return;
}
// 购物车中最少有两个商品
if ( count( $cart->get_cart() ) < 2 ) {
return;
}
$min = PHP_FLOAT_MAX;
// 遍历购物车找到价格最低的商品
foreach ( $cart->get_cart() as $cart_item_key => $cart_item ) {
if ( $cart_item[ 'data' ]->get_price() <= $min ) {
$min = $cart_item[ 'data' ]->get_price();
$cheapest = $cart_item_key;
}
}
// 设置价格最低的商品价格为 0
foreach ( $cart->get_cart() as $cart_item_key => $cart_item ) {
if ( $cheapest == $cart_item_key ) {
// $price = $cart_item['data']->get_price();
$cart_item[ 'data' ]->set_price( 0 );
$cart_item[ 'data' ]->set_sale_price( 0 );
}
}
}, 9999 );
需要注意的是:篇幅所限,上面的代码中没有实现判断价格最低的商品是否只有一份的功能,可能导致刷单,使用的时候请注意避免。
除了自动赠送价格最低的商品,我们稍微改动一下上面的代码,还可以实现价格最低的商品打几折的功能,具体的实现代码就不写在这里的,请有需要的朋友自行实现一下。