不工作
WooCommerce状态的自定义结账场我用下面的代码自定义状态字段添加到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>';
}
我的问题:
当我访问结帐页面,第一次总是创建一个文本框,而不是一个国家下拉菜单,如果我刷新页面,它工作得很好。
如果您想要在结算表单中添加额外字段,则需要使用挂钩woocommerce_checkout_fields
,您还需要将类型定义为“select”。我使用此代码来添加额外的字段并自定义结账页面。
如果你想添加的状态为你的国家,作为国家领域已存在一些国家在WC,您将需要使用woocommerce_states
过滤钩子这样迷上一个自定义函数:
add_filter('woocommerce_states', 'adding_custom_country_states');
function adding_custom_country_states($states) {
## Replace Here 'FR' with your country code (and also the keys in the array)
$states['FR'] = array(
'FR01' => __('State 1', 'woocommerce'),
'FR02' => __('State 2', 'woocommerce'),
'FR03' => __('State 3', 'woocommerce'),
'FR04' => __('State N', 'woocommerce'), // And so on
);
return $states;
}
代码放在您的活动子主题(或主题)的function.php文件或也以任何插件文件。
这是为了避免你的问题的唯一途径
你会得到这样的:如果我们用`select`比我们有很多
我认为这个过滤器也改变了账单和送货地址状态,而我想要自定义状态字段。 –
@ShravanShrama这个过滤器不会改变任何国家的现有国家,但增加国家没有...为什么你添加第二个国家领域以外的帐单和送货地址字段......这很奇怪。你应该解释那个“为什么”。 – LoicTheAztec
其实我们有一个额外的服务地址,例如结算和运输,以及为什么这个地址有一个很长的故事,不能在这里解释:'( –
复杂性来填补选项。想法? –
你可以显示woocommerce的状态选项列表。 –
我们可以通过国家代码得到州名单,我们用什么国家代码来获得州名单? –