Bagaimana cara menambahkan bidang formulir kustom ke halaman profil pengguna?

29

Halaman profil pengguna memiliki bidang-bidang berikut:

Nama
Nama Pertama
Nama terakhir
nama panggilan Tampilan Info kontak Kirimkan e-mail Situs AIM Yahoo IM
Jabber / Google Talk

Bagaimana bisa lebih banyak bidang ditambahkan ke bagian ini. Bidang seperti nomor telepon, alamat, atau apa pun.

rsman
sumber

Jawaban:

37

Anda perlu menggunakan 'show_user_profile', 'edit_user_profile', 'personal_options_update'dan 'edit_user_profile_update'kait.

Berikut beberapa kode untuk menambahkan nomor Telepon :

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("Extra profile information", "blank"); ?></h3>
  <table class="form-table">
    <tr>
      <th><label for="phone"><?php _e("Phone"); ?></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("Please enter your phone."); ?></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;
}

Kode itu akan menambahkan bidang ke layar pengguna Anda yang terlihat seperti ini:

Ada juga beberapa posting blog yang tersedia tentang topik yang mungkin bisa membantu:

Atau jika Anda memilih untuk tidak roll-sendiri-Anda ada plugin yang menambahkan fitur mengatakan seperti berikut (walaupun saya yakin ada yang lain):

MikeSchinkel
sumber
Mike, saya mengalami banyak masalah untuk menyelamatkan modifikasi saya. Saya akhirnya berhasil ketika saya benar-benar "mencari dan mengganti". Untuk referensi saya di masa mendatang, apakah bidang "nama" dan "judul" harus sama persis?
Jonathan Wold
@Jonathan Wold - "apakah bidang" nama "dan" judul "harus sama persis? Anda tidak memberi saya konteks yang cukup bagi saya untuk mengetahui cara mengajukan pertanyaan. Dan Anda mungkin ingin membuat pertanyaan baru yang lengkap .
MikeSchinkel
1
@MikeSchinkel Cimy User Extra Fields juga tidak direkomendasikan. Dukungan tidak benar-benar ada dan kodenya ... hm.
kaiser
8
// remove aim, jabber, yim 
function hide_profile_fields( $contactmethods ) {
    unset($contactmethods['aim']);
    unset($contactmethods['jabber']);
    unset($contactmethods['yim']);
    return $contactmethods;
}

// add anything else
function my_new_contactmethods( $contactmethods ) {
    //add Birthday
    $contactmethods['birthday'] = 'Birthday';
    //add Address
    $contactmethods['address'] = 'Address';
    //add City
    $contactmethods['city'] = 'City';
    //add State
    $contactmethods['state'] = 'State';
    //add Postcode
    $contactmethods['postcode'] = 'Postcode';
    //add Phone
    $contactmethods['phone'] = 'Phone';
    //add Mobilphone
    $contactmethods['mphone'] = 'Mobilphone';

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

Semoga ini membantu.

Sumber: WPBeginner

Jannis
sumber