Guida alla sviluppo di plugin per wordpress: il pannello di amministrazione (1/3)
Nel precedente articolo di questa guida abbiamo completato la prima parte del plugin che stiamo sviluppando. Il plugin mostra le informazioni relative alla licenza alla fine di ogni articolo; il box contenente queste informazioni può essere chiuso con un effetto di animazione.
Nei prossimi articoli vedremo come rendere il nostro plugin configurabile dal pannello di amministrazione, come aggiungere una voce al menù delle impostazioni, come sviluppare il form che permetterà di configurare le opzioni del plugin e come salvare e recuperare queste opzioni.
Nel plugin renderemo configurabili tre opzioni:
- Il testo della licenza.
- L’effetto di animazione nella chiusura del box.
- Il colore di background del box.
Come impostare le opzioni di default all’installazione del plugin?
Come prima cosa, faremo in modo che all’installazione del plugin vengano create delle opzioni di default. Tutte le opzioni dei plugin e dei temi sono salvate nella tabella wp_options del database di WordPress. Per questo motivo
!best practices!
Come abbiamo visto per i nomi delle funzioni, anche i nomi delle opzioni dovranno essere un po’ “stravaganti” e possibilmente utilizzare un presfisso. In questo modo limiteremo al massimo il rischio di collisioni con altri plugin o temi.
Aggiungeremo ora le opzioni di default tramite la specifica funzione add_option, che passa come parametri il nome dell’opzione ed il suo valore.
Faremo tutto questo all’interno di una funzione che passeremo poi al gancio di attivazione dei plugin, in questo modo:
function ylb_activate_set_default_options() { add_option('ylb_license_content', 'Inserisci il testo della licenza qui'); add_option('ylb_close_box_effect', 'slideup'); add_option('ylb_box_bg_color', 'E6E6E6'); } register_activation_hook( __FILE__, 'ylb_activate_set_default_options');
Il primo parametro del gancio di attivazione del plugin é la posizione del file principale del plugin. Nel nostro caso stiamo lavorando proprio sul questo file e dunque passeremo la costante __FILE__.
A questo punto possiamo disattivare il plugin e riattivarlo. Andando ora a curiosare nella tabella wp_options (molto probabilmente alla fine) trovereremo le nostre tre opzioni correttamente salvate.
Come registrare le opzioni?
Il prossimo passo é quello di registrare le opzioni tramite la funzione register_setting. Questa operazione ci servirà in seguito quando dovremo dichiarare al form per la gestione delle opzioni a quale gruppo di opzioni stiamo facendo riferimento.
La funzione register_setting passa tre parametri:
- il nome del gruppo di opzioni, che ovviamente dovrà essere sempre uguale;
- il nome della funzione che intendiamo registrare;
- opzionalmente il nome della funzione alla quale far passare il dato inserito per un eventuale filtraggio (sanitize callback).
Faremo questo all’interno di una funzione che passeremo poi, tramite add_action, al gancio di inizializzazione del backend amministrativo (admin_init).
function ylb_register_options_group() { register_setting('ylb_options_group', 'ylb_license_content'); register_setting('ylb_options_group', 'ylb_close_box_effect'); register_setting('ylb_options_group', 'ylb_box_bg_color'); } add_action ('admin_init', 'ylb_register_options_group');
Come aggiungere una nuova voce al menù delle Impostazioni di WordPress?
Passiamo ora all’aggiunta di una nuova voce all’interno del menù Impostazioni nel pannello amministrativo che darà accesso alla pagina di configurazione del plugin.
Come prima cosa dichiariamo la funzione che si occuperà di generare questa pagina.
Il vero contenuto di questa funzione (il form) sarà oggetto del prossimo tutorial.
Per il momento ci limiteremo a questo:
function ylb_update_options_form() { ?> <h1>Pagina delle impostazioni di Yourinspiration License Box</h1> <?php }
Ora vediamo come aggiungere il link a questa pagina. Utilizzeremo la funzione add_options_page che passa cinque parametri, nell’ordine:
- il titolo della pagina (inteso come contenuto del tag title);
- il nome della pagina, ovvero il testo visualizzato dal link nel menù;
- la capability, ovvero il ruolo che bisogna avere per poter visualizzare la pagina;
- il nome unico (slug) della pagina. Qui dovremo utilizzare una stringa url-compatibile (quindi non lasciare spazi o utilizzare caratteri speciali);
- il nome della funzione che genera la pagina.
Tutto questo lo dichiareremo all’interno di una funzione che passeremo al gancio di inizializzazione del menu amministrativo (admin_menu) in questo modo.
function ylb_add_option_page() { add_options_page('YLB Options', 'YLB Options', 'administrator', 'ylb-options-page', 'ylb_update_options_form'); } add_action('admin_menu', 'ylb_add_option_page');
Ora puoi visualizzare la pagina amministrativa di WordPress e constatare che il link del nostro plugin é stato aggiunto al menu delle Impostazioni.
Cliccando sul link sarà mostrata la pagina provvisoria generata dalla funzione ylb_update_options_form.
Conclusione
In questo articolo abbiamo visto come predisporre il nostro plugin in modo da gestire e configurare delle impostazioni direttamente dal pannello di amministrazione. Nel prossimo tutorial svilupperemo e renderemo operativa la pagina contenente il form che ci permetterà di modificare queste impostazioni.
Capitoli di questa guida
- Introduzione
- Gli strumenti di base
- La gestione degli script
- Il pannello di amministrazione (1/3)
- Il pannello di amministrazione (2/3)
- Il pannello di amministrazione (3/3)
- Condividere il plugin
13 commenti
Trackback e pingback
-
Guida allo sviluppo di plugin per wordpress: Gli strumenti di base | Your Inspiration Web
[...] Il pannello di amministrazione (1/3) [...] -
Guida allo sviluppo di plugin per wordpress: La gestione degli script | Your Inspiration Web
[...] Il pannello di amministrazione (1/3) [...] -
Guida alla sviluppo di plugin per wordpress: il pannello di amministrazione (2/3) | Your Inspiration Web
[...] precedente articolo abbiamo iniziato ad impostare il pannello di amministrazione del nostro plugin. Abbiamo creato [...] -
Raccolta di articoli della settimana 9/10/2011 | Saverio Gravagnola
[...] allo sviluppo di plugin per wordpress: il pannello di amministrazione (1/3) (Your Inspiration [...] -
Guida allo sviluppo di plugin per wordpress: Introduzione | Your Inspiration Web
[...] Il pannello di amministrazione (1/3) [...]
Ciao Maurizio, inutile farti ulteriori complimenti…
Con questo articolo la cosa inizia a farsi interessante.
Sono interessato a questa parte dato le poche volte che ho a che fare con wp opero in maniera “smanettatrice” e non rigorosa.
Ti volevo illustrare in che modo io gestisco register_activation_hook per avere una tua opinione sul mio modo di operare.
Ovviamente non sono interessato al “funziona” (dopo vari smanettamente alla fine funziona).
Sono interessato alle best pratices che indichi di volta in volta negli articoli.
La parte del plugin riguardante l’istallazione la faccio così:
global $opzione_del_mio_plugin;
$opzione_del_mio_plugin = array(
'name' => 'Nome della opzione',
'id' => 'univoco_my_plugin',
'default' => 'valore di default / iniziale'
);
function istallazione_mio_plugin(){
global $opzione_del_mio_plugin;
if( !get_option($opzione_del_mio_plugin['id']) ){ // se è la prima istallazione aggiungo l'opzione
add_option( $opzione_del_mio_plugin['id'], $opzione_del_mio_plugin['default'], '', 'yes' );
}
}
register_activation_hook(__FILE__, 'istallazione_mio_plugin');
In pratica a differenza di come esponi nell’articolo io mi assicuro preventivamente la non esistenza del record nella tabella wp_option.
se attivo il mio plugin per la prima volta non ci sarà la/le relative opzioni necessarie nella tabella wp_options quindi andrò ad inserire il valore di default ($opzione_del_mio_plugin[‘default’]) altrimenti non faccio nulla (caso che si verifica se lo disattivo per poi riattivarlo in un successivo momento).
Inoltre nei casi in cui il plugin richiede la creazione di apposite tabelle mysql (query CREATE) faccio una query di verifica dell’esistenza della tabella.
$opzione_del_mio_plugin = array(
'tabella_mio_plugin' => 'mio_plugin'
);
function istallazione_mio_plugin(){
global $opzione_del_mio_plugin;
$array_tabelle_esistenti = $wpdb->get_col("SHOW TABLES");
if(!in_array($opzione_del_mio_plugin['tabella_mio_plugin'], $array_tabelle_esistenti)){
// sql create table... (generalmente una function dedicata)
}
}
register_activation_hook(__FILE__, 'istallazione_mio_plugin');
Nei casi in cui il funzionameno del plugin richiede la modifica di una/e tabella/e essitente (query ALTER TABLE) verifico i campi di questa.
$opzione_del_mio_plugin = array(
'campo_tabella_post' => 'campo_mio_plugin'
);
function istallazione_mio_plugin(){
global $opzione_del_mio_plugin;
$array_colonne_tabella_dei_post = $wpdb->get_var("SHOW COLUMNS FROM $wpdb->posts");
if(!in_array($opzione_del_mio_plugin['campo_tabella_post'], $array_colonne_tabella_dei_post)){
// sql create table... (generalmente una function dedicata)
}
}
register_activation_hook(__FILE__, 'istallazione_mio_plugin');
Sono sulla stada corretta oppure vi è un modo più corretto?
Ciao oly. Scusa per la risposta tardiva.
Dunque: Nel primo punto che esponi, non é necessario verificare l’esistenza delle opzioni nel database in quanto questa operazione é già svolta dal gancio di attivazione del plugin. Infatti se disattivi un plugin e poi lo riattivi, puoi constatare che le opzioni che avevi impostato non sono state sovrascritte da quelle di default.
Nel secondo punto, invece di fare quel controllo, mi sembra più semplice e pulito utilizzare l’apposita direttiva di MySql
CREATE TABLE IF NOT EXISTS
Per quello che concerne il terzo punto, é una pratica sbagliata modificare delle tabelle predefinite del database. Le possibilità sono due:
1. Si crea una nuova tabella relazionata con la tabella predefinita
2. Si utilizza una tabella “meta” (per la tabella posts esiste la tabella postmeta)
Ciao Maurizio, complimentissimi, questa guida mi sta dando una mano pazzesca per districarmi nello sviluppo di plugin per wordpress.
Una domanda: esiste un modo per decidere in quale voce del menu deve apparire il link al form di configurazione? Così come lo hai impostato appare sotto “impostazioni”, e se io volessi farlo apparire sotto “plugin”? Si può fare?
Ciao Tiziano e grazie per i complimenti.
Il link per la pagina di configurazione di un plugin si trova per convenzione nel menu delle impostazioni. Non credo sia possibile farlo comparire nel menù plugin, ne credo sia una buona idea.
E’ però possibile creare un menù personalizzato (che verrà aggiunto alla fine dopo il menù impostazioni) come fanno alcuni plugin o temi che hanno la configurazione suddivisa in più pagine.
Per fare questo si utilizzano le funzioni
add_menu_page() (per creare il blocco principale)
add_submenu_page() (per creare le singole voci di navigazione)
Il tutto contenuto in una funzione che verrà poi passata al gancio di inizializzazione del menù amministrativo (come per add_option_page che abbiamo utilizzato in questa guida)
capito, grazie mille :)
La guida è utile per iniziare, per tipi come me che sono alle prime armi con WP, ma più si approfondisce più si comprende che numerose sono le strade che si possono percorrere.
Avendo realizzato due moduli (funzionanti) php con tanto di tag html, classi php, javascript, css, il primo come menu e il secondo come visualizzazione di un glossario estratto da dB, in base alla vostra esperienza mi consigliate l’uso dei plugin per inserirlo in un template di menu? e se si come richiamarlo?
ma va, anche io ho sto problema con la pagina option che non viene visualizzata… rabbia!
Non riesco a capire una cosa..
Queste funzioni di questo capitolo in quale file vanno inserite?
Sempre nel solito?