Buat Bidang Kontak Pengguna WordPress Anda Sendiri
Hari ini saya membuat plugin baru untuk Anda. Sebuah plugin yang berhubungan dengan metode kontak pengguna. Pada dasarnya ketika Anda mengedit pengguna di administrasi, ada blok “informasi kontak”. Baiklah, saya ingin menunjukkan cara menambahkan kolom Anda sendiri di sana, dan melangkah lebih jauh, cara menampilkan (atau tidak) kolom baru ini di halaman pendaftaran.
Berikut ini pratinjau dari apa yang akan kami buat:
Dan untuk melakukannya, seperti biasa, kita akan membuat plugin yang bagus dan sederhana!
Langkah 1: Buat Plugin
Buat folder baru di wp-content/plugins dan beri nama "metode kontak-pengguna-kustom". Di dalam folder yang baru dibuat ini, buat file bernama “rc-custom-user-contact-methods.php”, dan buka di perangkat lunak editor favorit Anda.
Tempatkan konten ini di file kosong Anda. Kode ini hanya mendaftarkan plugin:
<?php
/*
Plugin Name: Custom User Contact Methods
Plugin URL: http://remicorson.com/
Description: Add custom fields to users "contact" section
Version: 1.0
Author: Remi Corson
Author URI: http://remicorson.com
Contributors: corsonr
*/
Langkah 2: Tentukan Bidang Kustom Anda
Selanjutnya, kita perlu membuat variabel yang akan berisi kolom khusus kita, yang akan digunakan di halaman edisi pengguna, dan juga di halaman default pendaftaran. Mari simpan bidang ini ke dalam variabel bernama $extra_fields.
$extra_fields = array(
array( 'facebook', __( 'Facebook Username', 'rc_cucm' ), true ),
array( 'twitter', __( 'Twitter Username', 'rc_cucm' ), true ),
array( 'googleplus', __( 'Google+ ID', 'rc_cucm' ), true ),
array( 'linkedin', __( 'Linked In ID', 'rc_cucm' ), false ),
array( 'pinterest', __( 'Pinterest Username', 'rc_cucm' ), false ),
array( 'wordpress', __( 'WordPress.org Username', 'rc_cucm' ), false ),
array( 'phone', __( 'Phone Number', 'rc_cucm' ), true )
);
Kami menyimpan setiap bidang dalam array yang memiliki 3 parameter, yang pertama adalah ID bidang, yang kedua adalah label bidang, dan yang terakhir adalah informasi boolean yang menentukan apakah bidang tersebut ditampilkan pada halaman pendaftaran atau tidak . Anda dapat menambahkan parameter sebanyak yang Anda inginkan, misalnya placeholder atau informasi yang diperlukan.
Langkah 3: Kaitkan Filter Kanan
Kita sekarang perlu menghubungkan suatu fungsi ke filter yang tepat. Dalam kasus khusus kami, filternya adalah “user_contactmethods”, dan nama fungsi yang akan kami buat adalah “rc_add_user_contactmethods”.
// Use the user_contactmethods to add new fields
add_filter( 'user_contactmethods', 'rc_add_user_contactmethods' );
Langkah 4: Buat Bidang Kustom Kami
Kita sekarang perlu membuat fungsi “rc_add_user_contactmethods”. Ini adalah salah satu yang akan menambahkan bidang khusus kami ke halaman edit pengguna. Kabar baiknya, kita menyimpan field kita di dalam array, artinya fungsi berikut akan sepenuhnya dinamis, dan akan sangat mudah untuk menambahkan field baru hanya dengan memodifikasi variabel $extra_fields.
/**
* Add custom users custom contact methods
*
* @access public
* @since 1.0
* @return void
*/
function rc_add_user_contactmethods( $user_contactmethods ) {
// Get fields
global $extra_fields;
// Display each fields
foreach( $extra_fields as $field ) {
if ( !isset( $contactmethods[ $field[0] ] ) )
$user_contactmethods[ $field[0] ] = $field[1];
}
// Returns the contact methods
return $user_contactmethods;
}
Pada langkah ini, jika Anda menyimpan dan mengaktifkan plugin, Anda akan melihat bidang khusus Anda di halaman edit pengguna. Karena kita menggunakan hook yang benar, kita tidak perlu membuat data kolom "simpan". Jadi, plugin tersebut berfungsi dengan baik untuk saat ini. Namun saya ingin melangkah lebih jauh dan menambahkan opsi untuk menampilkan bidang tersebut di halaman pendaftaran. Pastikan Anda mencentang kotak “Siapa pun dapat mendaftar” di bawah pengaturan, jika tidak, Anda tidak akan dapat melihat tautan “Daftar”.
Langkah 5: Kait Halaman Pendaftaran
Untuk menambahkan field pada halaman pendaftaran, kita perlu mengakses setidaknya dua hook, dan membuat dua fungsi. Satu untuk menampilkan field, dan yang kedua untuk menyimpan data field ke dalam database.
Mari kita kaitkan fungsi kita:
// Add our fields to the registration process
add_action( 'register_form', 'rc_register_form_display_extra_fields' );
add_action( 'user_register', 'rc_user_register_save_extra_fields', 100 );
Langkah 6: Tampilkan Halaman Pendaftaran Bidang Kustom
Pada kode di atas kita mendeklarasikan dua fungsi. Yang pertama adalah menampilkan kolom pada halaman pendaftaran. Pada bagian ini kita perlu memperhatikan parameter ketiga dari setiap array di $extra_fields. Parameter boolean ini memberitahukan apakah kolom harus ditampilkan atau tidak. Benar: bidang ditampilkan, salah: bidang tidak ditampilkan.
/**
* Show custom fields on registration page
*
* Show custom fields on registration if field third parameter is set to true
*
* @access public
* @since 1.0
* @return void
*/
function rc_register_form_display_extra_fields() {
// Get fields
global $extra_fields;
// Display each field if 3th parameter set to "true"
foreach( $extra_fields as $field ) {
if ( $field[2] == true ) {
$field_value = isset( $_POST[ $field[0] ] ) ? $_POST[ $field[0] ] : '';
echo '<p>
<label for="'. esc_attr( $field[0] ) .'">'. esc_html( $field[1] ) .'<br />
<input type="text" name="'. esc_attr( $field[0] ) .'" id="'. esc_attr( $field[0] ) .'" class="input" value="'. esc_attr( $field_value ) .'" size="20" /></label>
</label>
</p>';
} // endif
} // end foreach
}
Langkah 7: Simpan Nilai Bidang Setelah Proses Pendaftaran
Sekarang bidang kita ditampilkan pada halaman pendaftaran, kita perlu menyimpan nilainya ke dalam database. Ini adalah tujuan dari fungsi “rc_user_register_save_extra_fields”. Untuk melakukannya, kita perlu menggunakan fungsi “wp_update_user()”.
/**
* Save field values
*
* @access public
* @since 1.0
* @return void
*/
function rc_user_register_save_extra_fields( $user_id, $password = '', $meta = array() ) {
// Get fields
global $extra_fields;
$userdata = array();
$userdata['ID'] = $user_id;
// Save each field
foreach( $extra_fields as $field ) {
if( $field[2] == true ) {
$userdata[ $field[0] ] = $_POST[ $field[0] ];
} // endif
} // end foreach
$new_user_id = wp_update_user( $userdata );
}
Kesimpulan
Ya, kita telah melihat dasar-dasar cara menambahkan bidang baru ke metode kontak pengguna, tapi itu saja. Misalnya, Anda dapat menghapus kolom yang ada seperti "Yahoo IM", "AIM" dan "Jabber" dengan melakukan unset() sederhana. Namun Anda juga dapat menambahkan beberapa fungsi untuk membersihkan bidang khusus Anda untuk memeriksa misalnya apakah nomor telepon memiliki format yang sesuai, apakah suatu bidang wajib diisi atau tidak, dll.… Jangan ragu untuk menanyakan fitur spesifik di komentar!
Oh, dan yang terakhir… jika Anda ingin menampilkan data bidang apa pun, cukup gunakan ini:
// Param 1 is user ID
// Param 2 is field ID
// Param 3 is there to get a var or an array
echo get_user_meta( 1, 'twitter', true );