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.