Dodawanie własnych pól do formularza rejestracji użytkownika w WordPress

Formularz rejestracji w WordPressie domyślnie zawiera tylko pola: nazwa użytkownika i e-mail. Jednak w wielu projektach potrzebne są dodatkowe informacje – np. numer telefonu, firma, czy zgoda marketingowa. Na szczęście WordPress umożliwia rozszerzenie formularza rejestracji o własne pola bez użycia ciężkich wtyczek.


Dodanie własnego pola do formularza

Do tego celu można użyć akcji register_form. Przykład:

function dodatkowe_pole_rejestracji() {
    ?>
    <p>
        <label for="phone">Numer telefonu<br/>
            <input type="text" name="phone" id="phone" class="input" value="<?php echo esc_attr( wp_unslash( $_POST['phone'] ?? '' ) ); ?>" size="25" /></label>
    </p>
    <?php
}
add_action('register_form', 'dodatkowe_pole_rejestracji');

Po dodaniu tego kodu w pliku functions.php pojawi się dodatkowe pole w formularzu rejestracji.


Walidacja pola

Możemy sprawdzić poprawność danych podczas rejestracji:

function walidacja_pola_rejestracji($errors, $sanitized_user_login, $user_email) {
    if (empty($_POST['phone'])) {
        $errors->add('phone_error', '<strong>Błąd</strong>: Podaj numer telefonu.');
    }
    return $errors;
}
add_filter('registration_errors', 'walidacja_pola_rejestracji', 10, 3);

Zapisywanie danych w profilu użytkownika

Dane trzeba jeszcze zapisać w bazie:

function zapis_pola_rejestracji($user_id) {
    if (!empty($_POST['phone'])) {
        update_user_meta($user_id, 'phone', sanitize_text_field($_POST['phone']));
    }
}
add_action('user_register', 'zapis_pola_rejestracji');

Wyświetlanie pola w profilu użytkownika

Aby administrator mógł zobaczyć numer telefonu w edycji profilu, dodajemy:

function pole_w_profilu($user) { ?>
    <h3>Dodatkowe informacje</h3>
    <table class="form-table">
        <tr>
            <th><label for="phone">Numer telefonu</label></th>
            <td>
                <input type="text" name="phone" id="phone" value="<?php echo esc_attr(get_user_meta($user->ID, 'phone', true)); ?>" class="regular-text" /><br/>
                <span class="description">Podaj numer telefonu użytkownika.</span>
            </td>
        </tr>
    </table>
<?php }
add_action('show_user_profile', 'pole_w_profilu');
add_action('edit_user_profile', 'pole_w_profilu');

Podsumowanie

Dodanie własnych pól do formularza rejestracji w WordPress daje ogromne możliwości personalizacji – możesz zbierać dodatkowe dane o użytkownikach już podczas rejestracji. To rozwiązanie jest lekkie, elastyczne i nie wymaga instalowania dodatkowych wtyczek.

KROK 1 Z 4

Z CZYM POTRZEBUJESZ POMOCY?