Cum adaug un câmp în profilul utilizatorilor? De exemplu, țară, vârstă etc
Nu mă pricep foarte bine la computere/coduri etc. Folosesc un plugin care creează un formular de înregistrare și în acel formular am adăugat țara, grupa de vârstă, genul și așa mai departe. Am selectat opțiunea care va adăuga persoana înregistrată în sistemul de utilizatori WordPress. Dar când testez, doar numele de utilizator și emailul apar în secțiunea Utilizatori din backend. Există vreo modalitate ca și celelalte câmpuri să apară în secțiunea utilizatorilor?
Am nevoie ca acestea să fie vizibile pentru utilizări statistice.

Trebuie să folosești hook-urile show_user_profile
, edit_user_profile
, personal_options_update
și edit_user_profile_update
.
Poți folosi următorul cod pentru a adăuga câmpuri suplimentare în secțiunea Utilizator
Cod pentru adăugarea de câmpuri suplimentare în secțiunea Editare Utilizator:
add_action( 'show_user_profile', 'extra_user_profile_fields' );
add_action( 'edit_user_profile', 'extra_user_profile_fields' );
function extra_user_profile_fields( $user ) { ?>
<h3><?php _e("Informații suplimentare de profil", "blank"); ?></h3>
<table class="form-table">
<tr>
<th><label for="address"><?php _e("Adresă"); ?></label></th>
<td>
<input type="text" name="address" id="address" value="<?php echo esc_attr( get_the_author_meta( 'address', $user->ID ) ); ?>" class="regular-text" /><br />
<span class="description"><?php _e("Vă rugăm să introduceți adresa."); ?></span>
</td>
</tr>
<tr>
<th><label for="city"><?php _e("Oraș"); ?></label></th>
<td>
<input type="text" name="city" id="city" value="<?php echo esc_attr( get_the_author_meta( 'city', $user->ID ) ); ?>" class="regular-text" /><br />
<span class="description"><?php _e("Vă rugăm să introduceți orașul."); ?></span>
</td>
</tr>
<tr>
<th><label for="postalcode"><?php _e("Cod poștal"); ?></label></th>
<td>
<input type="text" name="postalcode" id="postalcode" value="<?php echo esc_attr( get_the_author_meta( 'postalcode', $user->ID ) ); ?>" class="regular-text" /><br />
<span class="description"><?php _e("Vă rugăm să introduceți codul poștal."); ?></span>
</td>
</tr>
</table>
<?php }
Cod pentru salvarea detaliilor câmpurilor suplimentare în baza de date:
add_action( 'personal_options_update', 'save_extra_user_profile_fields' );
add_action( 'edit_user_profile_update', 'save_extra_user_profile_fields' );
function save_extra_user_profile_fields( $user_id ) {
if ( empty( $_POST['_wpnonce'] ) || ! wp_verify_nonce( $_POST['_wpnonce'], 'update-user_' . $user_id ) ) {
return;
}
if ( !current_user_can( 'edit_user', $user_id ) ) {
return false;
}
update_user_meta( $user_id, 'address', $_POST['address'] );
update_user_meta( $user_id, 'city', $_POST['city'] );
update_user_meta( $user_id, 'postalcode', $_POST['postalcode'] );
}
Există și mai multe articole pe blog care ar putea fi utile:

Aceasta nu stochează date din câmpurile mele suplimentare în baza de date. Sugestii, vă rog? Mulțumesc.

@b_dubb, Poți să împărtășești codul tău? Așa că îl voi verifica și îți voi spune.

Ar trebui să adaugi verificarea nonce pentru a evita vulnerabilitățile de securitate. https://developer.wordpress.org/themes/theme-security/using-nonces/

@KittMedia Nonce-ul este deja verificat de check_admin_referer care este apelat din user-edit.php înainte de aceste hook-uri.

Plugin-ul Advanced Custom Fields Pro vă va permite să adăugați câmpuri în profilurile utilizatorilor fără să scrieți cod.

Da - cu siguranță este posibil să codezi asta în PHP fără ACF dacă preferi. Experiența mea este că necesită peste 100 de linii de cod și trebuie să te ocupi de verificarea nonce, scrierea HTML-ului formularului, etc. Ar putea dura câteva ore de codare față de 5-10 minute de configurare în ACF. Probabil depinde dacă deja folosești ACF Pro într-un proiect.

De asemenea, poți adăuga cu ușurință câmpuri suplimentare în secțiunea existentă "Informații de contact" din ecranul de editare al profilului utilizatorului, fără a fi necesară configurarea altor hook-uri pentru actualizarea câmpurilor meta.
function custom_user_profile_contact_fields( $methods ) {
$methods['phone'] = 'Număr de telefon';
$methods['location'] = 'Locație';
return $methods;
}
add_action( 'user_contactmethods', 'custom_user_profile_contact_fields' );
