【问题标题】:Woocommerce multiply the quantity of a specific product in cartWoocommerce 乘以购物车中特定产品的数量
【发布时间】:2017-12-10 11:40:11
【问题描述】:

有什么方法可以增加购物车中特定产品的数量吗?

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

我只想为购物车中的一种特定产品而不是全部。

【问题讨论】:

    标签: php wordpress woocommerce


    【解决方案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>
    

    【讨论】:

    • 我想更改购物车页面上的数量,仅限一种特定产品?
    • @jose:我测试了$woocommerce-&gt;cart-&gt;set_quantity( product_id , product_quantity * 5 );,但每次它都将数量与前一个值相乘,而不是与购物车输入的值相乘,所以我没有发布答案。
    • @RaunakGupta 在我之前的回答中看到我的编辑。我使用 javascript 实时更改购物车表中的输入。也许这是一种更合适的方法。你怎么看?
    • @JoseGomez:我明白了你的意思,即通过在客户端管理全部内容,你的解决方案应该可以工作。在cart.php 中,只有这一行可以解决问题&lt;td class="product-quantity &lt;?= $product_id == $your_id? 'multiply': ''; ?&gt;" data-title="&lt;?php esc_attr_e( 'Quantity', 'woocommerce' ); ?&gt;"&gt;,不需要其他 PHP 代码。
    猜你喜欢
    • 1970-01-01
    • 2021-11-27
    • 2018-07-31
    • 1970-01-01
    • 2020-09-21
    • 2019-09-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多