我使用以下代码将自定义状态字段添加到WooCommerce结帐字段
add_action( 'woocommerce_after_order_notes', 'some_custom_checkout_field' );
function some_custom_checkout_field( $checkout ){
echo '<div id="some_custom_checkout_field"><h2>' . __('Heading') . '</h2>';
woocommerce_form_field( 'some_field_name', array(
'type' => 'state',
'class' => array('my-field-class form-row-wide'),
'label' => __('Additional Field'),
'required' => true,
), $checkout->get_value( 'some_field_name' ));
echo '</div>';
}
我的问题:
当我第一次访问结帐页面时,它总是创建一个TEXT BOX而不是State Down Down,如果我刷新页面就可以正常工作。
答案 0 :(得分:0)
如果您想在结帐表单中添加额外字段,则需要使用挂钩woocommerce_checkout_fields
,您还需要将类型定义为&#34;选择&#34;。我使用此代码添加额外的字段和自定义结帐页面。
答案 1 :(得分:0)
<强>更新强>
如果您要为您的国家/地区添加状态,因为WC中的某些国家/地区已存在州字段,您需要使用附加在 woocommerce_states
中的自定义函数以这种方式过滤钩子:
add_filter( 'woocommerce_states', 'adding_custom_country_states' );
function adding_custom_country_states( $states ) {
// Define the related country code
$country_code = 'FR';
// Define for each state a different state code
$new_states = array(
'AE1' => __('State 1', 'woocommerce'),
'BFA' => __('State 2', 'woocommerce'),
'CKX' => __('State 3', 'woocommerce'),
'UBN' => __('State N', 'woocommerce'), // And so on
);
// Merge existing states with the new states
$states[$country_code] += $new_states;
return $states;
}
代码放在活动子主题(或主题)的function.php文件中,或者放在任何插件文件中。
这是避免问题的唯一方法
你会得到这个: