Questa guida analizza come creare, gestire, usare e distruggere variabili e costanti utilizzabili in un plugin di Wordpress usando PHP.
Oggi vediamo come creare, gestire, usare e distrubbere variabili e costanti tutto quello che ci server per gestire un plugin in WordPress.
Questa guida non si preoccupa di come creare o gestire un plugin in WordPress, ma per fare chiarezza e per far si che la parte successiva sia capita bene dobbiamo definire le basi di un generico plugin in WordPress. Come esempio prendiamo un plugin generico chiamato wp-plugin-esempio, questo plugin ha una sua directory nella cartella /wp-content/plugins che deve avere lo stesso nome del plugin, all’interno di questa cartella per convenzione ci deve essere un file chiamato wp-plugin-esempio.php che definisce gli attributi del plugin e lo descrive.
Definire e Usare Costanti
E’ giusto definire delle costanti che verrano usate per accedere alle directory, questo viene fatto per evitare di usare percorsi statici che creano problemi quando il plugin viene spostato da un sito all’altro. WordPress mette a disposizione delle funzioni per fare cio’, ecco un breve elenco di queste funzioni con relativa descrizione:
- plugin_basename( string $file ) restituisce il nome base di un plugin, questo puo’ essere usato per rendere il codice piu’ standard invece di usare una stringa. Nel nostro caso questa funzione ritorna “wp-plugin-esempio/wp-plugin-esempio.php“
- plugin_dir_path( string $file ) restituisce il percorso del filesystem della variabile $file. Nel nostro caso (ma questo dipende dalla configurazione del server) questa funzione restituisce “/home/user/var/www/wordpress/wp-content/plugins/wp-plugin-esempio“, puo’ essere usata per importare files quali CSS e Javascript
- plugin_dir_url ( string $file ) simile alla precedente, ma restituisce l’URL delle cortelle del plugin.
Ecco come le funzioni precedenti possono essere usate per generare delle costanti da usare nel nostro plugin per renderlo piu’ standard:
define('PLUGIN_WPE_BASENAME', plugin_basename(__FILE__) ); // PLUGIN_WPE_BASENAME avra' come valore 'wp-plugin-esempio/wp-plugin-esempio.php' define('PLUGIN_WPE_PATH', plugin_dir_path( __DIR__ ) ); // PLUGIN_WPE_PATH avra' come valore /home/user/www/wp-content/wp-plugin-esempio define('PLUGIN_WPE_URL', plugin_dir_url( __DIR__ ) ); // PLUGIN_WPE_URL avra' come valore http://www.sito.com/wp-content/wp-plugin-esempio
Ora vediamo come usare le costanti appena create sopra:
add_filter('plugin_action_links_' . PLUGIN_WPE_BASENAME, 'wp_plugin_esempio_settings_link'); // questo hook crea un action link che avra' il nome di plugin_action_links_wp_plugin_esempio basato sulla funzione wp_plugin_esempio_settings_link include_once( PLUGIN_WPE_PATH . 'views/admin-form.php' ); // questa funzione include il file admin-form.php che si trova nella directory /wp-content/wp-plugin-esempio/view/admin-form.php wp_enqueue_script('wp-plugin-esempio-admin', PLUGIN_WPE_URL . 'js/admin.min.js' ); // questa funzione include il file Javascript chiamato admin.min.js che si trova nell'URL http://www.sito.com/wp-content/wp-plugin-esempio/js/
Definire, usare e distruggere variabili.
Ora vediamo come creare delle variabili e usarle nel nostro plugin. In questo caso creare variabili e’ molto semplice grazie alla flessibilita’ di PHP che non necessita di nessuna dichiarazione di tipo. L’unica funzione WordPress da usare e’ update_option( string $option, mixed $value, string|bool $autoload = null ), vedi questa pagina della documentazione di WordPress per avere piu’ informazioni. Queste funzione viene comunemente usata per creare e assegnare valori alle variabili del vostro plugin e le variabili verranno automaticamente salvate nel database senza bisogno di query il database.
E’ bene tenere a mente che ogni variabile di ogni plugin dovrebbe avere un nome unico in modo da evitare di chiamare variabili di plugin diversi con lo stesso nome, quindi non usate nomi troppo comuni o banali come A, B, C o indice o numero, o nomi simili, usate sempre il nome del votro plugin come inizio della variabile, ecco qualche esempio:
// copia il valore di $phone in wp-plugin-esempio-phone-number update_option( 'wp-plugin-esempio-phone-number', $phone ); // copia il valore di $prefixin wp-plugin-esempio-phone-prefix ecc... update_option( 'wp-plugin-esempio-phone-prefix', $prefix ); update_option( 'wp-plugin-esempio-full-phone-number', $fullPhoneNumber ); update_option( 'wp-plugin-esempio-title', $title ); update_option( 'wp-plugin-esempio-text', 'TESTO!!!' ); update_option( 'wp-plugin-esempio-button', $button );
Nell’esempio sopra vengono create ed eventualmente inizializzate le variabili del plugin.
Per usare e visualizzare le variabili create usiamo la funzione get_option( string $option, mixed $default = false ), ecco il link alla documentazione di questa funzione nel sito di WordPress. Ecco alcuni esempi:
// visualizzare il valore di wp-plugin-esempio-phone-prefix all'inteno di input text <input type="text" value="<?php echo get_option('wp-plugin-esempio-phone-prefix'); ?>" class="regular-text" /> // visualizza il valore di wp-plugin-esempio-form-message a scermo echo get_option('wp-plugin-esempio-form-message');
E’ buona pratica di ogni programmatore pulire la memoria e distruggere tutte le variabili utilizzate quando il plugin viene cancellato o disattivato. Per fare questo dobbiamo semplicemente creare un file chiamato uninstall.php nella directory del plugin /wp-plugin-esempio, WordPress carichera’ automaticamente il file uninstall.php quando il plugin viene disinstallato e cancellato dal server. In questo file distruggeremo le variabili che abbiamo creato in precedenza con la funzione delete_option( string $option ), ecco come:
// controlla se questo file viene eseguito da WordPress if (!defined('WP_UNINSTALL_PLUGIN')) { die; } // distruggi le variabili wp-plugin-esempio-phone-number, wp-plugin-esempio-phone-prefix ecc... delete_option( 'wp-plugin-esempio-phone-number' ); delete_option( 'wp-plugin-esempio-phone-prefix' ); delete_option( 'wp-plugin-esempio-full-phone-number' ); delete_option( 'wp-plugin-esempio-title' ); delete_option( 'wp-plugin-esempio-text' ); delete_option( 'wp-plugin-esempio-button' ); delete_option( 'wp-plugin-esempio-form-message' );
La parte in cima al file sopra “defined(‘WP_UNINSTALL_PLUGIN’)” controlla se il file uninstall.php e’ eseguito da WordPress per evitare che il file sia chiamato da browser e accidentalmente distrugga le variabili del plugin.