Solution:
For custom checkout radio buttons fields, you can use woocommerce_form_field_radio
composite hook to add a <br />
tag like:
add_action( 'woocommerce_form_field_radio', 'customize_form_field_radio', 20, 4 );
function customize_form_field_radio( $field, $key, $args, $value ) {
if ( ! empty( $args['options'] ) && 'radio_choice' === $key && is_checkout() ) {
$field = str_replace( '</label><input ', '</label><br /><input ', $field );
$field = str_replace( '<label ', '<label style="display:inline;margin-left:8px;" ', $field );
}
return $field;
}
Code goes in functions.php file of the active child theme (or active theme). Tested and works.
Don’t forget to remove all <br />
from your options array.
So the display will be: