woocommerce将结帐自定义特殊字段保存到用户元

时间:2016-03-03 10:32:59

标签: wordpress woocommerce checkout

我正在通过

向结帐页面添加自定义特殊字段
add_filter('woocommerce_checkout_fields', custom_woocommerce_checkout_fields');


function custom_woocommerce_checkout_fields(){
  ... //other code
  $fields = array("field_1", ..., "field_n"); //pseudocode
  foreach ($fields as $key => $field) {
            $class = $i % 2 == 0 ? array('form-row-first') : array('form-row-last');
            woocommerce_form_field($key, array(
                'type' => 'text',
                'class' => $class,
                'label' => $labels[$i],
                'placeholder' => __('placeholder cm', 'woothemes'),
                'validate' => false,
                'required' => true,
                'custom_attributes' => array('disabled' => true)
            ), $field);
            $i++;
        }
}

它完美无缺。我的目标是,一旦他结束订单是否已经注册,就将这些信息保存到用户元。

要实现这一点,我正在使用

  add_action('woocommerce_checkout_update_user_meta','checkout_update_user_fields');

function checkout_update_user_fields($user_id){
   if($user_id){
        foreach ($fields as $field) { //the fields are the same as before
            if (!empty($_POST[$field])) {
                update_user_meta($user_id, $field, sanitize_text_field($_POST[$field]));
            }
        }
    }
}

问题是$_POST变量不包含我在结帐表单中插入的自定义字段。

为什么会这样?我怎样才能做到这一点?

1 个答案:

答案 0 :(得分:0)

我觉得自己是世界上最愚蠢的人; <{1}} disabled未发布。

希望这会节省时间给某人