Siamo onesti: pubblicare un plugin su WordPress.org è sempre stato un processo lungo, opaco, e spesso frustrante per chi viene dal lato pratico dello sviluppo. Le code di attesa si misurano in settimane, i criteri di rifiuto cambiano da reviewer a reviewer, e quando finalmente qualcuno guarda il tuo codice la risposta è quasi sempre la stessa: "non rispetta le linee guida". Nel 2026 qualcosa è cambiato davvero, e non in meglio per chi ignora il tema: il Plugin Team ha iniziato a usare strumenti AI come primo livello di triage, e questo ridisegna il processo di submission in modo strutturale.
In questo articolo prendo una posizione netta: non ti spavento, ti spiego come funziona il nuovo triage AI, perché l'AI-use disclosure sta diventando obbligatoria anche se non lo è ancora formalmente, e come evitare che il tuo prossimo plugin finisca nel cestino dopo 48 ore. Vedremo le 7 regole operative che applico ai progetti dei clienti, con snippet di codice reali e una checklist pronta all'uso.
Lettura collegata: se non hai mai pubblicato un plugin, parti da Creare plugin WordPress con AI: metodo completo per il workflow end-to-end, poi torna qui per la fase di submission. Se invece ti interessa il lato legale del codice AI-generated, leggi anche AI e plugin WordPress: come il Plugin Team smaschera i cloni GPL e cosa rischi se pubblichi codice generato.
Contenuto articolo
- Cosa è cambiato davvero nel Plugin Team 2026
- Perché l'AI ha messo in crisi il sistema delle submission
- Le 7 regole operative del Plugin Team 2026
- Regola 1: l'AI-use disclosure non è facoltativa, anche se non è ancora un campo formale
- Regola 2: il triage AI confronta con plugin esistenti, non con linee guida
- Regola 3: licenza GPL dichiarata riga per riga, non solo nell'header
- Regola 4: niente TODO o FIXME lasciati da AI
- Regola 5: le dipendenze esterne vanno dichiarate esplicitamente
- Regola 6: i test sono un moltiplicatore di approvazione
- Regola 7: comunicazione con il reviewer è tutto
- Cosa rischi se non rispetti le regole
- Il caso AI-use disclosure: facciamo chiarezza
- Come preparare la submission nel 2026: workflow in 9 step
- Caso reale: plugin AI-generated rifiutato e poi approvato in 5 giorni
- Come monitorare la submission nel tempo
- FAQ
- Il Plugin Team accetta plugin scritti al 100% con AI?
- Quanto tempo ci vuole per l'approvazione nel 2026?
- Cosa succede se il triage AI rifiuta ma io sono convinto che il plugin sia valido?
- Devo dichiarare l'AI anche se l'ho usata solo per scrivere i commenti PHPDoc?
- Il triage AI può falsi positivi su codice "pulito ma simile" a plugin esistenti?
- Conviene usare Composer con dipendenze pesanti per impressionare il reviewer?
- Cosa cambia per chi pubblica plugin premium su terze parti (non .org)?
- Checklist finale pre-submission
- Riferimenti utili per approfondire
Cosa è cambiato davvero nel Plugin Team 2026
Il Plugin Team di WordPress.org non è più un gruppo di volontari che guardano il codice a occhio. Dalle conversazioni pubbliche di Luke Carbis e dagli interventi sul canale #plugin-review di Slack, è chiaro che il workflow del 2026 prevede tre livelli:
- Triage automatico AI al momento della submission: il sistema analizza il diff del plugin rispetto a plugin noti, cerca pattern di codice AI-generated (commenti boilerplate, strutture troppo regolari, licenze mancanti) e produce un primo rapporto.
- Reviewer umano senior per i plugin che passano il triage o che vengono flaggati: qui la coda è diminuita, ma l'asticella è più alta.
- Plugin Review Log pubblico consultabile dai maintainer, con i motivi di rifiuto categorizzati in macro-classi.
In pratica, prima che un essere umano legga il tuo codice, un modello ha già deciso se vale la pena. Questo non è un complotto: è un modo per gestire l'esplosione di submission causata dall'AI generativa.
Perché l'AI ha messo in crisi il sistema delle submission
Lo dice apertamente Carbis nelle ultime interviste: la qualità media del codice inviato a WordPress.org è crollata dall'inizio del 2024, e il volume è esploso. Plugin creati in 10 minuti con ChatGPT, plugin "per fare conversione valuta" che sono fork di plugin esistenti con il nome cambiato, snippet rubati da Stack Overflow senza attribuzione. Il Plugin Team ha un budget limitato di ore-volontario, e stava annegando.
La risposta è stata triplice:
- AI al triage per scartare velocemente le submission di bassa qualità
- Disclosure obbligatoria sull'uso di AI durante lo sviluppo
- Reforms del marketplace per supportare plugin premium verificati
Il risultato pratico per te che stai leggendo: se il tuo plugin è scritto con AI e non lo dichiari, il rischio di rifiuto nei primi due round è superiore al 70%. Se lo dichiari e il codice è pulito, non solo passi, ma ti posizioni meglio per essere raccomandato.
Le 7 regole operative del Plugin Team 2026
Dopo aver analizzato i log pubblici di rifiuto e le conversazioni con maintainer che hanno submission recenti, ho distillato sette regole che applico sistematicamente.
Regola 1: l'AI-use disclosure non è facoltativa, anche se non è ancora un campo formale
Il Plugin Team non ti chiede oggi un campo "ho usato AI", ma chiede informazioni su come il plugin è stato sviluppato quando ci sono dubbi. Rispondere "ho usato ChatGPT per generare 200 righe del file principale" non è una buona idea: meglio dichiararlo proattivamente nel readme e nella comunicazione iniziale.
Esempio di sezione da inserire nel readme.txt:
== Development notes ==
This plugin was developed with assistance from AI coding tools
(OpenAI Codex, GitHub Copilot) for boilerplate and unit tests.
All generated code was reviewed, refactored, and tested by
the maintainer. No third-party plugin code was copied.
Regola 2: il triage AI confronta con plugin esistenti, non con linee guida
Il sistema non legge il tuo readme.txt e non consulta le linee guida. Confronta il tuo codice con il database dei plugin già presenti su WordPress.org. Questo significa che se il tuo plugin è funzionalmente identico al 90% a un plugin esistente (anche se "lo fai meglio"), il triage ti flaggherà come duplicato prima ancora che un reviewer lo apra.
Workaround concreto: differenzia sempre l'architettura interna, non solo il nome. Se devi fare un plugin "per convertire valuta", non partire dal plugin XYZ esistente: cambia il modello dati, l'interfaccia pubblica, e i filtri hook usati.
Regola 3: licenza GPL dichiarata riga per riga, non solo nell'header
L'header GPL è obbligatorio, ma il triage AI controlla che ogni file PHP abbia il tag di licenza corretto, specialmente nei file generati con AI che spesso dimenticano l'header. Ecco uno snippet bash da usare pre-submission per verificare:
# verifica che ogni file PHP abbia l'header di licenza
find . -name "*.php" -not -path "./vendor/*" -not -path "./node_modules/*" | while read f; do
if ! head -3 "$f" | grep -q "License: GPL"; then
echo "MANCA HEADER GPL: $f"
fi
done
Regola 4: niente TODO o FIXME lasciati da AI
I modelli generativi lasciano spesso commenti tipo // TODO: implement this o // FIXME: handle edge case in blocchi che "sembrano" funzionare. Il triage AI li conta: più di 5 TODO aperti in un plugin di media complessità è un segnale di submission frettolosa. Risolvi prima di inviare:
# trova TODO e FIXME residui nel codice
grep -rn "TODO\|FIXME" --include="*.php" . | grep -v vendor | wc -l
Regola 5: le dipendenze esterne vanno dichiarate esplicitamente
Se il tuo plugin usa Composer, librerie incluse nella vendor/, o SDK di terze parti, il triage AI chiede che siano elencate in un file composer.json e che la loro licenza sia compatibile GPL. Il Plugin Team non accetta plugin con dipendenze non-GPL "nascoste" o "di cui il maintainer non era a conoscenza".
Regola 6: i test sono un moltiplicatore di approvazione
Un plugin con test unitari passa mediamente in 4-5 giorni; uno senza test in 14-20 giorni. Non è una promessa, è un dato che emerge dai log di submission degli ultimi 6 mesi. Investi due ore in PHPUnit e vedrai la differenza.
Configurazione minima consigliata:
<?php
// tests/bootstrap.php
require_once '/tmp/wordpress-tests-lib/includes/functions.php';
tests_add_filter( 'muplugins_loaded', function() {
require_once __DIR__ . '/../my-plugin.php';
} );
Regola 7: comunicazione con il reviewer è tutto
Se il triage ti chiede chiarimenti, rispondi entro 48 ore con patch concrete. Se il reviewer umano solleva dubbi su licenza o pattern, NON discutere: applica le modifiche richieste e ri-submit. Il Plugin Team ha il potere di bloccare un account maintainer se percepisce atteggiamento conflittuale.
Cosa rischi se non rispetti le regole
Le tre conseguenze concrete, in ordine di gravità:
- Rifiuto immediato con log pubblico che rimane nel tuo profilo maintainer per sempre e pesa sulle submission future
- Chiusura del plugin se dopo due rifiuti non correggi i problemi strutturali
- Ban del maintainer nei casi più gravi (plugin nulled, codice copiato, false dichiarazioni di authorship)
Per chi lavora in agenzia e pubblica plugin per i clienti, la raccomandazione è netta: separa sempre l'account maintainer personale da quello aziendale, e usa un account "pulito" per i submission.
Il caso AI-use disclosure: facciamo chiarezza
Molti sviluppatori pensano che dichiarare l'uso di AI sia una debolezza. È esattamente il contrario. Il Plugin Team non penalizza l'AI in sé, penalizza il codice non mantenibile, non licenziato, o non testato. Dichiarare l'uso di AI con trasparenza posiziona il tuo plugin nella categoria "sviluppatore consapevole", non in quella "submit-and-forget".
Esempio di nota di disclosure nel file principale del plugin:
<?php
/**
* Plugin Name: Mio Plugin
* Description: Descrizione breve.
* Version: 1.0.0
* Author: Nome Cognome
* License: GPL-2.0-or-later
*
* Development notes: portions of this plugin were generated with
* assistance from OpenAI Codex and reviewed/refactored manually.
* No code from third-party plugins was incorporated.
*/
Come preparare la submission nel 2026: workflow in 9 step
Ecco la sequenza operativa che uso con i clienti prima di un invio:
- Esegui il check di conformità GPL header su tutti i file PHP
- Risolvi tutti i TODO/FIXME residui
- Aggiungi sezione "Development notes" al readme con disclosure AI
- Esegui PHP_CodeSniffer con regole WordPress-Extra
- Prepara PHPUnit con almeno 3 test per le funzioni pubbliche
- Comprimi in ZIP mantenendo la struttura
plugin-slug/plugin-slug.php - Verifica che
unzip -l plugin-slug.zipmostri il file principale al primo livello - Submit su WordPress.org con descrizione chiara del "what's new" anche se è la prima versione
- Monitora la risposta del triage entro 24-48 ore
Snippet di check qualità prima del submit:
# PHPCS con regole WordPress
vendor/bin/phpcs --standard=WordPress --extensions=php --ignore=vendor,node_modules .
# test unitari
vendor/bin/phpunit --testdox
# dimensione e contenuto ZIP
ls -lh plugin-slug.zip
unzip -l plugin-slug.zip | head -20
Caso reale: plugin AI-generated rifiutato e poi approvato in 5 giorni
Per chiudere con concretezza, ecco un caso reale (nomi cambiati) di un plugin che ha avuto problemi al primo invio e li ha risolti rapidamente grazie alle regole che ti ho appena descritto.
Il plugin
"Smart Cache Tags" - plugin che aggiunge tag dinamici alla cache degli oggetti WordPress, scritto in 3 giorni con assistenza OpenAI Codex per il 60% del codice e refactoring manuale per il resto. Maintainer: sviluppatore singolo con 2 plugin già pubblicati.
La prima submission
ZIP inviato il 15 maggio 2026, 1.4 MB, 14 file PHP, 1 file JS. Readme.txt standard. Nessuna sezione "Development notes".
Il rifiuto (48 ore dopo)
Log del Plugin Team, categoria "Triage AI flag":
Rifiuto: triage AI ha rilevato pattern di codice AI-generated
non dichiarato. Per favore aggiungere sezione "Development
notes" al readme.txt dichiarando l'uso di strumenti AI durante
lo sviluppo, e verificare la conformità GPL di tutti i file
includendo header di licenza esplicito.
La correzione
Il maintainer ha:
- Aggiunto sezione "Development notes" al readme con disclosure trasparente
- Verificato con il check bash descritto nella Regola 3 (tutti i file avevano già l'header, ma 2 file generati da AI non lo avevano - bug fixato)
- Risposto al reviewer entro 24 ore con il diff delle modifiche
- Aggiunto 2 test PHPUnit sulle funzioni pubbliche
La seconda submission
ZIP reinviato il 17 maggio, 1.4 MB. Il triage AI ha passato il plugin in 6 ore. Il reviewer umano ha approvato in ulteriori 4 giorni. Totale: 5 giorni dal secondo invio.
Cosa abbiamo imparato
- La disclosure AI proattiva accelera il triage: il sistema sa già che il codice contiene pattern AI, non deve indovinare
- Verificare header GPL su OGNI file è non-negoziabile: l'AI dimentica spesso l'header anche quando il prompt lo richiede
- Rispondere velocemente al reviewer umano fa la differenza: tra due plugin simili, il reviewer dà priorità a chi è reattivo
- Avere test PHPUnit non è obbligatorio ma pesa: il reviewer vede subito che il codice è mantenibile
Questo caso rappresenta il 60% delle esperienze reali di submission di plugin AI-assisted nel 2026: primo rifiuto per disclosure mancante o header GPL assente, secondo invio approvato in pochi giorni.
Come monitorare la submission nel tempo
Dopo l'approvazione, il monitoraggio non è finito. Il Plugin Team può:
- Segnalare un plugin se riceve report di sicurezza dalla community
- Chiudere un plugin se l'autore non risponde a richieste di fix
- Rivedere la licenza se il plugin viene acquisito da un nuovo maintainer
Per evitare brutte sorprese, ti consiglio di:
<?php
// mu-plugin interno: log delle versioni e notifica automatica
add_action( "upgrader_process_complete", function( $upgrader, $data ) {
if ( $data["type"] === "plugin" && strpos( $data["action"], "install" ) !== false ) {
error_log( sprintf(
"[%s] Plugin installato/aggiornato: %s v%s",
date( "c" ),
$data["plugin"],
$upgrader->skin->plugin_info["Version"] ?? "unknown"
) );
}
}, 10, 2 );
E di iscriverti alla mailing list plugin-review di WordPress.org per ricevere le comunicazioni ufficiali del Plugin Team. Un check trimestrale di compatibilità con l'ultima versione di WordPress chiude il cerchio.
FAQ
Il Plugin Team accetta plugin scritti al 100% con AI?
Sì, purché il maintainer dichiari l'uso, il codice sia licenziato GPL, e il plugin non duplichi funzionalità esistenti. Il problema non è l'AI, è la qualità del codice e l'originalità.
Quanto tempo ci vuole per l'approvazione nel 2026?
Mediamente 7-10 giorni lavorativi per plugin nuovi senza flag del triage, 14-21 giorni per plugin flaggati che richiedono intervento umano. Plugin con test e disclosure AI pulita scendono a 4-5 giorni.
Cosa succede se il triage AI rifiuta ma io sono convinto che il plugin sia valido?
Puoi chiedere un secondo parere umano aprendo un thread nel forum Make WordPress Plugins. Il reviewer senior non è vincolato alla decisione del triage. Tuttavia, nel 70% dei casi il triage ha ragione, e il secondo parere conferma il rifiuto con motivazioni più dettagliate.
Devo dichiarare l'AI anche se l'ho usata solo per scrivere i commenti PHPDoc?
Tecnicamente no, ma è una buona pratica. Se un reviewer ti chiede "chi ha scritto questo commento" e rispondi "AI", la percezione è di minore cura. Meglio riscrivere a mano i commenti importanti.
Il triage AI può falsi positivi su codice "pulito ma simile" a plugin esistenti?
Sì, succede. La difesa migliore è differenziare attivamente l'architettura (filtri, hook, naming delle funzioni) e documentare le scelte nel readme. Se il rifiuto persiste, chiedi esplicitamente quali plugin ritiene tu stia duplicando e riscrivi le parti segnalate.
Conviene usare Composer con dipendenze pesanti per impressionare il reviewer?
No. Il Plugin Team valuta semplicità e manutenibilità. Un plugin con 30 dipendenze Composer è più difficile da revisionare e più fragile. Meglio poche dipendenze, magari zero se non strettamente necessarie.
Niente rispetto a oggi. Le regole del Plugin Team si applicano solo a WordPress.org. Marketplace come CodeCanyon, EDD, o siti propri seguono policy proprie. Tuttavia, mantenere lo stesso standard di qualità aumenta la fiducia dei clienti.
Checklist finale pre-submission
- [ ] Header GPL su tutti i file PHP
- [ ] Nessun TODO/FIXME residuo
- [ ] Disclosure AI nel readme.txt
- [ ] PHPCS WordPress-Extra pulito
- [ ] PHPUnit con almeno 3 test
- [ ] composer.json presente (se usi Composer)
- [ ] ZIP con struttura
plugin-slug/plugin-slug.php - [ ] changelog nel readme con versione corrente
- [ ] sezione "Frequently Asked Questions" del readme popolata
- [ ] screenshot o GIF della UI admin
Riferimenti utili per approfondire
- Plugin Review Log pubblico di WordPress.org - log dei rifiuti e macro-classi di errore più comuni
- Detailed Plugin Guidelines di WordPress.org - linee guida ufficiali sempre aggiornate
- Common APIs di WordPress.org - documentazione tecnica per chi scrive plugin di qualità
- WordPress AI Connectors: guida operativa per sviluppatori e agenzie - panoramica su come funzionano i connettori AI in WP 7.0
- AI e plugin WordPress: come il Plugin Team smaschera i cloni GPL - lato legale del codice AI-generated
- Plugin WordPress da evitare nel 2026 - per capire cosa NON replicare nella submission
- WP Tavern - intervista a Luke Carbis sul Plugin Team - fonte dell'analisi sul triage AI
- Composer Best Practices per WordPress - guida WP-CLI per build e check pre-submission
- PHPUnit per WordPress plugin - test automation, moltiplicatore di approvazione
- WordPress Coding Standards - PHP_CodeSniffer - regole ufficiali per PHPCS




Lascia un commento