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.