买 X 送 Y 是电商销售中很常见的一种营销方式,WooCommerce有很多插件可以实现这个功能,今天我们不用插件,直接用代码来实现这个功能。
实现WooCommerce 赠品功能的主要代码
在下面的代码中,我们使用了 woocommerce_payment_complete
这个 Hook,在用户支付成功后,即执行挂载到该 Hook 中的 wprs_add_products_to_order
函数,便利该订单中的商品,如果订单中包含 ID 为 123 这个商品,就添加ID 为 456 这个商品到订单中,并设置价格为 0,以免订单总价发生变化。
add_action('woocommerce_payment_complete', 'wprs_add_products_to_order', 9999);
/**
* @param $order_id
*
* @return void
*/
function wprs_add_products_to_order($order_id)
{
$order = wc_get_order($order_id);
foreach ($order->get_items() as $item_id => $item) {
$product_id = $item->get_product_id();
if ($product_id && $product_id == 123) {
$order->add_product(wc_get_product(456), 1, ['subtotal' => 0, 'total' => 0]);
$order->save();
//wc_downloadable_product_permissions( $order_id, true ); 如果需要添加下载权限,添加这段代码
//wc_update_product_stock( wc_get_product( 456 ), 1, 'decrease' ); //如果需要减库存,添加这段代码
break;
}
}
}
上面的商品 ID 123 和 456 是直接写死在代码中的,如果需要添加赠品功能的商品比较多,我们可以为商品添加自定义字段插件来动态的设置和获取这两个商品 ID。
不只是简单的赠品功能,基于本文中的代码,我们还可以实现简单的商品捆绑包功能,具体的代码就不放在这里了,有需要的朋友可以自己尝试一下。