gpt4 book ai didi

php - 当达到一定的购物车数量时添加促销产品

转载 作者:可可西里 更新时间:2023-11-01 13:49:15 25 4
gpt4 key购买 nike

我正在 WooCommerce 中寻找合适的 Hook ,因为我需要在达到一定的购物车数量(例如 100 个常规单位)时将促销产品添加到购物车。

我也用过 hook 'init' 但我认为它不对。

这是我的代码:

function add_free_product_to_cart(){
global $woocommerce;
$product_id = 2006;
$found = false;
if ( sizeof( $woocommerce->cart->get_cart() ) > 0 )
{
foreach ( $woocommerce->cart->get_cart() as $cart_item_key => $values )
{
$_product = $values['data'];
if ( $_product->id == $product_id )
$found = true;
}
if(!$found)
{
$maximum = 100;
$current = WC()->cart->subtotal;
if($current > $maximum){
$woocommerce->cart->add_to_cart( $product_id );
}
}
}
}
add_action( 'woocommerce_add_to_cart', 'add_free_product_to_cart' );

为此我应该使用哪个钩子(Hook)?

或者你能给我一个类似问题的相关链接吗?

谢谢

最佳答案

As you are targeting a certain cart amount to add a promotional product in the cart, you could use woocommerce_before_calculate_totals hook to achieve this with a custom built function.

如果客户更新购物车(也嵌入在该自定义功能中),您还必须删除该促销商品。

代码如下:

add_action( 'woocommerce_before_calculate_totals', 'adding_promotional_product', 10, 1 );
function adding_promotional_product( $cart ) {

if ( is_admin() && ! defined( 'DOING_AJAX' ) )
return;

if ( did_action( 'woocommerce_before_calculate_totals' ) >= 2 )
return;

$promo_id = 99; // <=== <=== <=== Set HERE the ID of your promotional product
$targeted_cart_subtotal = 100; // <=== Set HERE the target cart subtotal
$has_promo = false;
$subtotal = 0;

if ( ! $cart->is_empty() ){

// Iterating through each item in cart
foreach ($cart->get_cart() as $item_key => $cart_item ){
$product_id = version_compare( WC_VERSION, '3.0', '<' ) ? $cart_item['data']->id : $cart_item['data']->get_id();
// If Promo product is in cart
if( $product_id == $promo_id ) {
$has_promo = true;
$promo_key= $item_key;
} else {
// Adding subtotal item to global subtotal
$subtotal += $cart_item['line_subtotal'];
}
}
// If Promo product is NOT in cart and target subtotal reached, we add it.
if( ! $has_promo && $subtotal >= $targeted_cart_subtotal ) {
$cart->add_to_cart( $promo_id );
// echo 'add';
// If Promo product is in cart and target subtotal is not reached, we remove it.
} elseif( $has_promo && $subtotal < $targeted_cart_subtotal ) {
$cart->remove_cart_item( $promo_key );
}
}
}

此代码位于您的事件子主题(或主题)的 function.php 文件或任何插件文件中。

此代码经过测试并有效。

相关主题:WooCommerce - Auto add or auto remove a freebie product from cart

Code updated on (2018-10-01)

关于php - 当达到一定的购物车数量时添加促销产品,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39829588/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com