Php 覆盖用于电子商务签出的前端JS

Php 覆盖用于电子商务签出的前端JS,php,jquery,wordpress,woocommerce,checkout,Php,Jquery,Wordpress,Woocommerce,Checkout,为了使用我们的地址验证脚本,我需要在加载结帐页面时隐藏账单地址、城市、州和邮政编码字段。下面的代码实现了我们想要的,但是在这个过程中它做得太晚了。您会看到这些字段,直到它运行updated\u checkout事件为止,该事件在该过程中已经太晚了。然而,在init_checkout上运行它似乎太早了,因为还有其他东西迫使显示这些字段。在init\u checkout和updated\u checkout之间是否有我应该关注的东西 jQuery( "body" ).on( "updated_che

为了使用我们的地址验证脚本,我需要在加载结帐页面时隐藏账单地址、城市、州和邮政编码字段。下面的代码实现了我们想要的,但是在这个过程中它做得太晚了。您会看到这些字段,直到它运行
updated\u checkout
事件为止,该事件在该过程中已经太晚了。然而,在
init_checkout
上运行它似乎太早了,因为还有其他东西迫使显示这些字段。在
init\u checkout
updated\u checkout
之间是否有我应该关注的东西

jQuery( "body" ).on( "updated_checkout", function() {
  jQuery("#billing_country_field,
  #billing_address_1_field
  #billing_address_2_field,
  #billing_city_field,
  #billing_state_field,
  #billing_postcode_field").css("display", "none");
});

在首次加载DOM时,字段仍将显示

我已尝试使用“body”委派的所有可用javascript事件:
添加到购物车
添加到购物车更改
点击
国家到州更改
国家到州更改
初始签出
更新签出更新的wc分区
wc碎片刷新
wc碎片刷新
。 字段将始终显示一点

唯一的方法是在加载一些CSS规则时隐藏签出表单,这些规则将添加到活动主题
styles.CSS
文件中:

form.checkout.com-checkout{
可见性:隐藏;
不透明度:0;
}
还有一点jQuery,它将在显示签出表单之前首先隐藏字段:

add_filter( 'wp_footer', 'custom_checkout_script' );
function custom_checkout_script( ){
    if( ! is_checkout() ) return;
    ?>
    <script type="text/javascript">
    jQuery(function($){
        var events = 'update_checkout',
            billingFields = '#billing_country_field,#billing_address_1_field,#billing_address_2_field';
        billingFields += ',#billing_city_field,#billing_state_field,#billing_postcode_field';

        $('body').on( events, function(){
            $(billingFields).hide( 0,function(){
                $('form.checkout.woocommerce-checkout').css('visibility','visible').fadeIn({ duration: 1000 });
            });
        });
    });
    </script>
    <?php
}
add_filter('wp_footer','custom_checkout_script');
函数自定义\u签出\u脚本(){
如果(!is_checkout())返回;
?>
jQuery(函数($){
var事件='update_checkout',
计费字段=“#计费国家字段,#计费地址字段,#计费地址字段”;
计费字段+=',#计费字段#城市字段#计费字段#州字段#计费字段#邮政编码字段#;
$('body').on(事件,函数(){
$(billingFields).hide(0,函数(){
$('form.checkout.woocommerce checkout').css('visibility','visibility').fadeIn({duration:1000});
});
});
});

在两个事件上调用您的功能?
jQuery(“body”)。在(“init\u checkout updated\u checkout”,function()上{…
问题是它在
init\u checkout
上不起作用,因为之后似乎还有其他东西显示字段。这里是页面加载的演示。为什么不通过wp\u enqueue\u脚本加载脚本呢?我见过其他地址插件这样做,它可以隐藏字段。虽然这不能解决问题,但似乎不能解决问题o是目前最好的选择。谢谢