WooCommerce为单个产品从大型组中选择x个项目

时间:2017-05-16 13:11:14

标签: wordpress woocommerce

我有一个Woocommerce网站,客户可以订购具有以下特征的颜色样本:

  1. 从超过100个
  2. 的列表中选择多种颜色
  3. 前3个选项是免费的
  4. 每个后续颜色选择将为订单价格增加1美元
  5. 在这种情况下,为每种颜色制作100多个单独的简单产品并捆绑它们似乎不合适(我们也不跟踪样品上的库存)我只是希望客户在一个名为&的产品的背景下做出多种选择。 #34;样品&#34 ;.我查看了bundled products page docs,但这些似乎都不适合我要做的事情。

1 个答案:

答案 0 :(得分:0)

我使用插件和一些自定义代码解决了这个问题。该插件为here,自定义代码会计算分组中的项目数,并根据该数字修改价格。就我而言,我希望每个选项花费一美元,但前三个选项是免费的。在将其添加到购物车之前,我使用woo挂钩来更改价格(在选择后点击添加到购物车按钮时会触发此消息):

add_action( 'woocommerce_before_calculate_totals', 'add_custom_price' );

function add_custom_price( $cart_object ) {
    $target_product_id = 9516; // my product ID

    foreach ( $cart_object->cart_contents as $key=>$value ) {
        if ( $value['product_id'] == $target_product_id ) {
        if (count($value['tmdata']['tmcp_post_fields'])>=3){
            $value['data']->set_price($value['tm_epo_options_prices'] - 3);
            } elseif (count($value['tmdata']['tmcp_post_fields'])==2){
            $value['data']->set_price($value['tm_epo_options_prices'] - 2);
            } elseif (count($value['tmdata']['tmcp_post_fields'])==1){
             $value['data']->set_price($value['tm_epo_options_prices'] - 1);
            }
        }

    }
}

请注意,上面的代码是调用plugin提供的数据(tm_epo_options_prices)。