Registration form fields reset after submit (wordpress & woocommerce)
<p>I've got woocommerce registration form with two sections:<br> 
 - One for private person,<br> 
 - the other for company.<br></p>

<p>In company option there is two additional fields. I can switch between private and company by radio buttons and then I see relevant fields.</p>

<p>Problem: When I fill the form (as private user) and make some mistake, form reload and show where is the error (that is ok). </p>

<p>But unfortunately, after reload, it loads the form with all fields (the ones with additional company fields too). So I need to click 2 times between private and company to restore the right behavior.</p>

<p>How can i fix this? I mean after this error reloading, to display the form as initially.</p>

<p>I don't be sure that this is code responsible for this, but let's try:</p>

<pre><code>add_filter('woocommerce_registration_errors', 'rs_registration_form_validation', 10, 3);
function rs_registration_form_validation($reg_errors, $sanitized_user_login, $user_email)
{
    global $woocommerce;

    $company_fields_required = (!empty($_POST['registration_type']) &amp;&amp; 'company' === $_POST['registration_type']);
    $shipp_to_different_address = (!empty($_POST['register_ship_to_different_address']) &amp;&amp; 1 == $_POST['register_ship_to_different_address']);

    $errors = false;
    $fields = rs_registration_form_fields();
    if ($shipp_to_different_address) {
        $fields += rs_registration_form_fields_address();
    }

    if (!$company_fields_required) {
        unset($fields['billing_company']);
        unset($fields['billing_nip']);
    }

    //Validate required
    foreach ($fields as $field =&gt; $settings) {
        if (false === isset($settings['required']) || true === $settings['required']) {
            if (empty($_POST[$field])) {
                $errors = true;
                wc_add_notice('Pole: &lt;strong&gt;'.$settings['label'].'&lt;/strong&gt; jest wymagane.', 'error');
            }
        }
    }

    if ($errors) {
        return new WP_Error('registration-error', 'Proszę poprawić błędy w formularzu');
    }

    return $reg_errors;
}

add_action('woocommerce_created_customer', 'rs_registration_form_submit');
function rs_registration_form_submit($user_id)
{
    $fields = rs_registration_form_fields();
    $fields += rs_registration_form_fields_address();

    foreach ($fields as $field =&gt; $settings) {
        if (isset($_POST[$field]) &amp;&amp; !empty($_POST[$field])) {
            update_user_meta($user_id, $field, $_POST[$field]);
        }
    }
}

add_filter('register_form', 'rs_registration_form');
function rs_registration_form()
{
    $fields = rs_registration_form_fields();

    include '_rs_registration_form.php';
}

add_filter('register_form_address', 'rs_registration_form_address');
function rs_registration_form_address()
{
    $fields = rs_registration_form_fields_address();

    include '_rs_registration_form.php';
}

add_filter('woocommerce_edit_address_slugs', 'rs_fix_address_slugs');
function rs_fix_address_slugs($slugs)
{
    $slugs['billing'] = 'billing';
    $slugs['shipping'] = 'shipping';

    return $slugs;
}

function rs_rejestracja_url()
{
    return get_permalink(244);
}

function rs_logowanie_url()
{
    return get_permalink(20);
}

function rs_show_checkout_progress_bar($step = '')
{
    include '_checkout_progress_bar.php';
}

function rs_order_form_buttons()
{
    include '_order_form_buttons.php';
}

add_filter('woocommerce_get_checkout_url', 'rs_get_checout_url');
function rs_get_checout_url($url) {
    if (is_user_logged_in()) {
        $url .= '#step1';
    }

    return $url;
}

include 'src/RS_Search.php';
</code></pre>