Woocommerce将特定产品的数量乘以购物车

时间:2017-07-06 12:47:51

标签: php wordpress woocommerce

有没有办法增加购物车中特定产品的数量?

假设我在购物车中有多个产品,其中一个产品有数量" 3",我想将数量乘以" 5"所以[3 * 5]并将数量字段更新为" 15"。

我想在购物车中只为一个特定产品而不是为所有产品做这件事。

1 个答案:

答案 0 :(得分:1)

取决于您希望何时何地更改它。

我可以想到两种不同的方法:

PHP:

$woocommerce->cart->set_quantity( product_id , product_quantity );

JS + AJAX:

您可以在此处找到有效的解决方案,只需尝试根据您的需求进行调整:

WooCommerce - change QTY triggers AJAX call in cart

编辑:

我编写了一个简单的jQuery示例。您可以在用户输入购物车金额输入中的数量时实时执行此操作。用户输入任何数量,当他/她在外面点击或离开输入焦点时,金额会自动更改(x5)。

要使用此功能,您必须在Wordpress中编辑购物车模板。我强烈建议您使用子主题并遵循Woocommerce template best practices

$("#input-value").focusout(function() {
    var value = parseFloat($(this).val());
    $(this).val(value*5);
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.0.0/jquery.min.js"></script>
Quantity: <input type="text" id="input-value" />

为了只针对特定产品,您可以在购物车模板中使用一些PHP,将“乘法”类添加到数量容器中:

<?php if($_product->id == your_id) {
?>
    <td class="product-quantity multiply" data-title="<?php _e( 'Quantity', 'woocommerce' ); ?>">
<?php
}else{
?>
    <td class="product-quantity" data-title="<?php _e( 'Quantity', 'woocommerce' ); ?>">
<?php
}
?>

    <?php
        if ( $_product->is_sold_individually() ) {
            $product_quantity = sprintf( '1 <input type="hidden" name="cart[%s][qty]" value="1" />', $cart_item_key );
        } else {
            $product_quantity = woocommerce_quantity_input( array(
                'input_name'  => "cart[{$cart_item_key}][qty]",
                'input_value' => $cart_item['quantity'],
                'max_value'   => $_product->backorders_allowed() ? '' : $_product->get_stock_quantity(),
                'min_value'   => '0'
            ), $_product, false );
        }

        echo apply_filters( 'woocommerce_cart_item_quantity', $product_quantity, $cart_item_key, $cart_item );
    ?>
</td>