«Ho trovato il plugin che fa quasi quello che mi serve. Quel quasi me lo sistemi tu?»

È la frase con cui, quasi sempre, comincia una richiesta di sviluppo plugin WordPress. L’ho sentita da un’azienda di noleggio attrezzature e, con parole identiche, da uno studio di fisioterapia che voleva far scegliere al paziente l’operatore e non solo l’orario. Quel «quasi» è la parte più cara del lavoro, perché è lì che si decide se stai facendo una piccola personalizzazione o un pezzo di software nuovo. Qui metto in fila che cos’è davvero un plugin, in che ordine affronto una richiesta così, cosa non funziona anche se in giro te lo raccontano, e quanto costa ogni pezzo sul mio catalogo pubblico.

Che cos’è un plugin, in concreto

Un plugin è una cartella di file PHP che WordPress carica a ogni richiesta e che si aggancia al codice del CMS in punti prestabiliti, gli hook. Non riscrive WordPress: gli chiede di fermarsi un istante in un momento preciso — quando salva un contenuto, quando mostra un prezzo, quando sta per inviare un’email — e di eseguire anche il tuo codice.

Sembra un dettaglio da programmatori e invece è la cosa che decide il preventivo. Se quello che ti serve si ottiene agganciandosi a un hook che esiste già, il lavoro è di ore. Se richiede di cambiare il comportamento in un punto dove WordPress, o il plugin di terze parti che stai usando, non ha previsto nessun aggancio, non è più una personalizzazione: è un plugin nuovo che si prende in carico quella funzione per intero. Due lavori diversi, da distinguere prima di cominciare.

L’ordine con cui affronto la richiesta

1. Scrivere cosa deve succedere, non cosa deve esserci. «Mi serve un plugin prenotazioni» non è una specifica: è un’etichetta. La specifica è «il cliente sceglie giorno, ora e operatore, riceve una conferma, se disdice entro 24 ore lo slot torna libero, altrimenti no». Metà delle richieste si sgonfia qui, perché una volta scritta la sequenza si scopre che due passaggi su cinque li fa già il gestionale che hai.

2. Cercare se esiste già. In una parte dei casi finisce lì: esiste un plugin pubblico che copre tutto e la risposta corretta è «installalo, non ti serve io». Non ci guadagno niente ed è comunque il consiglio giusto, perché un plugin mantenuto da un team con migliaia di installazioni riceve aggiornamenti di sicurezza con una frequenza che un plugin scritto per te solo non avrà mai.

3. Verificare se il «quasi» sta dentro un hook. Quando il plugin pubblico c’è ma manca un pezzo, la domanda è una sola: quel pezzo si può aggiungere dall’esterno? Se il plugin espone azioni e filtri in quel punto, si scrive un’estensione di poche decine di righe che vive in una cartella separata e sopravvive agli aggiornamenti. Se non li espone, la modifica pulita non esiste, ed è meglio saperlo subito.

4. Scrivere il plugin su misura. Qui si costruisce da zero la funzione, con le sue schermate in amministrazione, i suoi dati e le sue regole. È il caso delle prenotazioni e appuntamenti, dell’area riservata con membership, del preventivatore online, del form builder avanzato: cose che i plugin generici fanno tutte a metà perché devono andare bene a chiunque.

5. Capire quando non è più un plugin. Se la funzione ha una vita sua — utenti che non sono utenti del sito, dati che non c’entrano con i contenuti, carichi che il database di WordPress non regge — insistere a farne un plugin è un errore che paghi dopo. Lì si passa a un’applicazione separata che parla col sito, e cambia sia il progetto sia il prezzo.

Com’è fatto un plugin che fra sei mesi non ti crea problemi

Il codice che scrivo lo giudico su cinque cose, tutte noiose e tutte decisive. Un prefisso proprio su funzioni, classi, opzioni e tabelle, così non va in conflitto con nient’altro. Nessuna riga nel functions.php del tema: se cambi tema, la funzione deve restare. Dati propri in tabelle o in tipi di contenuto propri, non incastrati dentro campi altrui. Una routine di disinstallazione che, se decidi di toglierlo, non lascia in giro spazzatura. E un file di attivazione che controlla la versione di PHP e di WordPress prima di partire, invece di spaccare il sito e basta.

Cosa non funziona

Modificare i file di un plugin di terze parti. Funziona per due settimane, poi arriva l’aggiornamento e le tue modifiche spariscono. Chi te lo propone o non aggiorna mai i plugin — e allora hai un problema di sicurezza — oppure ti farà ripagare la stessa modifica ogni volta.

Gli snippet raccolti in giro e infilati nel tema. Il functions.php del tema è dove finiscono le cose che nessuno sa più chi ha messo e perché. Ne ho aperti con quaranta righe copiate da forum diversi, due delle quali facevano la stessa cosa in modi incompatibili.

«Tanto oggi lo genero con l’AI in un pomeriggio». Generare il primo abbozzo funziona ed è lavoro in meno. Quello che l’AI non fa al posto tuo è scegliere gli hook, verificare che i permessi siano controllati sul serio, validare l’input prima di scriverlo a database e capire cosa succede se due persone premono il pulsante nello stesso secondo. I plugin generati e messi online senza quel passaggio sono la causa più frequente dei siti compromessi che mi arrivano oggi.

Accumulare. Sui siti che ricevo in manutenzione trovo spesso più di quaranta plugin attivi, molti installati per una funzione usata una volta. Ognuno è codice eseguito a ogni caricamento e una superficie d’attacco in più: prima di aggiungere il quarantunesimo, di solito la mossa giusta è toglierne dieci.

Quanto costa

Sul catalogo ogni plugin WordPress su misura è un prodotto a 199 € + IVA: vale per le prenotazioni, per il store locator, per il calendario eventi e per gli altri della stessa famiglia. L’elenco completo è nell’archivio Plugin WordPress su misura.

Poi c’è il dopo, che è la voce che le agenzie dimenticano di scrivere nel preventivo. Un plugin su misura va tenuto allineato agli aggiornamenti di WordPress e di PHP: l’assistenza WordPress Base parte da 89 € + IVA al mese, la Pro è 199 € + IVA al mese e la Business con GeoAudit 390 € + IVA al mese. Se il sito è già fermo o compromesso, l’intervento urgente costa 490 € + IVA.

Quando invece siamo al punto 5 — non è più un plugin — i riferimenti sono altri: l’integrazione tra sistemi e API è 1.500 € + IVA, le automazioni e script su misura 990 € + IVA, un software prenotazioni e booking autonomo 1.900 € + IVA. Dico il numero prima di cominciare perché la differenza tra 199 e 1.900 dipende solo da dove sta il «quasi».

Se non sai in quale dei cinque punti ti trovi, si capisce in mezz’ora guardando il sito. Le altre guide della serie sono nell’hub dei servizi, con lo stesso schema: cosa è, in che ordine, cosa non funziona, quanto costa.

Domande frequenti

Quando conviene sviluppare un plugin WordPress su misura invece di installarne uno pubblico?

Conviene quando il plugin pubblico copre la funzione solo in parte e la parte mancante non si può aggiungere agganciandosi ai suoi hook, oppure quando per ottenere il risultato dovresti installarne tre che si sovrappongono. Se un plugin mantenuto copre tutto quello che ti serve, la scelta giusta resta quello.

Un plugin su misura si rompe quando aggiorno WordPress?

Non se è scritto usando gli hook pubblici e non le funzioni interne del core. Il rischio vero arriva dai salti di versione di PHP e dagli aggiornamenti dei plugin di terze parti a cui il tuo si aggancia: per questo un plugin su misura va abbinato a un contratto di assistenza, non lasciato lì da solo.

Posso far generare il plugin a un’AI e farlo solo controllare?

La revisione di codice generato è un lavoro serio quanto scriverlo, perché i problemi non stanno nella funzione principale ma nei permessi, nella validazione dell’input e nella gestione degli errori. Su un plugin già scritto parto sempre da una lettura completa, e capita che convenga rifarlo invece di correggerlo.

Il plugin resta mio se un domani cambio fornitore?

Sì. Il codice viene consegnato per intero, senza chiamate a licenze esterne o server di attivazione: sta nella cartella dei plugin del tuo sito e chiunque sappia leggere PHP può proseguire il lavoro. È l’unica condizione che rende sensato pagare per un plugin scritto apposta.

0