WooCommerce状态自定义结帐字段不起作用

时间:2017-06-21 09:56:35

标签: php wordpress woocommerce checkout custom-fields

我使用以下代码将自定义状态字段添加到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,如果我刷新页面就可以正常工作。

2 个答案:

答案 0 :(得分:0)

如果您想在结帐表单中添加额外字段,则需要使用挂钩woocommerce_checkout_fields,您还需要将类型定义为&#34;选择&#34;。我使用此代码添加额外的字段和自定义结帐页面。

https://docs.woocommerce.com/document/tutorial-customising-checkout-fields-using-actions-and-filters/#section-3

答案 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文件中,或者放在任何插件文件中。

  

这是避免问题的唯一方法

你会得到这个:

enter image description here