Cum să adaugi câmpuri personalizate în pagina de profil utilizator?

14 nov. 2010, 06:34:13
Vizualizări: 34.4K
Voturi: 30

Pagina de profil utilizator are următoarele câmpuri:

Nume utilizator
Prenume
Nume
Pseudonim
Nume afișat
Informații de contact
E-mail
Website
AIM
Yahoo IM
Jabber / Google Talk

Cum pot fi adăugate mai multe câmpuri în această secțiune. Câmpuri precum număr de telefon, adresă sau orice altceva.

0
Toate răspunsurile la întrebare 2
3
39

Trebuie să folosești hook-urile 'show_user_profile', 'edit_user_profile', 'personal_options_update' și 'edit_user_profile_update'.

Iată un cod pentru a adăuga un număr de telefon:

add_action( 'show_user_profile', 'yoursite_extra_user_profile_fields' );
add_action( 'edit_user_profile', 'yoursite_extra_user_profile_fields' );
function yoursite_extra_user_profile_fields( $user ) {
?>
  <h3><?php _e("Informații suplimentare de profil", "blank"); ?></h3>
  <table class="form-table">
    <tr>
      <th><label for="phone"><?php _e("Telefon"); ?></label></th>
      <td>
        <input type="text" name="phone" id="phone" class="regular-text" 
            value="<?php echo esc_attr( get_the_author_meta( 'phone', $user->ID ) ); ?>" /><br />
        <span class="description"><?php _e("Te rugăm să introduci numărul tău de telefon."); ?></span>
    </td>
    </tr>
  </table>
<?php
}

add_action( 'personal_options_update', 'yoursite_save_extra_user_profile_fields' );
add_action( 'edit_user_profile_update', 'yoursite_save_extra_user_profile_fields' );
function yoursite_save_extra_user_profile_fields( $user_id ) {
  $saved = false;
  if ( current_user_can( 'edit_user', $user_id ) ) {
    update_user_meta( $user_id, 'phone', $_POST['phone'] );
    $saved = true;
  }
  return true;
}

Acest cod va adăuga un câmp în ecranul utilizatorului care va arăta cam așa:

Câmp de telefon adăugat în profilul utilizatorului WordPress

Există și câteva articole pe bloguri care ar putea fi utile:

Sau, dacă preferi să nu scrii cod propriu, există plugin-uri care adaugă aceste funcționalități, cum ar fi următoarele (deși sunt sigur că există și altele):

14 nov. 2010 06:52:53
Comentarii

Mike, am avut o grămadă de probleme în a salva modificările mele. Am reușit în final când am făcut o înlocuire completă "find and replace". Pentru referința mea viitoare, câmpurile "name" și "title" trebuie să fie exact la fel?

Jonathan Wold Jonathan Wold
28 mar. 2011 19:43:47

@Jonathan Wold - "câmpurile "name" și "title" trebuie să fie exact la fel?" Nu mi-ai dat suficiente detalii pentru a ști cum să răspund. Și poate ar fi bine să creezi o întrebare complet nouă.

MikeSchinkel MikeSchinkel
29 mar. 2011 10:26:02

@MikeSchinkel Cimy User Extra Fields nu este, în opinia mea, o recomandare bună. Suportul nu prea există iar codul este... hm.

kaiser kaiser
26 aug. 2011 01:07:47
0
// elimină câmpurile aim, jabber, yim
function hide_profile_fields( $contactmethods ) {
    unset($contactmethods['aim']);
    unset($contactmethods['jabber']);
    unset($contactmethods['yim']);
    return $contactmethods;
}

// adaugă alte câmpuri
function my_new_contactmethods( $contactmethods ) {
    //adaugă Ziua de naștere
    $contactmethods['birthday'] = 'Ziua de naștere';
    //adaugă Adresă
    $contactmethods['address'] = 'Adresă';
    //adaugă Oraș
    $contactmethods['city'] = 'Oraș';
    //adaugă Județ
    $contactmethods['state'] = 'Județ';
    //adaugă Cod poștal
    $contactmethods['postcode'] = 'Cod poștal';
    //adaugă Telefon
    $contactmethods['phone'] = 'Telefon';
    //adaugă Mobil
    $contactmethods['mphone'] = 'Mobil';

    return $contactmethods;
}
add_filter('user_contactmethods','my_new_contactmethods',10,1);
add_filter('user_contactmethods','hide_profile_fields',10,1);

Sper că te ajută.

Sursa: WPBeginner

2 dec. 2010 00:06:23