Hacer campo obligatorio u opcional en checkout de WooCommerce

Es importante tener en cuenta que en ocasiones otros plugins o funcionalidades del tema impidan en normal flujo de ejecución de Woocommerce. Por ello en este código pretende imponerse a todas esas posibles configuraciones dando un nivel alto de prioridad (concretamente 5000). no debería hacer falta un número tan grande, pero por si acaso.

El código que se muestra a continuación hace que todos los campos sean obligatorios (true), si quieres que alguno sea opcional debes marcarlo como false

add_filter('woocommerce_billing_fields', 'obligatoriedad_campo_facturacion', 5000, 1);
function obligatoriedad_campo_facturacion($fields) {
$fields['billing_first_name']['required'] = true; //facturacion nombre
$fields['billing_last_name']['required'] = true; //facturacion apellidos
$fields['billing_email']['required'] = true; //facturacion email
$fields['billing_phone']['required'] = true; //facturacion telefono
return $fields;
}

Hay otros campos que también se pueden marcar como obligatorios u opcionales

add_filter( 'woocommerce_default_address_fields', 'personalizacion_campos_empresa', 5000, 1 );
function personalizacion_campos_empresa( $address_fields ) {
$address_fields['company']['required'] = true; //facturacion empresa
$address_fields['address_1']['required'] = true; //facturacion direccion
$address_fields['country']['required'] = true; //facturacion pais
$address_fields['city']['required'] = true; //facturacion ciudad
$address_fields['state']['required'] = true; //facturacion provincia o estado
$address_fields['postcode']['required'] = true; //facturacion código postal
return $address_fields;
}

Aunque puedes añadir este código en el archivo functions de tu child theme, te recomiendo que lo hagas en tu plugin de funcionalidades. Estas cuestiones que no dependen del tema es recomendable que lo hagas en un plugin de funcionalidades.