如何在WooCommerce中使用add_to_cart()方法?

时间:2014-08-07 11:51:55

标签: php wordpress woocommerce

我目前正在向购物车添加产品,如下所示:

$woocommerce->cart->add_to_cart( $product_id, $quantity );

我注意到add_to_cart()方法实际上接受了5个参数。请参阅以下内容(摘自WooCommerce文档):

add_to_cart( string $product_id, string $quantity = 1, integer $variation_id = '', array $variation = '', array $cart_item_data = array() )

有人可以举例说明最后3个参数的用途吗?

  • $variation_id
  • $variation
  • $cart_item_data [包含此产品的任何其他购物车商品数据的数组。]

对方法文档中的内容有一些描述,但它并没有很大的解释性:

  

int $ variation_id

     

数组$ variation属性值

     

数组$ cart_item_data我们想要传递给项目的额外购物车项目数据

参考: http://docs.woothemes.com/wc-apidocs/class-WC_Cart.html#_add_to_cart

1 个答案:

答案 0 :(得分:0)

对于最后3个参数,您可以像这样使用它们:

$variation_id:如果产品是变体,则这将是变体的特定职位ID。如果要添加的产品是简单产品或不是可变产品,则可以将此空白保留或将其设置为0。

$variation:选择变量产品的变体时,此数组包含变体属性是什么以及客户选择的值。

$cart_item_data:这是一个数据数组,可用于将自定义数据存储到购物车中的产品。例如,如果您想存储有关该产品的一些元数据,这些数据稍后将很有用,则可以在此处添加它。当您循环购物车中的物品时,它将可用。

这是我为插件编写的一小段代码示例:

$gift_item = \wc_get_product($gift_item_id);
$gift_variation_id = 0;
$variation_data    = [];
// The Gift is a variation, so get the variation options that are associated with this product variation.
if ($gift_item->is_type('variation')) {
    $gift_variation_id = $gift_item->get_id();
    $variation_data    = wc_get_product_variation_attributes($gift_variation_id);              
}

//Check to see if the product is already in our cart and has an item meta of being a gift item
$gift_item_hash = $cart->generate_cart_id($gift_item->get_parent_id() ?: $gift_item->get_id(), $gift_variation_id, $variation_data, [
    'gift'     => true
]);

if ($cart->find_product_in_cart($gift_item_hash) === false) {
    // Add the Gift to our cart. Add some meta data to the item so we can change it's price at checkout.
    $gift_cart_item_key = $cart->add_to_cart($gift_item_id, $new_gift_quantity, $gift_variation_id, $variation_data, ['gift' => true]);
}