将自定义变量添加到购物车内容

时间:2014-03-20 作者:Prithviraj Mitra

我在产品详细信息页面中添加了一个自定义变量,我可以将自定义变量值传递到“添加到购物车”函数中。

public function add_to_cart( $product_id, $quantity = 1, $mmCentre, $variation_id = \'\', $variation = \'\', $cart_item_data = array()  ) {
.........
.........
}
So变量$mmCentre 是自定义变量。现在我已经做到了

$this->cart_contents[$cart_item_key] = apply_filters( \'woocommerce_add_cart_item\', array_merge( $cart_item_data, array(
                    \'product_id\'    => $product_id,
                    \'variation_id\'  => $variation_id,
                    \'variation\'     => $variation,
                    \'quantity\'      => $quantity,
                    \'data\'          => $product_data,
                    \'mmCentre\'      => $mmCentre
                ) ), $cart_item_key );
问题是我无法在购物车页面中获取该值。我转储了cart\\u内容,但看不到数组中传递的值。

你能告诉我我做错了什么吗?

1 个回复
最合适的回答,由SO网友:passatgt 整理而成

不久前,我不得不做一些类似的事情,这就是我的工作:

在该示例中,自定义输入名称是add to cart表单中的“test\\u field”,这样,当您转储cart\\u内容时,可以在末尾的某个地方看到该值

//Store the custom field
add_filter( \'woocommerce_add_cart_item_data\', \'add_cart_item_custom_data_vase\', 10, 2 );
function add_cart_item_custom_data_vase( $cart_item_meta, $product_id ) {
  global $woocommerce;
  $cart_item_meta[\'test_field\'] = $_POST[\'test_field\'];
  return $cart_item_meta; 
}

//Get it from the session and add it to the cart variable
function get_cart_items_from_session( $item, $values, $key ) {
    if ( array_key_exists( \'test_field\', $values ) )
        $item[ \'mmCentre\' ] = $values[\'test_field\'];
    return $item;
}
add_filter( \'woocommerce_get_cart_item_from_session\', \'get_cart_items_from_session\', 1, 3 );

结束

相关推荐