Gli strumenti di intelligenza artificiale (IA) come ChatGPT, Claude e Cursor stanno silenziosamente entrando a far parte della dotazione quotidiana degli sviluppatori WordPress. Qualunque sia il progetto a cui stiamo lavorando, che siano lo sviluppo di plugin personalizzati, la creazione di blocchi di Gutenberg o l’automazione di attività con WP-CLI, l’intelligenza artificiale può aiutare a scrivere, debuggare e rifattorizzare il codice più velocemente senza sacrificare la qualità.

Questa guida illustra sette modi pratici in cui gli sviluppatori utilizzano l’intelligenza artificiale per snellire i flussi di lavoro di WordPress.

Cominciamo.

1. Scrittura e debug del codice di plugin personalizzati

Uno dei modi più ovvi (e potenti) per utilizzare l’intelligenza artificiale come sviluppatori WordPress è quello di scrivere il codice ed eseguire il debug di plugin personalizzati.

Strumenti come ChatGPT e Claude possono accelerare notevolmente il flusso di lavoro, sia quando si sviluppa qualcosa da zero, sia quando si ha a che fare con un plugin legacy di un cliente che sta dando errori fatali.

Costruire un plugin boilerplate da zero

Possiamo usare l’AI per creare l’intera struttura di un plugin, compresi l’intestazione, gli hook e l’organizzazione dei file. Invece di andare a cercare quel vecchio plugin da cui facciamo sempre copia-incolla, basta descrivere ciò che vogliamo.

Ecco un esempio:

Crea un plugin WordPress che registri un tipo di post personalizzato chiamato "Event". Deve avere titolo, editor e miniatura e avere meta-campi personalizzati per data e luogo. Mostra il codice per registrare questi campi meta utilizzando la REST API.

Claude non si limita a generare il codice grezzo. Fornisce:

  • L’impalcatura completa di un plugin, orientata agli oggetti e ben strutturata.
  • Commenti in linea in tutto il codice che spiegano ogni singola parte.
  • Indentazione e spaziatura corrette (si pensa che questo sia scontato, ma non lo è con tutti gli strumenti).
  • Campi meta pronti per l’API REST registrati tramite register_post_meta().
  • Un’interfaccia utente per l’amministrazione con un meta box per catturare la data e il luogo dell’evento.
  • E molto altro.
Output generato da Claude.
Output generato da Claude.

Debug degli errori del plugin

Se siamo di fronte ad uno schermo bianco o un errore fatale di un plugin di qualcun altro, l’intelligenza artificiale può aiutarci a individuare rapidamente il problema. ChatGPT (in particolare GPT-4) è bravo a spiegare le tracce dello stack e a individuare le chiamate di funzione mancanti, gli errori di battitura e le funzioni deprecate.

Ecco un esempio di richiesta a ChatGPT:

Questo è l'errore che ricevo in un plugin personalizzato: 
"Uncaught Error: Call to undefined function get_field() in /wp-content/plugins/my-plugin/plugin.php on line 42"
Cosa c'è che non va e come posso risolvere il problema?

E ChatGPT ha fatto centro:

  • Ha evidenziato correttamente che get_field() è una funzione Advanced Custom Fields (ACF).
  • Ha elencato tutte le cause più comuni di questo errore.
  • Suggerisce anche delle best practice, come racchiudere la funzione in un hook, come init o wp, e controllare se function_exists() prima di chiamarla.
Esempio di output generato da ChatGPT
Esempio di output generato da ChatGPT nell’interfaccia di una conversazione.

Possiamo anche incollare interi file di plugin in strumenti come Cursor e chiedergli di “verificare il codice in base alle best practice di WordPress” o di “riscriverlo seguendo i moderni standard di codifica di PHP e WP”.

Modificare le funzionalità del plugin esistente

Supponiamo di avere un plugin che fa l’80% di ciò che serve, ma quel 20% rimanente è importante. Potremmo dover modificare alcuni output, collegarci a un modulo di invio o renderlo compatibile con più siti.

Invece di scavare manualmente nel codice, possiamo utilizzare strumenti di intelligenza artificiale come Cursor o GitHub Copilot direttamente nell’editor per apportare modifiche in modo più rapido e sicuro. Ad esempio, questo tipo di richiesta potrebbe essere utile:

Questo plugin crea un tipo di post personalizzato "Testimonials" e li visualizza tramite uno shortcode. Modificalo in modo da visualizzare anche il nome dell'autore della testimonianza in grassetto sotto il contenuto. Ecco la funzione di output dello shortcode:
[...incolla funzione...]

O qualcosa di simile:

Aggiorna questo plugin in modo che non venga eseguito su installazioni multisito. Se si tratta di un multisito, mostra un avviso all'amministratore e disattiva il plugin.

L’intelligenza artificiale allora:

  • Individua la funzione o l’hook esatto nel file (anche se non ne siamo sicuri).
  • Suggerisce la più piccola modifica necessaria, invece di riscrivere l’intero file.
  • Mantiene la logica in base alla struttura del plugin (soprattutto se utilizziamo Cursor e legge l’intero codice).
  • Se necessario, aggiungerà controlli di sicurezza, come is_multisite() o function_exists().

Potrebbe anche chiedere: “Vuoi che il nome dell’autore sia opzionale? Dovrebbe provenire dal meta del post o da un attributo shortcode?” – Questo è un buon segno che indica che sta “pensando” in termini di sviluppo.

2. Creare blocchi Gutenberg personalizzati

Lo sviluppo dei blocchi di Gutenberg può essere un problema, soprattutto se non si è esperti di React. È facile rimanere impantanati tra la configurazione di Webpack, la registrazione dei blocchi e la logica di rendering. È qui che gli strumenti di intelligenza artificiale possono ridurre la complessità del lavoro.

Generare un blocco personalizzato da zero

Ho chiesto a Claude di creare un blocco Gutenberg personalizzato chiamato Testimonial Block, con il supporto di una citazione, del nome dell’autore e dell’immagine dell’autore:

Crea un blocco Gutenberg chiamato "Testimonial Block". Deve avere campi per la citazione, il nome dell'autore e l'immagine dell'autore. Mostra un'anteprima nell'editor e rendila sul frontend usando PHP. Crea il blocco con il markup di base e i nomi delle classi, in modo da poter assegnare lo stile in un secondo momento.

Claude ha indovinato la struttura. Invece di scaricare tutto in un unico blob, ha diviso il plugin in parti chiare:

  • File PHP del plugin (testimonial-block.php) – registra il blocco utilizzando register_block_type().
  • File JS (block.js) – imposta l’interfaccia utente del blocco utilizzando TextControl, MediaUpload, useBlockProps, ecc.
  • File CSS (editor.css e style.css) – stili per l’editor e il frontend

Inoltre, spiega dove salvare ogni singolo file e come strutturare la cartella all’interno di /wp-content/plugins/, in modo da testarlo facilmente.

L'interfaccia di Claude mostra la separazione tra le sezioni del codice e dei file.
L’interfaccia di Claude mostra la separazione tra le sezioni del codice e dei file.

Se si lavora con i blocchi nativi e non si ha voglia di configurare @wordpress/scripts da zero ogni volta, questo tipo di supporto dell’AI permette di fare l’80% del lavoro. Possiamo sempre personalizzare il markup o la struttura dei campi in un secondo momento.

Se decidiamo di cambiare il layout, possiamo semplicemente dire a Claude: “Fai in modo che l’immagine dell’autore appaia sopra la citazione invece che di fianco”, oppure “Sostituisci il MediaUpload con un input per inserire l’URL di un’immagine esterna”.

Modificare i blocchi esistenti

Come per la creazione di un blocco da zero, possiamo utilizzare Claude o ChatGPT anche per modificare blocchi Gutenberg esistenti, il che è particolarmente utile quando si lavora a un progetto iniziato da qualcun altro o si sta rivisitando un blocco scritto mesi fa.

Ad esempio, supponiamo di avere un blocco con un semplice input di testo e che vogliamo aggiungere un pulsante per controllare se l’output debba essere evidenziato o meno. Invece di cercare manualmente in edit() e save() o nel PHP render_callback, possiamo semplicemente dare all’AI la parte pertinente del blocco e chiedere:

Ecco la funzione edit() del mio blocco Gutenberg. Aggiungi un ToggleControl con etichetta "Highlight" che aggiunge la classe CSS "highlighted" al contenitore del blocco se è stato attivato:
[...incolla funzione...]

È anche abbastanza intelligente da seguire lo stile del codice esistente. Quindi, se il blocco utilizza useBlockProps(), lo mantiene; se rende il markup grezzo della div, lo segue invece di cercare di riscrivere il layout.

3. Creare comandi WP-CLI per l’automazione

Per gli sviluppatori WordPress, WP-CLI è uno di quegli strumenti che permettono di salire di livello. WP-CLI permette di scrivere su WordPress come una vera e propria applicazione, invece di cliccare sul pannello di amministrazione o scrivere pagine di amministrazione temporanee solo per eseguire un’operazione in blocco.

L’AI elimina la fase di studio, quindi non dovremo più scavare per 30 minuti nella documentazione di WP-CLI, indovinare il formato delle classi, copiare il vecchio codice da un altro progetto e modificarlo.

Supponiamo di voler pubblicare in blocco tutti i post con una meta-key specifica. Possiamo utilizzare il seguente prompt:

Scrivi un comando custom WP-CLI chiamato `publish_scheduled_events` che esegue il loop di tutti i post di tipo "event" in cui la meta-key personalizzata "event_date" è nel passato e li pubblica.

L’IA restituirà una classe con WP_CLI::add_command() registrata correttamente, un metodo che utilizza WP_Query con un filtro meta_query e altro. Nella maggior parte dei casi, il codice è pronto per la produzione, a parte la modifica del confronto dei valori delle meta-chiavi, che possiamo richiedere in un secondo momento.

Possiamo anche richiedere i comandi WP-CLI per gestire attività come:

  • Cancellare i transient
  • Salvare nuovamente i permalink
  • Rigenerare le dimensioni delle immagini
  • Sincronizzare le opzioni tra gli ambienti
  • Eseguire operazioni programmate di importazione

Ecco un prompt di esempio:

Scrivi un comando WP-CLI che cancelli tutti i transient scaduti nella tabella wp_options e che registri quanti sono stati cancellati.

Inoltre, se stiamo già scrivendo dei comandi WP-CLI ma qualcosa non va (magari non riconosce gli argomenti o abbiamo un output strano), possiamo incollare il codice e chiedere:

Questo comando WP-CLI non analizza correttamente l'argomento --user_id. Cosa c'è che non va?

4. Ottimizzare le query SQL nelle query di WP o nel codice personalizzato del database

Gli sviluppatori WordPress hanno spesso a che fare con query che sembrano andare bene fino a quando non iniziano a girare su un sito reale con migliaia di post e una tabella wp_postmeta intasata. A quel punto le prestazioni calano e le cose si mettono male.

La buona notizia è che strumenti come ChatGPT, Claude e persino Cursor (quando si lavora su una base di codice completa) possono esaminare la configurazione di SQL o WP_Query e indicare schemi inefficienti o aiutare a rifattorizzare completamente le query.

Individuare eventuali strozzature nella configurazione di WP_Query

Supponiamo di aver scritto una WP_Query complessa per visualizzare i prossimi eventi con meta-campi personalizzati e che il caricamento sia lento. Possiamo chiedere:

Ecco una WP_Query per gli eventi ordinati in base a un meta-campo personalizzato "event_date". È lenta quando ci sono molti eventi. Come posso ottimizzarla?
[...incolla gli argomenti di WP_Query...]

E l’intelligenza artificiale potrebbe rispondere con:

  • Un promemoria che ricorda che meta_query non è indicizzato, quindi eseguire una query su grandi set di dati sarà sempre costoso.
  • Un suggerimento per evitare di utilizzare orderby => 'meta_value' se possibile.
  • Il consiglio di memorizzare una data normalizzata in una colonna personalizzata del DB o in una tassonomia per migliorare le prestazioni.
  • Potrebbe anche suggerire di riscrivere la logica per utilizzare gli hook di pre_query per modificare direttamente l’SQL.

Analizzare e rifattorizzare l’SQL grezzo

A volte si vuole evitare del tutto WP_Query, magari per i report, le statistiche o la logica dei plugin. Abbiamo scritto una query grezza SELECT che unisce wp_posts e wp_postmeta, ma è lenta o restituisce risultati duplicati.

Possiamo utilizzare un prompt come:

Questa query SQL è lenta. Puoi aiutarmi a ottimizzarla?
SELECT p.ID, p.post_title, m.meta_value 
FROM wp_posts p 
JOIN wp_postmeta m ON p.ID = m.post_id 
WHERE m.meta_key = 'event_date' 
AND m.meta_value >= CURDATE() 
AND p.post_type = 'event' 
AND p.post_status = 'publish'

Spiegare cosa fa una query

Se viene consegnato del codice di un vecchio plugin o di un tema che esegue una grossa query SQL (e nessuno sa cosa fa), possiamo inserirlo in ChatGPT o Claude e chiedere:

Spiega cosa fa questa query SQL di WordPress e dimmi se può essere resa più efficiente:
[...query...]

L’intelligenza artificiale spiegherà tutto:

  • Quali tabelle vengono unite e perché.
  • Cosa filtra ogni clausola di WHERE.
  • Se una parte della query è ridondante.
  • Se le clausole LIMIT, ORDER BY o GROUP BY rappresentano un problema.

Spiegherà anche le cose negative come SELECT *, le unioni cartesiane o le regex inefficienti nelle clausole LIKE.

5. Generare test unit/integration (PHPUnit) per i plugin

Scrivere test per il codice di WordPress non è sempre semplice. L’avvio dell’ambiente di testing di WP, il mocking delle funzioni principali e la comprensione di ciò che deve essere testato possono essere molto complessi.

Gli strumenti di intelligenza artificiale sono bravi a scrivere casi di test, soprattutto se gli forniamo una funzione o una classe e gli chiediamo di testare un comportamento specifico.

Supponiamo di aver scritto una funzione che crea un post personalizzato e salva alcuni metadati associati. Vogliamo verificare che:

  • Crei il post con successo.
  • Assegni il tipo di post corretto.
  • Salvi correttamente i meta-campi.

Il seguente prompt può fare al caso nostro:

Scrivi i test PHPUnit per questa funzione. Crea un tipo di post personalizzato "Event" e salva i meta-campi "event_date" e "event_location":
[...incolla funzione...]

Se abbiamo un plugin che salva le impostazioni tramite admin-post.php, possiamo testare anche questo. Basta inserire la funzione di gestione del modulo nell’IA e chiedere:

Scrivi i test PHPUnit per questa funzione che gestisce l'invio del modulo delle impostazioni del plugin. Salva un'opzione basata sui dati POST e controlla un nonce.

Se il plugin registra percorsi API REST personalizzati, i test manuali sono lenti e soggetti a errori. Gli strumenti di IA possono anche aiutarci a creare test che utilizzano direttamente wp_remote_get() o rest_do_request():

Scrivi un test PHPUnit che invii una richiesta GET alla mia route REST personalizzata `/wp-json/my-plugin/v1/data` e verifica la presenza di una risposta 200 e di un output JSON valido.

Anche i test di base possono individuare i problemi in anticipo. Quando l’intelligenza artificiale si occupa del boilerplate, possiamo concentrarci sulla logica dei test e non sulla configurazione. Non dobbiamo essere dei puristi del TDD. Basta chiedere: “Cosa devo testare in questa funzione?” … e ci verranno in mente idee che probabilmente avevamo trascurato. In questo modo il testing diventa meno un lavoro di routine e più un’estensione dello sviluppo.

6. Rifattorizzare o tradurre il vecchio codice

Se lavoriamo con WordPress da più di qualche anno, probabilmente avremo toccato un po’ di codice jQuery: script inline, variabili globali ovunque, strani problemi di timing, forse anche $(document).ready() sepolto nei file PHP.

Il problema è che WordPress è andato avanti. Gutenberg utilizza React, i temi sono basati sui blocchi e persino le interfacce di amministrazione godono di un JS moderno. Il refactoring di jQuery in JavaScript pulito e modulare (o anche in React, dove ha più senso) può essere doloroso, a meno che non si utilizzi l’intelligenza artificiale per snellire il processo.

Supponiamo di avere del codice vecchio stile come questo:

jQuery(document).ready(function($) {
  $('#open-modal').on('click', function() {
    $('#my-modal').fadeIn();
  });

  $('.close-modal').on('click', function() {
    $('#my-modal').fadeOut();
  });
});

E vogliamo convertirlo in un JS moderno e privo di dipendenze. Basta chiedere:

Converti questo codice jQuery in un moderno vanilla JavaScript, utilizzando addEventListener e il toggling della classe al posto di fadeIn/fadeOut:
[...incolla codice...]

Claude o ChatGPT risponderanno:

document.addEventListener('DOMContentLoaded', function() {
  document.getElementById('open-modal').addEventListener('click', function() {
    document.getElementById('my-modal').classList.add('visible');
  });

  document.querySelectorAll('.close-modal').forEach(function(btn) {
    btn.addEventListener('click', function() {
      document.getElementById('my-modal').classList.remove('visible');
    });
  });
});

Di solito consiglia di aggiungere stili come:

#my-modal {
  display: none;
}
#my-modal.visible {
  display: block;
}

Questo rende il codice più facile da mantenere, si carica più velocemente e non richiede jQuery sul frontend.

Inoltre, supponiamo che di star costruendo o aggiornando un blocco Gutenberg e che il vecchio JS utilizzi jQuery per iniettare dinamicamente il markup. Vogliamo che questa logica venga spostata in React in modo che possa vivere correttamente all’interno di edit().

Il seguente suggerimento potrebbe funzionare:

Traduci questo codice jQuery che aggiunge una div con i dati del post in un componente React per un blocco Gutenberg:
[...incolla codice jQuery...]

Se il codice utilizza le API di WordPress, come wp.apiFetch, l’IA sa come integrare anche questo, spesso suggerendo modelli asincroni migliori o gestendo gli errori in modo più accurato rispetto al codice legacy.

Infine, supponiamo di avere a che fare con un plugin che ha 300 righe di JavaScript procedurale scaricate in un unico tag <script>. L’intelligenza artificiale può aiutarci a suddividerlo in parti logiche utilizzando un prompt come:

Suddividi il codice JavaScript in funzioni riutilizzabili e in aree separate. Metti l'impostazione del DOM, i gestori di eventi e la logica dei dati nelle loro funzioni:
[...incolla codice...]

7. Rendere più semplici l’hosting e il DevOps

Lo sviluppo di WordPress non si ferma alla scrittura del codice, ma comprende tutto ciò che riguarda la distribuzione, gli aggiornamenti, le prestazioni e la configurazione dell’hosting. Se gestiamo i nostri siti su una piattaforma come Kinsta, gli strumenti di IA possono aiutarci a muoverci più velocemente e a fare meno errori anche a questo livello operativo.

Ad esempio, se riceviamo un errore criptico dai log degli errori PHP di Kinsta o dallo strumento APM, possiamo incollarlo in ChatGPT e chiedere:

Questo errore proviene dai log PHP di Kinsta. Mi spieghi cosa significa e come risolverlo?

Ci aiuterà a decodificare gli errori fatali, i problemi di memoria e i conflitti tra i plugin in modo più rapido rispetto alla consultazione della documentazione o di Stack Overflow.

Se una parte della documentazione di Kinsta, il README di un plugin o una regola di .htaccess non ha senso, possiamo inserirla in Claude dicendogli:

Spiegami questa parte come se fossi uno sviluppatore ma non avessi familiarità con la configurazione del server.

Gli strumenti di IA possono anche aiutarci a generare o rivedere i flussi di lavoro CI/CD basati su Git, come GitHub Actions, GitLab CI o Bitbucket Pipelines che distribuiscono temi, sincronizzano file o eseguono migrazioni di database via SSH su Kinsta. Basta un prompt:

Scrivi un flusso di lavoro GitHub Actions che distribuisca il mio tema WordPress su un server Kinsta tramite SSH dopo aver effettuato il push sul branch principale.

In breve, l’intelligenza artificiale diventa uno strato che si frappone tra noi e le attività più impegnative e complesse dell’hosting o del DevOps, come la lettura dei log, lo scripting delle implementazioni o la lettura della documentazione.

Detto questo, la gestione di problemi di hosting come problemi di prestazioni, errori e configurazione del server richiede ancora una vera e propria esperienza. Quando qualcosa si rompe, diventa frustrante, impegnativo e costoso per la nostra azienda. Ecco perché Kinsta offre supporto 24/7/365 in 10 lingue da parte di ingegneri esperti pronti ad aiutare a risolvere i problemi del server WordPress in modo amichevole attraverso interazioni umane.

Riepilogo

L’intelligenza artificiale non è qui per sostituire gli sviluppatori WordPress: è qui per renderci più veloci e aiutarci a creare codice più pulito e meno incline a errori.

La chiave è trattare l’IA come un giovane sviluppatore, non come una bacchetta magica. Non dobbiamo aspettarci che faccia tutto in un’unica soluzione. Dobbiamo suddividere il lavoro in fasi, esaminare ciò che dà e costruire strato per strato. In questo modo manterremo il controllo e otterremo tutti i vantaggi che l’intelligenza artificiale ha da offrire.

Sviluppo plugin personalizzati, ottimizzazione delle prestazioni, implementazione di siti su scala, qualunque sia l’attività in cui siamo impegnati, Kinsta offre la velocità, gli strumenti e il supporto esperto di cui c’è bisogno.

Joel Olawanle Kinsta

Joel è uno Frontend developer che lavora in Kinsta come redattore tecnico. È un insegnante appassionato che ama l'open source e ha scritto oltre 200 articoli tecnici principalmente su JavaScript e i suoi framework.