我的问题错了,因为我忘记了我以前试过的一些东西。将表单字段拆分为两个div很容易:
// form-billing.php
<div class="woocommerce-billing-fields__field-wrapper">
<?php
$fields = $checkout->get_checkout_fields(\'billing\');
$fields_half_count = round(count($fields) / 2);
$i = 0;
echo \'<div class="one">\';
foreach ($fields as $key => $field) {
if ($i++ == $fields_half_count) echo \'</div><div class="two">\';
woocommerce_form_field($key, $field, $checkout->get_value($key));
}
echo \'</div>\';
?>
</div>
现在的问题是,当checkout JS启动时,它会重新排列所有字段并将它们放在一个div中。
可以禁用它,但它用于根据运输国家获取运费,也可以根据国家管理字段(美国有州,西班牙有省等),因此禁用它不是一个真正的选项。
到目前为止,我找到的唯一解决方法是使用CSScolumn-count: 2
在…上.woocommerce-billing-fields__field-wrapper
使浏览器在两列上显示它。
布局并不完美,但这是迄今为止我找到的最好的选择。否则,需要使用自定义JS来处理WooCommerce签出JS所做的工作。