【问题标题】:Add to cart button showing for out of stock variable products in Woocommerce在 Woocommerce 中显示缺货可变产品的“添加到购物车”按钮
【发布时间】:2017-11-23 19:34:19
【问题描述】:

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

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

当我有一个所有变体都缺货的可变产品(比如 2 个变体)时,它仍然显示“数量”和“添加到购物车”按钮(灰色)。

如何在所有情况下隐藏“数量 + 添加到购物车”按钮,无论它是单一产品还是可变产品(缺货时)?

非常感谢任何帮助!

【问题讨论】:

    标签: wordpress woocommerce


    【解决方案1】:

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

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

    【讨论】:

    • 我不想用css隐藏它!我想通过 php 隐藏整个添加到购物车的部分
    【解决方案2】:

    这是一个插件,可以帮助您隐藏特定于产品的添加到购物车按钮: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');
        }
    }
    

    【讨论】:

    • 虽然总是隐藏添加到购物车。我只希望在产品缺货时隐藏它。
    【解决方案3】:
    add_action('woocommerce_before_add_to_cart_button','get_selected_variation_stock'); 函数 get_selected_variation_stock() { 全球$产品; if ($product->is_type('变量')) { $stockArr = 数组(); $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, “数量” => $库存 ]; } ?> jQuery(文档).ready(函数(){ var arr = echo json_encode($stockArr); //这个值大部分可以包装到php标签中。否则功能不起作用。 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; 如果(prod_id == var_id){ 如果(产品数量> 0){ jQuery(".single_add_to_cart_button.button").removeClass("disabledCartBtn"); jQuery(".single_add_to_cart_button.button").html("加入购物车"); jQuery(".single_add_to_cart_button.button").removeAttr("disabled"); } 别的 { jQuery(".single_add_to_cart_button.button").addClass("disabledCartBtn"); jQuery(".single_add_to_cart_button.button").html("缺货"); jQuery(".single_add_to_cart_button.button").attr("禁用", "禁用"); } } }); } }); });
        <?php
    
    }
    

    }

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2018-07-07
      • 2012-12-04
      • 2019-01-28
      • 2022-11-13
      • 2018-08-11
      • 1970-01-01
      • 2021-12-29
      相关资源
      最近更新 更多