Vai al contenuto

WordPress

Lavoro con WordPress dal 2005 e dal 2006 sono iscritto a wordpress.org. Da allora l’ho visto cambiare più volte i temi classici, i framework, i page builder, i blocchi e l’ho seguito in ogni fase, sempre con lo stesso criterio: capire come funziona sotto, non solo come si usa. È la piattaforma su cui costruisco tutto, dai siti dei clienti a i miei progetti, e a cui restituisco qualcosa con plugin e contributi.

Codice PHP di un tema WordPress su un monitor, con le chiamate a wp_head e body_class

Sviluppo su misura

Il mio modo preferito di costruire un sito oggi è un tema a blocchi con un child theme custom: blocchi e pattern dedicati per le sezioni ricorrenti, personalizzazioni via theme.json, editor Gutenberg nativo senza page builder. È l’impostazione che uso per i miei siti, questo compreso, perché produce pagine leggere, manutenibili e senza lock-in. Per i temi costruiti da zero ho lavorato a lungo con framework come Genesis e con Bootstrap sul front-end.

Lavorare su misura non significa però lavorare solo da zero. Buona parte dei siti in produzione è costruita sui temi commerciali e i page builder più diffusi, e so intervenire su queste basi rispettandone la logica: child theme, hook e filtri al posto di modifiche al codice del tema, integrazioni che sopravvivono agli aggiornamenti.

Quando WordPress da solo non basta, scrivo plugin dedicati. A volte sono mu-plugin, piccoli e mirati: sentinelle che rilevano una configurazione alterata, la correggono e avvisano via email; controllo granulare degli aggiornamenti automatici; funzionalità esposte a ruoli specifici senza concedere privilegi da amministratore. È anche il primo livello di hardening applicativo di un sito, della sicurezza a livello di server e di incident response (vedi DevOps).

Lavoro spesso su siti multilingua: traduzioni, cache delle stringhe, configurazioni duplicate per lingua e valuta, e tutti i casi limite che emergono solo quando le lingue in produzione sono più di due. Per lo stesso motivo i plugin che sviluppo sono predisposti al multilingua fin dall’inizio.

I plugin Astro Booking Engine, Astro Hide Unpublished Post Types From Menu e Astro Sticky Buttons nella directory di WordPress, firmati Alian Schiavoncini

WooCommerce

Gran parte del mio lavoro di sviluppo ruota attorno a WooCommerce, su negozi in produzione con volumi reali: catalogo, spedizioni, tassazione, metodi di pagamento. Conosco le parti che si vedono meno ma decidono se un negozio funziona: abbonamenti e la gestione dei rinnovi, HPOS e le sue differenze rispetto al modello classico degli ordini, Action Scheduler e le code di azioni pianificate.

Sul fronte pagamenti lavoro con i principali gateway, dalla verifica dell’integrazione alla diagnosi dei pagamenti rifiutati. E quando il negozio deve dialogare con l’esterno, costruisco le integrazioni: sincronizzazione con i marketplace, invio di ordini e documenti a un ERP, import di listini.

Intervenire su un e-commerce aperto richiede metodo: staging, backup, deploy, verifica, e un criterio chiaro per distinguere ciò che si può fare a sito aperto da ciò che no.

WooCommerce e le estensioni per i pagamenti Stripe e PayPal nella directory dei plugin di WordPress

Debugging e manutenzione

La competenza che uso più spesso non è scrivere codice nuovo: è capire perché il codice esistente si comporta in un certo modo. I guasti più interessanti sono quelli che non lasciano traccia nei log, una pagina bianca senza errori, un salvataggio che non salva. Per questi ho un metodo strutturato: isolare la fase di caricamento responsabile, tracciare gli hook, distinguere un errore fatale da un’interruzione esplicita, escludere singoli plugin in modo condizionale senza impatto sui visitatori.

Codice PHP su un monitor: una funzione con il tipo di ritorno dichiarato

WP-CLI è lo strumento centrale di questo lavoro: gestione di plugin, temi, utenze, cron e database da riga di comando, inclusi i casi in cui va escluso il caricamento dei plugin per aggirare proprio il componente che compromette l’esecuzione.

Un capitolo a parte è la compatibilità con le nuove versioni di PHP: molti plugin datati si rompono per costrutti rimossi o per insidie sottili, come il cambio delle regole di confronto tra stringhe e numeri, che ribalta il comportamento dei controlli di versione. Individuare il punto esatto, correggerlo e portare il sito sulla versione nuova senza interruzioni è un lavoro che ho fatto molte volte.