He creado algunos campos de pago con datos similares y son obligatorios.
add_filter('woocommerce_checkout_fields', 'custom_woocommerce_billing_fields', 50); function custom_woocommerce_billing_fields($fields) { $fields['billing']['billing_company'] = array( 'label' => 'Company', 'type' => 'text', 'class' => array( 'form-row-first' ), 'required' => true, ); $fields['billing']['billing_OIB'] = array( 'label' => 'OIB', 'type' => 'text', 'class' => array( 'form-row-last' ), 'required' => true, ); } Un cliente tiene una opción de botón de radio para elegir si está comprando como particular o en nombre de una empresa. Si está comprando con fines privados, con JavaScript ocultaré algunos de los campos innecesarios, como el nombre de la empresa, y también eliminaré el nombre validate-required . Si está comprando para una empresa, escondo el nombre, el apellido, etc. Este código es más grande, pero creo que entiendes la idea.
notNeededField.style.display = 'none'; notNeededField.classList.remove('validate-required');Pero esto no funciona completamente porque WooCommerce probablemente realiza una validación adicional de cada campo en PHP. Entonces, incluso después de que quiero pagar como una persona privada, Woocommerce todavía me da el mensaje de que se requiere el nombre de la empresa.
¿Es posible activar/desactivar la validación sobre la marcha con JavaScript y cómo? Alternativamente, ¿cuál sería la mejor solución? ¿Tal vez establecer el parámetro required en esos campos como falso y solo hacer una validación de JavaScript personalizada?