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:

Bidang pengguna baru di halaman edit

Bidang khusus pada halaman pendaftaran

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 );