Woocommerce将产品添加到购物车多次,但作为不同的项目

时间:2014-10-27 19:20:12

标签: wordpress woocommerce cart

我有一些自定义代码,可以将商品添加到购物车中,这是一个可变产品。如果我添加两次相同的产品,它只会增加数量。我希望它再次添加产品作为购物车中的不同项目。

我将如何做到这一点?该项目正使用domain.com?add-to-cart=3434&variation_id=4434等链接添加到购物车。

我开发的系统是产品设计师。所以我可能想要选择相同的产品,但以不同的方式设计它,然后将相同的变化添加到购物车。

是否还有一种方法可以在网址中发送唯一标识符来拆分这些项目?

我想通过使用add_to_cart来实现它,但每次我使用变体属性时,运输最终都会出现错误,它似乎无法找到送货方式:

$woocommerce->cart->add_to_cart(522,1, 523,array("attribute_colour" => "colour","attribute_size" => "a3", "attribute_invoice-numbering" => "yes", "attribute_quantity-column" => "yes", "attribute_cc-type" => "duplicate"));

当该代码将项目添加到购物车时,会导致以下情况:

警告:在第291行的/home/****/public_html/wp-content/plugins/woocommerce/includes/class-wc-shipping.php中为foreach()提供的参数无效

似乎没有任何可用的送货方式。请仔细检查您的地址,或者如果您需要任何帮助,请与我们联系。

它没有任何意义,因为woocommerce中的标准添加到购物车代码使用add_to_cart并且没有这些问题。如果我使用URL,它也可以正常工作!

2 个答案:

答案 0 :(得分:6)

试试这个!

/*
 * @desc Force individual cart item
 */
function force_individual_cart_items( $cart_item_data, $product_id ){

  $unique_cart_item_key = md5( microtime().rand() );
  $cart_item_data['unique_key'] = $unique_cart_item_key;

  return $cart_item_data;

}

add_filter( 'woocommerce_add_cart_item_data','force_individual_cart_items', 10, 2 );


/*
 * @desc Remove quantity selector in all product type
 */
function remove_all_quantity_fields( $return, $product ) {

    return true;

}

add_filter( 'woocommerce_is_sold_individually', 'remove_all_quantity_fields', 10, 2 );

答案 1 :(得分:0)

我还不知道发货数组问题是否相关。但是,如果您看一下购物车类中add_to_cart()方法的开头:

// Generate a ID based on product ID, variation ID, variation data, and other cart item data
$cart_id        = $this->generate_cart_id( $product_id, $variation_id, $variation, $cart_item_data );

// See if this product and its options is already in the cart
$cart_item_key  = $this->find_product_in_cart( $cart_id );

基本上,我们在这里看到的是该项目必须完全唯一才能再次将其添加到购物车。否则,它只会增加购物车中已有商品的数量。因此,为了解决这个问题,您需要使add_to_cart()参数唯一...可能通过最终的$cart_item_data数组。