Bir Kontrol Paneli Widget'ını Yapılandırılabilir Hale Getirin


Birkaç hafta önce yönetime özel bir RSS kontrol paneli meta kutusunun nasıl ekleneceğini gördük. Bugün size bu kontrol paneli meta kutusuna nasıl yapılandırılabilir seçenekler ekleyeceğinizi göstermek istiyorum.

İşte yapacağımız şeyin sonucu:

Bu eğitimdeki en önemli işlev wp_add_dashboard_widget() işlevidir. Bir kontrol paneli widget'ını kaydeden WordPress işlevidir. Widget'ı ve widget'ı kontrol paneline çıkaran işlevi kaydetmenin oldukça kolay olduğunu zaten görmüştük, ancak bu işlevin son parametresini ele almamıştık. Temel olarak wp_add_dashboard_widget()'ın 4 parametresi vardır:

$widget_id
(integer) (gerekli) widget'ınız için tanımlayıcı bir bilgi. Bu, widget dizisindeki css sınıfı ve anahtarı olarak kullanılacaktır.
Varsayılan: Yok

$widget_name
(string) (gerekli) bu, widget'ınızın başlığında görüntüleyeceği addır.
Varsayılan: Yok

$geri arama
(string) (gerekli) Widget'ınızın gerçek içeriğini görüntüleyecek, oluşturduğunuz işlevin adı.
Varsayılan: Yok

$control_callback
(string) (isteğe bağlı) Widget seçenekleri (yapılandırma) formlarının gönderilmesini yönetecek ve ayrıca form öğelerini görüntüleyecek, oluşturduğunuz işlevin adı.
Varsayılan: Yok

Gördüğünüz gibi dördüncü parametre “yapılandırma” seçeneklerinden sorumlu olan parametredir. Bu parametreyi doldururken, WordPress'e widget'ı yapılandırmak için belirli bir işlevi yüklemesini söylersiniz. İmleci meta kutunun üzerine getirdiğinizde otomatik olarak meta kutu başlığında bir "yapılandırma" bağlantısı oluşturur.

Adım 1: Yapılandırma Seçenekleri İşlevini Kaydedin

Dolayısıyla ilk adım, wp_add_dashboard_widget() çağrısını değiştirmek ve son parametreye yapılandırma seçenekleri işlevlerinin adını eklemektir. rc_mdm_register_widgets() işlevleriniz şu şekilde olmalıdır:

/**
 * 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');

Son parametreye basitçe “rc_mdm_configure_my_rss_box” ekledik.

Adım 2: Yapılandırma Seçenekleri İşlevini Oluşturun

Bu adım karmaşık değildir. Tek yapmamız gereken bir dizide saklanan form alanları oluşturmak. Bunu yapmak için update_option() yöntemini kullanacağız. WordPress bizim için oluşturduğundan tam bir form oluşturmamıza gerek yok. Sadece alanları kaydetmemiz gerekiyor. Bahsetmemiz gereken çok iyi bir nokta, WordPress'in forma otomatik olarak bir anlık ekleme yapması, formu güvenli hale getiren ve olası güvenlik sorunlarını önleyen bir özelliktir. İşte rc_mdm_configure_my_rss_box() fonksiyonumuzun kodu (hatırladınız mı? Bu, wp_add_dashboard_widget()'ta tanımladığımız 4. parametredir).

/**
 * 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
} ?>

Artık kontrol panelinizi yeniden yükleyebilirsiniz ve imlecinizi widget meta kutusuna yerleştirirseniz sağ üstte bir "yapılandırma" bağlantısının göründüğünü göreceksiniz. Üzerine tıkladığınızda seçenekler formu yüklenir. Alanları doldururken ve feed URL'lerini kaydederken seçenekler SQL tablomuzda saklanır.

3. Adım: Seçenekleri Alma

Son adım, eğitimin ilk bölümünde kodladığımız yayın URL'lerini değiştirmektir. rc_mdm_create_my_rss_box()'ın 14. satırından 18. satırına iki URL ekledik. Basitçe şununla değiştirin:

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

Ve bu kadar! Kontrol paneli widget'ına özel seçenekleri kolayca eklemeyi başardık.