Cipta Medan Hubungan Pengguna WordPress Anda Sendiri
Hari ini saya mencipta pemalam baharu untuk anda. Pemalam yang berurusan dengan kaedah hubungan pengguna. Pada asasnya apabila anda mengedit pengguna dalam pentadbiran, terdapat blok "maklumat hubungan". Baiklah, saya ingin menunjukkan kepada anda cara menambah medan anda sendiri di sana, dan untuk pergi lebih jauh, cara untuk menunjukkan (atau tidak) medan baharu ini pada halaman pendaftaran.
Berikut ialah pratonton perkara yang akan kami buat:
Medan pengguna baharu pada halaman edit
Medan tersuai pada halaman pendaftaran
Dan untuk berbuat demikian, seperti biasa, kami akan mencipta pemalam yang bagus dan ringkas!
Langkah 1: Cipta Plugin
Buat folder baharu dalam wp-content/plugins dan panggilnya "custom-user-contact-methods". Di dalam folder yang baru dibuat ini, cipta fail yang dipanggil "rc-custom-user-contact-methods.php", dan bukanya dalam perisian editor kegemaran anda.
Letakkan kandungan ini dalam fail kosong anda. Kod ini hanya mendaftarkan pemalam:
<?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 Medan Tersuai Anda
Seterusnya, kami perlu mencipta pembolehubah yang akan mengandungi medan tersuai kami, yang akan digunakan dalam halaman edisi pengguna, dan juga pada halaman lalai pendaftaran. Mari kita simpan medan ini ke dalam pembolehubah yang dipanggil $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 medan dalam tatasusunan yang mempunyai 3 parameter, yang pertama ialah ID medan, yang kedua ialah label medan dan yang terakhir ialah maklumat boolean yang mentakrifkan sama ada medan ditunjukkan pada halaman pendaftaran atau tidak. . Anda boleh menambah seberapa banyak parameter yang anda mahu, contohnya pemegang tempat atau maklumat yang diperlukan.
Langkah 3: Cangkuk Penapis Yang Betul
Kini kita perlu menyambungkan fungsi ke penapis yang betul. Dalam kes khusus kami, penapis ialah "user_contactmethods", dan nama fungsi yang akan kami buat ialah "rc_add_user_contactmethods".
// Use the user_contactmethods to add new fields
add_filter( 'user_contactmethods', 'rc_add_user_contactmethods' );
Langkah 4: Cipta Medan Tersuai Kami
Kini kita perlu mencipta fungsi "rc_add_user_contactmethods". Ialah yang akan menambahkan medan tersuai kami pada halaman edit pengguna. Berita baiknya, ialah kami menyimpan medan kami dalam tatasusunan, ini bermakna fungsi berikut akan menjadi dinamik sepenuhnya, dan agak mudah untuk menambah medan baharu hanya dengan mengubah suai pembolehubah $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 pemalam, anda seharusnya melihat medan tersuai anda dalam halaman edit pengguna. Memandangkan kami menggunakan cangkuk yang betul, kami tidak perlu membuat data medan "simpan". Jadi, pemalam berfungsi hebat buat masa ini. Tetapi saya ingin pergi sedikit lebih jauh dan menambah pilihan untuk memaparkan medan tersebut pada halaman pendaftaran. Pastikan anda menyemak di bawah tetapan kotak pilihan "Sesiapa sahaja boleh mendaftar", jika tidak, anda tidak akan dapat melihat pautan "Daftar".
Langkah 5: Cangkuk Halaman Pendaftaran
Untuk menambah medan kami pada halaman pendaftaran, kami perlu mengakses sekurang-kurangnya dua cangkuk, dan mencipta dua fungsi. Satu untuk memaparkan medan, dan yang kedua untuk menyimpan data medan ke dalam pangkalan data.
Mari sambung fungsi kami:
// 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: Paparkan Halaman Pendaftaran Medan Tersuai
Dalam kod di atas kami mengisytiharkan dua fungsi. Yang pertama adalah untuk memaparkan medan pada halaman pendaftaran. Dalam bahagian ini kita perlu menjaga parameter ketiga setiap tatasusunan dalam $extra_fields. Parameter boolean ini memberitahu sama ada medan perlu ditunjukkan atau tidak. Benar: medan ditunjukkan, salah: medan tidak ditunjukkan.
/**
* 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 Medan Semasa Proses Pendaftaran
Sekarang bahawa medan kami ditunjukkan pada halaman pendaftaran, kami perlu, untuk menyimpan nilainya ke dalam pangkalan data. Ini adalah tujuan fungsi "rc_user_register_save_extra_fields". Untuk berbuat demikian, 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
Nah, kami melihat asas cara menambah medan baharu pada kaedah hubungan pengguna, tetapi itu sahaja. Anda boleh contohnya mengalih keluar medan sedia ada seperti "Yahoo IM", "AIM" dan "Jabber" melakukan unset() mudah. Tetapi anda juga boleh menambah beberapa fungsi untuk membersihkan medan tersuai anda untuk menyemak contohnya jika nombor telefon mempunyai format yang sesuai, jika medan diperlukan atau tidak dsb dsb... Jangan teragak-agak untuk meminta ciri khusus dalam ulasan!
Oh, dan perkara terakhir... jika anda ingin memaparkan data mana-mana medan anda, hanya 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 );