woocommerce save checkout custom special field to user meta

I’m adding custom special fields to the checkout page through

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++;
        }
}

and it works perfectly. My goal is now to save this information to the user meta once he concludes the order whether is already registered or not.

Read More

To achieve this I’m using

  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]));
            }
        }
    }
}

The issue is that the $_POST variable does not contain the custom fields that I inserted inside the checkout form.

Why is this happening? How can I achieve this?

Related posts

1 comment

  1. I feel like the most stupid man in the world; disabled input are not posted.

    Hope this will save time to someone

Comments are closed.