Jadikan Widget Dasbor Dapat Dikonfigurasi


Beberapa minggu yang lalu kami melihat cara menambahkan metabox dasbor RSS khusus ke administrasi. Hari ini, saya ingin menunjukkan kepada Anda cara menambahkan opsi yang dapat dikonfigurasi ke metabox dasbor ini.

Inilah hasil dari apa yang akan kita lakukan:

Fungsi terpenting dalam tutorial ini adalah wp_add_dashboard_widget(). Ini adalah fungsi WordPress yang mendaftarkan widget dasbor. Kita telah melihat bahwa mendaftarkan widget dan fungsi yang menampilkan widget di dasbor cukup mudah, namun kami belum membahas parameter terakhir dari fungsi ini. Pada dasarnya, wp_add_dashboard_widget() memiliki 4 parameter:

$widget_id
(integer) (wajib) slug pengidentifikasi untuk widget Anda. Ini akan digunakan sebagai kelas css dan kuncinya dalam array widget.
Bawaan: Tidak ada

$widget_name
(string) (wajib) ini adalah nama widget Anda yang akan ditampilkan di judulnya.
Bawaan: Tidak ada

$panggilan balik
(string) (wajib) Nama fungsi yang Anda buat yang akan menampilkan konten sebenarnya dari widget Anda.
Bawaan: Tidak ada

$control_callback
(string) (opsional) Nama fungsi yang Anda buat yang akan menangani penyerahan formulir opsi widget (konfigurasi), dan juga akan menampilkan elemen formulir.
Bawaan: Tidak ada

Seperti yang Anda lihat, parameter keempat adalah parameter yang bertanggung jawab atas opsi "konfigurasi". Saat mengisi parameter ini Anda memberitahu WordPress untuk memuat fungsi tertentu untuk mengkonfigurasi widget. Secara otomatis membuat tautan "konfigurasi" di judul metabox ketika Anda menempatkan kursor di atasnya.

Langkah 1: Daftarkan Fungsi Konfigurasi Opsi

Jadi, langkah pertama adalah memodifikasi panggilan wp_add_dashboard_widget() dan menambahkan nama fungsi opsi konfigurasi di parameter terakhir. Fungsi rc_mdm_register_widgets() Anda seharusnya menjadi:

/**
 * Register all dashboard metaboxes
 *
 * @access      public
 * @since       1.0 
 * @return      void
*/

function rc_mdm_register_widgets() {
	global $wp_meta_boxes;
	
	wp_add_dashboard_widget('widget_custom_rss', __('My RSS Feeds', 'rc_mdm'), 'rc_mdm_create_my_rss_box', 'rc_mdm_configure_my_rss_box');
}
add_action('wp_dashboard_setup', 'rc_mdm_register_widgets');

Kami cukup menambahkan “rc_mdm_configure_my_rss_box” ke parameter terakhir.

Langkah 2: Buat Fungsi Konfigurasi Opsi

Langkah ini tidak rumit. Yang harus kita lakukan adalah membuat kolom formulir yang disimpan ke dalam array. Untuk melakukannya, kita akan menggunakan update_option(). Kita tidak perlu membuat formulir lengkap karena WordPress yang membuatnya untuk kita. Kita hanya perlu mendaftarkan fieldnya. Hal yang sangat bagus untuk disebutkan adalah bahwa WordPress secara otomatis menambahkan nonce ke formulir yang membuat formulir aman dan menghindari potensi masalah keamanan. Berikut adalah kode fungsi rc_mdm_configure_my_rss_box() kita ( ingat? Ini adalah parameter ke-4 yang kita tentukan di wp_add_dashboard_widget() ).

/**
 * Creates the RSS metabox configuration settings
 *
 * @access      public
 * @since       1.0 
 * @return      void
*/
function rc_mdm_configure_my_rss_box( $widget_id ) {

	// Get widget options
	if ( !$rc_mdm_widget_options = get_option( 'rc_mdm_dashboard_widget_options' ) )
		$rc_mdm_widget_options = array();

	// Update widget options
	if ( 'POST' == $_SERVER['REQUEST_METHOD'] && isset($_POST['rc_mdm_widget_post']) ) {
		update_option( 'rc_mdm_dashboard_widget_options', $_POST['rc_mdm_widget'] );
	}
	
	// Retrieve feed URLs
	$url_1 = $rc_mdm_widget_options['url_1'];
	$url_2 = $rc_mdm_widget_options['url_2'];
	$url_3 = $rc_mdm_widget_options['url_3']; ?>

	<p>
		<label for="rc_mdm_url_1-"><?php _e('Enter the RSS feed URL #1:', 'rc_mdm'); ?></label>
		<input class="widefat" id="rc_mdm_url_1" name="rc_mdm_widget[url_1]" type="text" value="<?php if( isset($url_1) ) echo $url_1; ?>" />
	</p>
	
	<p>
		<label for="rc_mdm_url_2"><?php _e('Enter the RSS feed URL #2:', 'rc_mdm'); ?></label>
		<input class="widefat" id="rc_mdm_url_2" name="rc_mdm_widget[url_2]" type="text" value="<?php if( isset($url_2) ) echo $url_2; ?>" />
	</p>
	
	<p>
		<label for="rc_mdm_url_3"><?php _e('Enter the RSS feed URL #3:', 'rc_mdm'); ?></label>
		<input class="widefat" id="rc_mdm_url_3" name="rc_mdm_widget[url_3]" type="text" value="<?php if( isset($url_3) ) echo $url_3; ?>" />
	</p>
	
	<input name="rc_mdm_widget_post" type="hidden" value="1" />
	<?php
} ?>

Anda sekarang dapat memuat ulang dasbor Anda, dan jika Anda menempatkan kursor pada metabox widget, Anda akan melihat tautan "konfigurasi" muncul di kanan atas. Ketika Anda mengkliknya, formulir opsi dimuat. Dan saat mengisi kolom dan menyimpan URL feed disimpan di tabel SQL opsi kami.

Langkah 3: Mengambil Opsi

Langkah terakhir adalah mengganti URL feed yang telah kita kode keras di bagian pertama tutorial. Dari baris 14 hingga 18 di rc_mdm_create_my_rss_box() kami menambahkan dua URL. Cukup ganti dengan:

// My feeds list
if ( !$my_feeds = get_option( 'rc_mdm_dashboard_widget_options' ) )
    $my_feeds = array();

Dan itu saja! Kami berhasil menambahkan opsi khusus ke widget dasbor dengan mudah.