Ricerca nel sito web

Rendi configurabile un widget della dashboard


Qualche settimana fa abbiamo visto come aggiungere un metabox personalizzato della dashboard RSS all'amministrazione. Oggi vorrei mostrarti come aggiungere opzioni configurabili a questo metabox della dashboard.

Ecco il risultato di ciò che faremo:

La funzione più importante in questo tutorial è wp_add_dashboard_widget(). È la funzione di WordPress che registra un widget della dashboard. Abbiamo già visto che la registrazione del widget e della funzione che visualizza il widget sulla dashboard è piuttosto semplice, ma non avevamo trattato l'ultimo parametro di questa funzione. Fondamentalmente, wp_add_dashboard_widget() ha 4 parametri:

$widget_id
(intero) (richiesto) uno slug identificativo per il tuo widget. Questo verrà utilizzato come classe CSS e chiave nell'array di widget.
Impostazione predefinita: Nessuna

$nome_widget
(string) (richiesto) questo è il nome che il tuo widget mostrerà nella sua intestazione.
Impostazione predefinita: Nessuna

$richiamata
(string) (obbligatorio) Il nome di una funzione creata che mostrerà il contenuto effettivo del tuo widget.
Impostazione predefinita: Nessuna

$control_callback
(string) (facoltativo) Il nome di una funzione creata che gestirà l'invio dei moduli delle opzioni widget (configurazione) e visualizzerà anche gli elementi del modulo.
Impostazione predefinita: Nessuna

Come puoi vedere, il quarto parametro è quello responsabile delle opzioni di “configura”. Quando riempi questo parametro dici a WordPress di caricare una funzione specifica per configurare il widget. Crea automaticamente un collegamento "configura" nel titolo del metabox quando posizioni il cursore su di esso.

Passaggio 1: registrare la funzione Configura opzioni

Quindi, il primo passo è modificare la chiamata wp_add_dashboard_widget() e aggiungere il nome delle funzioni di configurazione delle opzioni nell'ultimo parametro. Le tue funzioni rc_mdm_register_widgets() dovrebbero diventare:

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

Abbiamo semplicemente aggiunto "rc_mdm_configure_my_rss_box" all'ultimo parametro.

Passaggio 2: creare la funzione di configurazione delle opzioni

Questo passaggio non è complicato. Tutto quello che dobbiamo fare è creare campi del modulo memorizzati in un array. Per fare ciò, utilizzeremo update_option(). Non abbiamo bisogno di creare un modulo completo poiché WordPress lo crea per noi. Dobbiamo solo registrare i campi. Un ottimo punto da menzionare è che WordPress aggiunge automaticamente al modulo un nonce che rende il modulo sicuro ed evita potenziali problemi di sicurezza. Ecco il codice della nostra funzione rc_mdm_configure_my_rss_box() (ricordi? È il quarto parametro che abbiamo definito in 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
} ?>

Ora puoi ricaricare la dashboard e se posizioni il cursore sul metabox del widget vedrai un collegamento "configura" visualizzato in alto a destra. Quando si fa clic su di esso, viene caricato il modulo delle opzioni. E quando riempi i campi e salvi gli URL del feed vengono memorizzati nella nostra tabella SQL delle opzioni.

Passaggio 3: recupero delle opzioni

L'ultimo passaggio consiste nel sostituire gli URL dei feed che abbiamo codificato nella prima parte del tutorial. Dalla riga 14 alla 18 in rc_mdm_create_my_rss_box() abbiamo aggiunto due URL. Sostituiscilo semplicemente con:

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

E questo è tutto! Siamo riusciti ad aggiungere facilmente opzioni personalizzate a un widget della dashboard.