Quiero deshabilitar varios campos de facturación de pago de WooCommerce según el método de pago. Actualmente, tengo dos métodos de pago que requieren correo electrónico y nombre solo en el formulario de facturación.
Encontré la solución en este hilo (Mostrar ocultar el campo de pago personalizado de Woocommerce según el método de pago seleccionado), pero la solución es solo para un método de pago. Además, al probar ese código, el checkout aún muestra el campo de facturación, para no ocultarlo. Oculta el campo de facturación solo para otros métodos de pago.
Aquí está el código que he probado, pero el código es solo para un método de pago:
<?php
// Add custom Theme Functions here
// Conditional Show hide checkout fields based on chosen payment methods
add_action( 'wp_footer', 'conditionally_show_hide_billing_custom_field' );
function conditionally_show_hide_billing_custom_field(){
// Only on checkout page
if ( is_checkout() && ! is_wc_endpoint_url() ) :
?>
<script>
jQuery(function($){
var a="input[name="payment_method"]",
b = a + ':checked',
c="#billing_address_1_field",
d = '#billing_address_2_field'; // The checkout field <p> container selector
// Function that shows or hide checkout fields
function showHide( selector="", action = 'show' ){
if( action == 'show' )
$(selector).show( 200, function(){
$(this).addClass("validate-required");
});
else
$(selector).hide( 200, function(){
$(this).removeClass("validate-required");
});
$(selector).removeClass("woocommerce-validated");
$(selector).removeClass("woocommerce-invalid woocommerce-invalid-required-field");
}
// Initialising: Hide if choosen payment method is "banktransfer"
if( $(b).val() !== 'banktransfer')
showHide( c, 'hide' ),
showHide( d, 'hide' );
else
showHide( c ),
showHide( d );
// Live event (When payment method is changed): Show or Hide based on "banktransfer"
$( 'form.checkout' ).on( 'change', a, function() {
if( $(b).val() !== 'banktransfer')
showHide( c, 'hide' ),
showHide( d, 'hide' );
else
showHide( c ),
showHide( d );
});
});
</script>
<?php
endif;
}
¿Cuál es la solución para múltiples métodos de pago?
.