使用应用优惠券woocommerce / wordpress将隐藏的产品添加到购物车

时间:2013-11-15 03:58:58

标签: php wordpress woocommerce

我已经搜索了一个解决方案,当有人输入我制作的隐藏产品优惠券时,将一个免费项目(我用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

任何人都可以帮助我吗?谢谢

2 个答案:

答案 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]。到目前为止,它似乎运行良好。