【问题标题】:Woocommerce: Hide Buy Now Button in CheckoutWoocommerce:在结帐中隐藏“立即购买”按钮
【发布时间】:2021-12-02 15:14:57
【问题描述】:

如果购物车中有某些产品并且运送到某些国家/地区,我想阻止在 WooCommerce 中结帐。因此创建了通知/错误,但将其设置为 display:none。它应该按照规则出现和消失。代码如下:

add_action( 'woocommerce_after_checkout_form', 'bbloomer_show_notice_shipping' );
  
function bbloomer_show_notice_shipping(){
?>
  
 <script>
        jQuery(document).ready(function($){
  
            var countryCode = 'DE';

            selectedCountry = $('select#billing_country').val();
                  
            if( selectedCountry != countryCode ){
                $('.shipping-notice').show();
                $('.form-row.place-order.wc-gzd-place-order').hide();
            }
            else {
                $('.shipping-notice').hide();
                $('.form-row.place-order.wc-gzd-place-order').show();
            }

  
            $('select#billing_country').change(function(){
  
                selectedCountry = $('select#billing_country').val();
                  
                if( selectedCountry != countryCode ){
                    $('.shipping-notice').show();
                    $('.form-row.place-order.wc-gzd-place-order').hide();
                }
                else {
                    $('.shipping-notice').hide();
                    $('.form-row.place-order.wc-gzd-place-order').show();
                }
            });
  
        });
    </script>
<?php
}
?>

$('.shipping-notice').show() 和 hide() 工作正常。 隐藏和显示“立即购买”按钮几乎可以正常工作,但在页面初始加载时除外。

我怀疑 $('.form-row.place-order.wc-gzd-place-order').hide();想要完成它的工作,但该元素尚不存在。

结帐中有一个支付网关,加载时间只有几秒钟……“立即购买”按钮仅在加载完成后出现。

我该怎么做才能等到页面真正完全加载,包括所有 Ajax 等,然后隐藏按钮?

谢谢:-)

【问题讨论】:

  • 从你的问题中我可以收集到它有点像the following question + the first part of my answer,所以使用 jQuery/AJAX 并不是真的必要。我还在您的代码中看到您为 WooCommerce 使用 Germanized,这是正确的吗?如果是这样,请在您的问题中提及这一点,因为答案可能会偏离默认的 WooCommerce 设置,并且答案不会对每个人都“开箱即用”
  • @7uc1f3r:感谢您的回答。我将代码更改为非德国化设置。这现在应该适用于每个人。之前:'form-row.place-order.wc-gzd-place-order' 之后:'div.place-order button#place_order'
  • @7uc1f3r:您的参考资料 (stackoverflow.com/a/69495212/11987538) 几乎就是我所需要的,谢谢。缺少的是当客户选择交货不受限制的国家/地区时订单的解锁。 (例如德国 -> 是,下订单 - 意大利 -> 否,不下订单)。

标签: button woocommerce checkout disable


【解决方案1】:

我已经通过在钩子“woocommerce_review_order_after_submit”上添加一个额外的操作来解决它,这是在立即购买/放置订单按钮出现后执行的,并且解决了它。上面的代码现在对我有用。

【讨论】:

    猜你喜欢
    • 2011-11-20
    • 2018-09-21
    • 2021-09-28
    • 1970-01-01
    • 2013-03-19
    • 1970-01-01
    • 2014-06-03
    • 2014-10-05
    • 2013-01-03
    相关资源
    最近更新 更多