删除 Woocommerce 中的“添加到购物车”按钮,但保留变体

问题描述 投票:0回答:2

美好的一天,

我需要隐藏 WooCommerce 中的添加到艺术按钮,而不影响定价或下拉菜单和变化。我正在使用 WPForms 添加到购物车并结帐,只是不想在网站上的任何位置显示“添加到购物车”按钮。

到目前为止,我已经使用此代码片段从商店和产品页面中删除了“添加到购物车”:

remove_action( 'woocommerce_after_shop_loop_item', 'woocommerce_template_loop_add_to_cart');

remove_action( 'woocommerce_single_product_summary', 'woocommerce_template_single_add_to_cart', 30 );

这一直有效,直到我添加一个可变产品,它隐藏了“添加到购物车”按钮,但也隐藏了变体下拉列表,所以我使用了这个片段:

remove_action('woocommerce_single_variation', 'woocommerce_single_variation_add_to_cart_button', 20 );

这会隐藏“添加到购物车”按钮并显示变体下拉列表。

问题是,两个片段不能一起工作,它们基本上互相覆盖。

有一个片段可以帮助我吗?

php wordpress woocommerce
2个回答
1
投票

如何隐藏它重要吗?如果没有,你可以使用CSS

a.add_to_cart_button.ajax_add_to_cart{ 
    display:none;
}

0
投票

要在所有变体缺货时隐藏可变产品的“添加到购物车”按钮,请在主题的functions.php文件或自定义插件中使用此简化的PHP代码。

这是一个可行的解决方案:

隐藏缺货变化的“添加到购物车”按钮的 PHP 代码

add_action('woocommerce_single_product_summary', 'hide_add_to_cart_for_out_of_stock_variations', 15);

function hide_add_to_cart_for_out_of_stock_variations() {
    global $product;

    
    if ($product->is_type('variable')) {
        $variations = $product->get_available_variations();
        $all_out_of_stock = true;

        // Loop through variations and check if any are in stock
        foreach ($variations as $variation) {
            if ($variation['is_in_stock']) {
                $all_out_of_stock = false;
                break;
            }
        }

        
        if ($all_out_of_stock) {
            echo '<style>.single_add_to_cart_button { display: none !important; }</style>';
        }
    }
}

如何运作:

Hook: woocommerce_single_product_summary 在产品页面上运行。 检查是否为可变产品:确认产品类型为可变产品。

检查变体: 循环遍历所有可用变体并检查是否有库存。

隐藏按钮:如果所有变体都缺货,请添加CSS以隐藏“添加到购物车”按钮。

备注: add_action 中的优先级 15 确保该函数在 WooCommerce 呈现产品详细信息后运行。

CSS 规则仅在所有变体都缺货时隐藏按钮。 当没有可供购买的变体时,此代码应有效隐藏“添加到购物车”按钮。

© www.soinside.com 2019 - 2024. All rights reserved.