Bagaimana cara menambahkan bidang pada profil Pengguna? Misalnya, negara, umur, dll

21

Saya tidak terlalu mahir dengan komputer / kode dll. Saya menggunakan plugin yang membuat formulir pendaftaran menjadi sesuatu dan dalam bentuk itu saya menambahkan negara, kelompok umur, jenis kelamin, dan sebagainya. Saya klik opsi yang akan menambahkan registerer ke dalam pengguna wordpress thingy. Tetapi ketika saya mencobanya, hanya nama pengguna dan email yang ditampilkan di bagian Pengguna di backend .. Apakah ada cara untuk bidang lain ditampilkan di bagian pengguna?

Saya perlu mereka tampil untuk penggunaan statistik.

Chloe Aus
sumber
5
Silakan coba pencarian kami. Anda akan menemukan banyak contoh.
fuxia

Jawaban:

58

Anda perlu menggunakan show_user_profile, edit_user_profile,personal_options_update , dan edit_user_profile_updatekait.

Anda dapat menggunakan kode berikut untuk menambahkan bidang tambahan di bagian Pengguna

Kode untuk menambahkan bidang tambahan di Edit Bagian Pengguna:

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("Extra profile information", "blank"); ?></h3>

    <table class="form-table">
    <tr>
        <th><label for="address"><?php _e("Address"); ?></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("Please enter your address."); ?></span>
        </td>
    </tr>
    <tr>
        <th><label for="city"><?php _e("City"); ?></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("Please enter your city."); ?></span>
        </td>
    </tr>
    <tr>
    <th><label for="postalcode"><?php _e("Postal Code"); ?></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("Please enter your postal code."); ?></span>
        </td>
    </tr>
    </table>
<?php }

Kode untuk menyimpan detail bidang ekstra dalam database :

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 ( !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'] );
}

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

Arpita Hunka
sumber
Bravo ini bekerja dengan baik.
AVEbrahimi
1
Ini tidak menyimpan data dari bidang ekstra saya di DB. Saran tolong? Terima kasih.
b_dubb
@ b_dubb, bisakah Anda membagikan kode Anda? Jadi saya akan memeriksa dan memberi tahu Anda.
Arpita Hunka
Saya telah menyelesaikan masalah saya tetapi terima kasih telah menjangkau.
b_dubb
3

Anda sebaiknya menggunakan get_user_meta(bukannya get_the_author_meta):

function extra_user_profile_fields( $user ) {
    $meta = get_user_meta($user->ID, 'meta_key_name', false);
}
T.Todua
sumber
3

The Lanjutan Custom Fields Pro Plugin akan memungkinkan Anda untuk menambahkan kolom untuk profil pengguna tanpa coding.

squarecandy
sumber
3
Hanya versi pro
Saya Orang yang Paling Bodoh
Ada cara gratis untuk melakukan ini dengan PHP.
Johan Pretorius
Yap - pasti memungkinkan untuk kode ini dalam PHP tanpa ACF jika Anda mau. Pengalaman saya adalah bahwa dibutuhkan 100+ baris kode dan Anda perlu khawatir tentang verifikasi nonce, menulis HTML formulir, dll. Dapat membutuhkan beberapa jam pengkodean vs 5-10 menit pengaturan di ACF. Mungkin tergantung pada apakah Anda menggunakan ACF Pro sudah pada proyek.
squarecandy