WordPress: impostare, salvare e usare le opzioni dei plugin

WordPress: impostare, salvare e usare le opzioni dei plugin

Supponiamo di voler creare un plugin per WordPress. Ovviamente questo plugin dovrà avere delle opzioni definite dall'utente. In questo articolo vedremo come impostare una pagina di opzioni e leggere queste opzioni.

Impostare la pagina di opzioni

La pagina di opzioni non viene caricata automaticamente da WordPress, ma ha bisogno di essere definita nel plugin (in genere all'inizio) all'interno del suo file principale (che chiameremo mio-plugin.php):


/*
Plugin Name: Mio Plugin
Plugin URI: http://miosito.com/
Description: Descrizione del plugin
Version: 1.0
Author: Nome Cognome
Author URI: http://miosito.com/
*/

$options_page = get_option('siteurl') . '/wp-admin/admin.php?page=mio-plugin/options.php';

function plugin_options_page() {
	add_options_page('Opzioni Mio Plugin', 'Mio Plugin', 10, 'mio-plugin/options.php');
}

add_action('admin_menu', 'plugin_options_page');

La voce Mio Plugin verrà ora aggiunta da WordPress al menu amministrativo Impostazioni. Quindi dobbiamo definire la pagina chiamata options.php.

Definire la pagina delle opzioni

Una pagina delle opzioni non contiene altro che un form con dei campi che definiscono le opzioni del nostro plugin. WordPress salva e aggiorna queste opzioni nel suo database.

Gli attributi name dei campi sono fondamentali, in quanto danno il nome all'opzione selezionata. Per esempio il seguente campo di testo:


<input type="text" name="test" value="" />

definisce un'opzione il cui nome è test e che può essere usata dal nostro plugin tramite la funzione di WordPress get_option():


$test = get_option('test');

Il nostro plugin può quindi compiere delle scelte o delle azioni in base al valore delle opzioni:


$test = get_option('test');

if($test == '') {

    //...

} else {

    //...

}

Il file principale del plugin, che contiene le sue azioni principali, e la pagina delle opzioni sono legate strettamente da WordPress in modo che il nostro codice definito nel file principale può sempre avere accesso alle opzioni definite dall'utente.

Vediamo ora un esempio pratico: definiremo due opzioni di base e le salveremo.

[php htmlscript="true"] <div class="wrap"> <h2>Configurazione Mio Plugin</h2> <form method="post" action="options.php"><?php wp_nonce_field('update-options'); ?> <div class="inside"> <table class="form-table"> <tr> <th><label for="limit">Limite di caratteri nella descrizione</label></th> <td><input type="text" name="limit" value="<?php $limit = get_option('limit'); if(!empty($limit)) { echo $limit; } else { echo "350"; } ?>"></td> </tr> <tr> <th><label for="more">Separatore More</label></th> <td><input type="text" name="more" value="<?php $more = get_option('more'); if(!empty($more)) { echo $more; } else { echo "..."; } ?>"></td> </tr> </table> </div> <input type="hidden" name="action" value="update" /> <input type="hidden" name="page_options" value="limit, more" /> <p class="submit"><input type="submit" name="Submit" value="<?php _e('Salva opzioni') ?>" /></p> </form> </div>

L'azione del form deve puntare alla stessa pagina. Una buona pratica è quella di filtrare l'input per evitare problemi di sicurezza:

[php htmlscript="true"] <form method="post" action="options.php"><?php wp_nonce_field('update-options'); ?>

Nei campi dei form è importante impostare un valore predefinito per evitare che l'utente lasci vuoti i campi:

[php htmlscript="true"] <input type="text" name="limit" value="<?php $limit = get_option('limit'); if(!empty($limit)) { echo $limit; } else { echo "350"; } ?>">

La parte conclusiva del codice del form è standard, nel senso che viene utilizzata in tutte le pagine di opzioni:

[php htmlscript="true"] <input type="hidden" name="action" value="update" /> <input type="hidden" name="page_options" value="limit, more" /> <p class="submit"><input type="submit" name="Submit" value="<?php _e('Salva opzioni') ?>" /></p>

La marcatura usata all'interno del form usa degli attributi HTML che possiedono già degli stili assegnati da WordPress. Potete comunque scegliere la marcatura che preferite, fermo restando il fatto che dovrete definire degli stili ad hoc.

Nota

Anche per i temi si usa la stessa procedura per la definizione delle opzioni.

Torna su