Cómo hacer obligatorios u opcionales los campos al finalizar compra en WooCommerce

Por diversos motivos, a veces no es posible hacer fácilmente que todos o algunos campos de finalizar compra sean obligatorios u opcionales en WooCommerce.

Bien porque el tema bloquea esta personalización, o porque algún plugin ha interferido con esta característica por defecto de WooCommerce, la realidad es que hay ocasiones en que no puedes obligar a que sean obligatorios u opcionales alguno o todos los campos al finalizar compra tus clientes.

La solución pasa por forzar a que estos campos sean obligatorios u opcionales mediante un gancho con el nivel máximo de prioridad, por si el motivo fuese un plugin que ya la usase previamente y ese fuese el culpable.

El código es así:

/** Cambiar estado obligatorio-opcional campos de facturación
* true = obligatorio
* false = opcional
*/
add_filter('woocommerce_billing_fields', 'force_billing_fields', 1000, 1);
function force_billing_fields($fields) {
$fields['billing_first_name']['required'] = false; //Nombre
$fields['billing_last_name']['required'] = false; //Apellidos
$fields['billing_email']['required'] = false; //Email
$fields['billing_phone']['required'] = false; //Teléfono
return $fields;
}
/** Otros campos de facturación 
* true = obligatorio
* false = opcional
*/
add_filter( 'woocommerce_default_address_fields', 'personalizar_campos_extra', 1000, 1 );
function personalizar_campos_extra( $address_fields ) {
$address_fields['company']['required'] = false; //Empresa
$address_fields['address_1']['required'] = false; //Dirección
$address_fields['country']['required'] = false; //País
$address_fields['city']['required'] = false; //Ciudad
$address_fields['state']['required'] = false; //Provincia
$address_fields['postcode']['required'] = false; //Código postal
return $address_fields;
}

En el código de ejemplo he optado por hacer todos los campos opcionales (false) pero puedes cambiar fácilmente simplemente cambiando a true el que quieras que sea obligatorio.

Debes añadir estos códigos al final del archivo functions.php del tema (hijo a ser posible) activo o a tu plugin de personalizaciones.

(3 votos, promedio: 5) Valora este artículo para ayudar a mejorar la calidad del blog

¿Te gustó este artículo? ¡Ni te imaginas lo que te estás perdiendo en YouTube!

Sobre el autor

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

Información base sobre privacidad:
  • Responsable: Fernando Tellado ([email protected])
  • Fin del tratamiento: Moderación de comentarios para evitar spam
  • Legitimación: Tu consentimiento
  • Comunicación de los datos: No se comunicarán los datos a terceros salvo por obligación legal
  • Derechos: Acceso, rectificación, portabilidad, olvido

 

Ir arriba Ir al contenido