添加到购物车按钮显示Woocommerce中的缺货变量产品

时间:2017-06-21 04:30:26

标签: wordpress woocommerce

所以我的Woocommerce商店发生了一件奇怪的事情。

现在当单个产品(没有变种)缺货时,数量'和'加入购物车'按钮消失 - 这就是我想要的。它只显示了“缺货”和“缺货”。标签

当我有一个变量产品(比如2个变种),所有变种都缺货时,它仍然会显示数量'和'加入购物车'按钮(变灰)。

在所有情况下如何隐藏数量+添加到购物车按钮,无论它是否为单件或可变产品?

非常感谢任何帮助!

3 个答案:

答案 0 :(得分:0)

这是一个插件,可以帮助您隐藏特定于产品的添加到购物车按钮:Woocommerce Hide Add To Cart Button

隐藏“添加到购物车”按钮有助于

Hide Add to Cart button from product single page.
Hide Add to Cart button from category page.
Hide Add to Cart button from homepage and all other pages.

您也可以通过在functions.php

中添加以下功能来隐藏它
if (!function_exists('woocommerce_template_loop_add_to_cart')) {
    function woocommerce_template_loop_add_to_cart() {
        global $product;
        if ( ! $product->is_in_stock() || ! $product->is_purchasable() ) return;
        woocommerce_get_template('loop/add-to-cart.php');
    }
}

答案 1 :(得分:0)

您可以发布指向该网站或开发网站的链接,以便我们查看。或者,实现以下代码。

.[class for for button if product is out of stock]{
display: none;
}

答案 2 :(得分:0)

add_action( 'woocommerce_before_add_to_cart_button', 'get_selected_variation_stock' );
function get_selected_variation_stock() {
    global $product;

    if ($product->is_type( 'variable' ))
    {
        $stockArr = array();
        $available_variations = $product->get_available_variations();
        foreach ($available_variations as $key => $value)
        {
            $variation_id = $value['variation_id'];
            $attribute_pa_colour = $value['attributes']['attribute_pa_colour'];
            $variation_obj = new WC_Product_variation($variation_id);
            $stock = $variation_obj->get_stock_quantity();

            $stockArr[] = [
                "id"  => $variation_id,
                "qty" => $stock
            ];

        }

        ?>

        
            jQuery(document).ready(function(){

                var arr =  echo json_encode($stockArr); //this value can be wrap up into php tag mostly. Otherwise functionality not works.

                jQuery('input.variation_id').change( function(){
                    if( '' != jQuery('input.variation_id').val() ) {

                        var var_id = jQuery('input.variation_id').val();

                        const objectArray = Object.entries(arr);
                        objectArray.forEach(([key, value]) => {

                            var prod_id  = value.id;
                            var prod_qty = value.qty;

                            if (prod_id == var_id) {

                                if (prod_qty > 0) {
                                    jQuery(".single_add_to_cart_button.button").removeClass("disabledCartBtn");
                                    jQuery(".single_add_to_cart_button.button").html("Add to cart");
                                    jQuery(".single_add_to_cart_button.button").removeAttr("disabled");
                                }
                                else {
                                    jQuery(".single_add_to_cart_button.button").addClass("disabledCartBtn");
                                    jQuery(".single_add_to_cart_button.button").html("Out of stock");
                                    jQuery(".single_add_to_cart_button.button").attr("disabled", "disabled");
                                }

                            }

                        });

                    }
                });
            });
        
    <?php

}

}

将此代码添加到functions.php中,您必须实现目标。

相关问题