0

当有人输入我制作的 hiddenproduct 优惠券时,我已经广泛搜索了一种将免费商品(我用 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

谁能帮我吗?谢谢

4

2 回答 2

1

我处于类似情况并使用了您的一些代码并进行了一些调整。这对我有用:if(in_array($coupon_id, $woocommerce->cart->applied_coupons)){

干杯!

于 2013-11-20T03:04:11.483 回答
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]。到目前为止,它似乎工作正常。

于 2019-02-26T08:08:02.837 回答