我已经搜索了一个解决方案,当有人输入我制作的隐藏产品优惠券时,将一个免费项目(我用woocommerce隐藏)添加到购物车。这是我正在使用的代码,它是此版本的修改版本:http://docs.woothemes.com/document/automatically-add-product-to-cart-on-visit/。区别在于不是使用购物车总额来添加它,而是尝试使用应用的优惠券。
这是我当前的代码,并没有将产品添加到购物车:
add_action( 'init', 'add_product_to_cart' );
function add_product_to_cart() {
if ( ! is_admin() ) {
global $woocommerce;
$product_id = 1211;
$found = false;
$coupon_id = 1212;
if( $woocommerce->cart->applied_coupons == $coupon_id ) {
//check if product already in cart
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 product not found, add it
if ( ! $found )
$woocommerce->cart->add_to_cart( $product_id );
} else {
// if no products in cart, add it
$woocommerce->cart->add_to_cart( $product_id );
}
}
}
}
我很确定错误发生在这里'($ woocommerce-> cart-> applied_coupons == $ coupon_id)'但我不知道正确的标识符。
这是我的functions.php
任何人都可以帮助我吗?谢谢
答案 0 :(得分:1)
我处于类似情况并使用了一些代码并进行了一些调整..这对我有用:if(in_array($coupon_id, $woocommerce->cart->applied_coupons)){
干杯!
答案 1 :(得分:0)
我知道这很古老,但是我基本上有同样的需求。所以我认为我会继续发布解决方案。我几乎不是这方面的专家,因此,我相信仍有很大的改进空间。我把它放在我的functions.php中(显然是从这里的原始文章中借来了很多东西):
function mysite_add_to_cart_shortcode($params) {
// default parameters
extract(shortcode_atts(array(
'prod_id' => '',
'sku' => '',
), $params));
if( $sku && !$prod_id ) $prod_id = wc_get_product_id_by_sku($sku);
if($prod_id) {
$cart_contents = WC()->cart->get_cart_contents();
if ( sizeof( $cart_contents ) > 0 ) {
foreach ( $cart_contents as $values ) {
$cart_prod = $values['product_id'];
if ( $cart_prod == $prod_id ) $found = true;
}
// if product not found, add it
if ( ! $found ) WC()->cart->add_to_cart( $prod_id );
} else {
// if no products in cart, add it
WC()->cart->add_to_cart( $prod_id );
}
}
return '';
}
add_shortcode('mysite_add_to_cart','mysite_add_to_cart_shortcode');
add_action( 'woocommerce_applied_coupon', 'mysite_add_product' );
function mysite_add_product($coupon_code) {
$current_coupon = new WC_Coupon( $coupon_code );
$coupon_description = $current_coupon->get_description();
do_shortcode($coupon_description);
return $coupon_code;
}
这使我可以在优惠券说明中添加一个简短代码,该短码指定了在应用优惠券时应添加的产品。它可以是[mysite_add_to_cart prod_id = 1234]或[mysite_add_to_cart sku = 3456]。到目前为止,它似乎运行良好。