WooCommerce:即使在选择变体之前,也始终显示“添加到购物车”按钮

WooCommerce:即使在选择变体之前,也始终显示“添加到购物车”按钮,woocommerce,Woocommerce,在variable products的single product页面上,WooCommerce在选择一个变体之前不会生成Add to cart按钮。如果需要两个变体,但只选择了一个,WC仍会生成按钮,但单击该按钮会触发一条错误消息,要求选择所有变体 除了我不理解这个逻辑之外(为什么在第二个变体中使用提交后错误消息,而在第一个变体中使用另一个解决方案-不提交按钮?),是否有办法始终显示“添加到购物车”按钮,如果未选择所有变体,则会显示提交后错误消息?这应该可以完成以下工作: add_action

在variable products的single product页面上,WooCommerce在选择一个变体之前不会生成Add to cart按钮。如果需要两个变体,但只选择了一个,WC仍会生成按钮,但单击该按钮会触发一条错误消息,要求选择所有变体


除了我不理解这个逻辑之外(为什么在第二个变体中使用提交后错误消息,而在第一个变体中使用另一个解决方案-不提交按钮?),是否有办法始终显示“添加到购物车”按钮,如果未选择所有变体,则会显示提交后错误消息?

这应该可以完成以下工作:

add_action( 'woocommerce_before_add_to_cart_button', function(){
    // start output buffering
    ob_start();
} );

add_action( 'woocommerce_before_single_variation', function(){
    // end output buffering
    ob_end_clean();
    // output custom div
    echo '<div class="single_variation_wrap_custom">';
} );
add_操作('woocommerce_-before_-add_-to_-cart_按钮',函数(){
//启动输出缓冲
ob_start();
} );
添加动作('woocommerce'u在单个变量之前,'function()){
//端输出缓冲
ob_end_clean();
//输出自定义div
回声';
} );

实际上,我已经截获了(在模板文件
single product/add to cart/variable.php
)HTML标记
,该标记受用户选择的javascript影响,并替换为
,但事实并非如此。

我还认为,如果“添加到购物车”按钮始终可见,则会有更高的转换率。我的挑战是:始终显示按钮。如果未选择任何变体,单击显示错误消息(“请选择变体”)。我就是这样解决的。您只需编辑functions.php: 我用了第二个“假”按钮。首先,我们插入该按钮:

function wc_custom_addtocart_button(){
    global $product;
    ?>
    <a href="#" class="btn btn-primary btn-block placeholder_button"><?php echo $product->single_add_to_cart_text(); ?></a>
    <?php
}
add_action("woocommerce_before_add_to_cart_button","wc_custom_addtocart_button");

通过这种方式,整个woocommerce代码保持不变,并且更新安全

完美的解决方案,尽管我不理解其中的1%:)我很难过不能给你奖金,为什么这么短的时间限制这么短???我不知道这个限制,如果有办法给你50分,请让我知道,我会马上做。嗨,谢谢你的解决方案。对于我的新手,你能说明一下应该在哪里添加这个吗?我找不到“single product/add to cart/variable.php”@drake035 manythanks@SophieLepinoy代码应该添加到主题的
functions.php
文件中,或者在插件中
function run_js_code(){
    if (get_post_type() == "product"):
    ?>
    <script>   
    jQuery(document).ready(function($) {
        // use woocommerce events:
        $(document).on( 'found_variation', function() {
            $(".single_add_to_cart_button").show();
            $(".placeholder_button").hide();
        });
        $(".variations_form").on( 'click', '.reset_variations', function() {
            $(".single_add_to_cart_button").hide();
            $(".placeholder_button").show();
        });
        // display alert when no variation is chosen:
        $(".placeholder_button").click(function(e){
            e.preventDefault();
            alert("Please choose a product variation!");
        });
    });
    </script>
    <?php
    endif;
}
add_action( 'wp_footer', 'run_js_code' );
.single_add_to_cart_button { display: none; }