买一送一、买多送一,订单中价格最低的商品直接免费赠送,是市场营销中很常见的一种促销方法,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() ) get_cart() as $cart_item_key => $cart_item ) {
		if ( $cart_item[ 'data' ]->get_price() 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 );

需要注意的是:篇幅所限,上面的代码中没有实现判断价格最低的商品是否只有一份的功能,可能导致刷单,使用的时候请注意避免。

除了自动赠送价格最低的商品,我们稍微改动一下上面的代码,还可以实现价格最低的商品打几折的功能,具体的实现代码就不写在这里的,请有需要的朋友自行实现一下。