In questi giorni sto lavorando su alcuni aspetti che mi sembrano importanti per il miglioramento dei miei plugin, come il refactoring del codice e qualche feature che mi interessa avere. Per esempio scGeSHi necessita di una pagina nel pannello di amministrazione di WordPress, dove è possibile configurare le prestazioni di base del plugin. Altro aspetto interessante per me è avere finalmente la possibilità di svuotare il cache.
Ho deciso che in futuro scriverò tutto il codice PHP soltanto partendo dalla versione 5.2 in poi. Se ho letto bene la versione 3.2 di WordPress richiederà anche la versione 5.2 di PHP e – ad essere sincero – mi mancano sia la voglia che il tempo di controllare continuamente se c’è qualcuno che fa ancora girare una vecchia installazione del linguaggio. Poi c’è da dire che per i miei gusti le prestazioni di base che hanno stabilito gli sviluppatori di WordPress non sono ancora sufficienti.
Già con PHP 5.3 potrebbe diventare possibile evitare qualche problema, noto soprattutto agli sviluppatori dei plugin, grazie ai namespaces finalmente introdotti. Ma a parte tutto questo uso in tanti casi il Transients API che è parte di WordPress dalla versione 2.8. Inoltre, per non richiedere sempre se esiste o meno una determinata funzionalità, preferirei poterne essere sicuro già nel momento dell’attivazione di un plugin. Questo mi porta direttamente a register_activation_hook e a una mia prima bozza:
Con register_activation_hook viene registrata una funzione a cui si ricorre quando si attiva un plugin. E’ importante sapere che in questa funzione non si ha accesso alle variabili globali dell’istanza di WordPress. Per questo motivo non uso $wp_version per ottenere la versione di WP bensì get_bloginfo(‘version’). La versione di PHP utilizzata si trova anche nella costante PHP_VERSION. Ma penso si tratti solo di una questione di gusti.
Ricorro inoltre alla funzione version_compare di PHP per mettere a confronto le versioni, cosa che mi sembra più sensata di qualche costrutto che gira in rete. Infine voglio assicurarmi anche che il plugin si disattivi in caso di errore. Se si esce dalla funzione soltanto con die(), si ottiene un messaggio di errore ma il plugin resta comunque attivo. All’inizio mi è sembrato un po’ strano tuttavia è logico se si pensa al momento esatto in cui il processo viene eseguito.
Se qualcuno avesse una soluzione alternativa, mi farebbe molto piacere dare un’occhiata!