<?xml version="1.0" encoding="UTF-8"?><rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>AI WordPress - Web Design | Creazione Siti Internet</title>
	<atom:link href="https://www.mrtux.it/tag/ai-wordpress/feed" rel="self" type="application/rss+xml" />
	<link>https://www.mrtux.it</link>
	<description>Sviluppo Siti Web - Assistenza WordPress</description>
	<lastBuildDate>Sun, 14 Jun 2026 12:04:01 +0000</lastBuildDate>
	<language>it-IT</language>
	<sy:updatePeriod>
	hourly	</sy:updatePeriod>
	<sy:updateFrequency>
	1	</sy:updateFrequency>
	<generator>https://wordpress.org/?v=7.0.1</generator>

<image>
	<url>https://www.mrtux.it/wp-content/uploads/2022/06/favicon-150x150.png</url>
	<title>AI WordPress - Web Design | Creazione Siti Internet</title>
	<link>https://www.mrtux.it</link>
	<width>32</width>
	<height>32</height>
</image> 
	<item>
		<title>AI e accessibilità WordPress: framework a 3 livelli per andare oltre l&#039;alt-text automatico</title>
		<link>https://www.mrtux.it/ai-accessibilita-wordpress-framework-3-livelli</link>
					<comments>https://www.mrtux.it/ai-accessibilita-wordpress-framework-3-livelli#respond</comments>
		
		<dc:creator><![CDATA[Emilio Petrozzi]]></dc:creator>
		<pubDate>Sun, 14 Jun 2026 12:03:59 +0000</pubDate>
				<category><![CDATA[sviluppo-web]]></category>
		<category><![CDATA[accessibilità web]]></category>
		<category><![CDATA[AI WordPress]]></category>
		<category><![CDATA[alt text automatico]]></category>
		<category><![CDATA[inclusività]]></category>
		<category><![CDATA[screen reader]]></category>
		<category><![CDATA[Sviluppo WordPress]]></category>
		<category><![CDATA[WCAG 2.2]]></category>
		<guid isPermaLink="false">https://www.mrtux.it/ai-e-accessibilita-wordpress-framework-a-3-livelli-per-andare-oltre-lalt-text-automatico</guid>

					<description><![CDATA[L'AI può generare alt-text, ma l'accessibilità vera richiede molto di più. Ecco un framework a 3 livelli (percepire, descrivere, interagire) con audit WCAG 2.2, test screen reader, e i rischi concreti delle descrizioni generate automaticamente.]]></description>
										<content:encoded><![CDATA[
<p class="wp-block-paragraph">Quando il CEO di Equalize Digital, Amber Hinds, è stata ospite del podcast Press This di Torque Magazine per parlare del rapporto tra AI e accessibilità web, la sua posizione era netta: &quot;L&#x27;AI può essere un assistente potente, ma non può sostituire un audit umano di accessibilità. Il rischio più grande è che i team tecnici pensino di aver risolto il problema installando un plugin che genera alt-text automatico, mentre in realtà hanno solo spostato il problema&quot;. È un avvertimento che merita di essere preso sul serio, soprattutto in un ecosistema come WordPress dove l&#x27;AI è stata integrata a ogni livello: editor, plugin SEO, page builder, generatori di immagini.</p>



<p class="wp-block-paragraph">Questo articolo propone un <strong>framework a 3 livelli</strong> (percepire, descrivere, interagire) per usare l&#x27;AI in modo serio sull&#x27;accessibilità WordPress, distinguendo ciò che l&#x27;AI può fare davvero da ciò che rischia di far peggio. È complementare alla <a href="https://www.mrtux.it/wordpress-nel-2026-perche-lo-usano-8-siti-su-10" data-wpel-link="internal" target="_self" rel="noopener">panoramica su WordPress 7.0</a> per la parte tecnica del core, e al <a href="https://www.mrtux.it/creare-plugin-wordpress-con-ai-metodo-completo" data-wpel-link="internal" target="_self" rel="noopener">metodo per creare plugin con AI</a> per la parte di sviluppo.</p>



<h2 class="wp-block-heading">Il problema dell&#x27;alt-text automatico: ciò che nessuno dice</h2>



<p class="wp-block-paragraph">L&#x27;alt-text (testo alternativo delle immagini) è il punto di partenza dell&#x27;accessibilità visiva, e il primo in cui la maggior parte dei team si è cimentata con l&#x27;AI. Plugin come AltText.ai, Image SEO, e le funzioni integrate in Jetpack AI e Rank Math Content AI generano descrizioni automatiche per le immagini. Sembra una soluzione perfetta. Non lo è.</p>



<h3 class="wp-block-heading">Il caso studio: l&#x27;allucinazione in un sito di e-commerce</h3>



<p class="wp-block-paragraph">Un negozio online di arredamento ha attivato un plugin AI per generare automaticamente gli alt-text delle immagini dei prodotti. Risultato: per una foto di un divano grigio a tre posti, l&#x27;alt-text generato è stato &quot;moderno divano a tre posti in tessuto grigio con cuscini rimovibili&quot;. Tecnicamente corretto, ma l&#x27;allucinazione è arrivata su un dettaglio: l&#x27;AI ha scritto &quot;cuscini rimovibili&quot;, che non era una caratteristica verificata del prodotto. Un utente non vedente che avesse fatto affidamento sull&#x27;alt-text per decidere l&#x27;acquisto avrebbe avuto informazioni errate.</p>



<p class="wp-block-paragraph">Questo è il cuore del problema: l&#x27;AI generativa non distingue tra descrivere ciò che vede e <strong>inventare</strong> dettagli. Per un&#x27;alt-text l&#x27;informazione deve essere verificabile, non plausibile.</p>



<h3 class="wp-block-heading">Cosa dice la WCAG 2.2 sugli alt-text</h3>



<p class="wp-block-paragraph">Le <strong>Web Content Accessibility Guidelines 2.2</strong> (raccomandazione W3C, in vigore dal 5 ottobre 2023) sono esplicite. Per il criterio 1.1.1 (Non-text Content):</p>



<ul class="wp-block-list"><li>L&#x27;alt-text deve essere <strong>funzionalmente equivalente</strong> al contenuto visivo</li><li>Deve servire lo stesso scopo dell&#x27;immagine</li><li>Non deve includere informazioni non presenti nell&#x27;immagine stessa</li><li>Per immagini decorative, l&#x27;alt deve essere vuoto (alt=&quot;&quot;)</li><li>Per immagini complesse (grafici, diagrammi), serve una descrizione lunga oltre all&#x27;alt</li></ul>



<p class="wp-block-paragraph">Un&#x27;alt-text generata da AI che aggiunge dettagli non verificabili <strong>viola</strong> la WCAG 2.2, anche se &quot;sembra&quot; corretta. Il problema è che il controllo è quasi impossibile da fare in automatico: serve un umano che conosce l&#x27;immagine e la confronta con la descrizione.</p>



<h2 class="wp-block-heading">Il framework a 3 livelli: percepire, descrivere, interagire</h2>



<p class="wp-block-paragraph">L&#x27;accessibilità AI-assisted non è un singolo compito, è una pipeline. Ecco un framework operativo che ho usato con diverse agenzie e che si è dimostrato robusto.</p>



<h3 class="wp-block-heading">Livello 1: PERCEPIRE — rendere il contenuto leggibile dalle tecnologie assistive</h3>



<p class="wp-block-paragraph">Questo è il livello &quot;tecnico&quot; dell&#x27;accessibilità: assicurarsi che screen reader, browser con sintesi vocale, e tecnologie assistive possano effettivamente <strong>leggere</strong> il contenuto della pagina.</p>



<p class="wp-block-paragraph">L&#x27;AI può aiutare in tre modi.</p>



<p class="wp-block-paragraph"><strong>1.1 Generazione di alt-text verificabili.</strong></p>



<p class="wp-block-paragraph">Non &quot;descrivi l&#x27;immagine&quot;, ma &quot;elenca solo gli elementi visibili, senza inferire funzioni o dettagli non presenti&quot;. Il prompt conta più del modello.</p>



<pre class="wp-block-code"><code>/**
 * Funzione per generare alt-text "sicuro" con un prompt strutturato
 */
function a11y_generate_alt_text( $attachment_id ) {
    $image_url  = wp_get_attachment_url( $attachment_id );
    $alt_manual = get_post_meta( $attachment_id, '_wp_attachment_image_alt', true );

    // Se esiste già un alt-text manuale, non sovrascriverlo
    if ( ! empty( $alt_manual ) ) {
        return $alt_manual;
    }

    $response = wp_ai_request( [
        'connector' =&gt; 'openai',
        'model'     =&gt; 'gpt-4o-mini',
        'messages'  =&gt; [
            [
                'role'    =&gt; 'system',
                'content' =&gt; 'Sei un assistente specializzato in accessibilità web. '
                           . 'Descrivi SOLO gli elementi visibili nell\'immagine. '
                           . 'Non inferire funzioni, scopi, o dettagli non visibili. '
                           . 'Se l\'immagine è decorativa, rispondi esattamente: DECORATIVE. '
                           . 'Massimo 125 caratteri. Lingua: italiano.',
            ],
            [
                'role'    =&gt; 'user',
                'content' =&gt; '[Immagine allegata: ' . $image_url . ']',
            ],
        ],
        'max_tokens' =&gt; 80,
    ] );

    if ( is_wp_error( $response ) ) {
        return ''; // Fallback: nessun alt, da verificare manualmente
    }

    $alt = trim( $response['choices'][0]['message']['content'] ?? '' );

    // Se l'AI dice "decorativa", l'alt deve essere vuoto
    if ( strtoupper( $alt ) === 'DECORATIVE' ) {
        return '';
    }

    // Salva il draft per review umana (non pubblicare direttamente)
    update_post_meta( $attachment_id, '_a11y_alt_draft', $alt );

    return ''; // Vuoto finché l'umano non approva
}</code></pre>



<p class="wp-block-paragraph">Nota critica: l&#x27;alt-text generato non viene pubblicato direttamente. Va in un draft meta che richiede approvazione umana. È il pattern più sicuro.</p>



<p class="wp-block-paragraph"><strong>1.2 Audit semantico dell&#x27;HTML generato.</strong></p>



<p class="wp-block-paragraph">WordPress 7.0 produce HTML strutturato per i blocchi, ma i page builder (Elementor, Divi, Bricks) e i custom post type possono generare markup non semantico. Un&#x27;AI può scansionare il DOM della pagina e segnalare pattern problematici.</p>



<pre class="wp-block-code"><code>/**
 * Aggiunge un check accessibilità al content saving
 */
add_action( 'save_post', function( $post_id ) {
    if ( wp_is_post_revision( $post_id ) ) {
        return;
    }

    $content = get_post_field( 'post_content', $post_id );
    $issues  = [];

    // Check 1: heading hierarchy
    preg_match_all( '/&lt;h([1-6])[^&gt;]*&gt;/i', $content, $headings );
    $levels = array_map( 'intval', $headings[1] ?? [] );
    if ( ! empty( $levels ) ) {
        for ( $i = 1; $i &lt; count( $levels ); $i++ ) {
            if ( $levels[ $i ] - $levels[ $i - 1 ] &gt; 1 ) {
                $issues[] = "Salto di heading: h{$levels[$i-1]} → h{$levels[$i]}";
            }
        }
    }

    // Check 2: link testuali
    if ( preg_match( '/&lt;a[^&gt;]*&gt;\s*(clicca qui|leggi di più|qui)\s*&lt;\/a&gt;/i', $content ) ) {
        $issues[] = 'Link con testo generico ("clicca qui", "leggi di più")';
    }

    // Check 3: tabelle senza th
    if ( preg_match( '/&lt;table[^&gt;]*&gt;(?!.*?&lt;th)/is', $content ) ) {
        $issues[] = 'Tabella senza intestazioni &lt;th&gt;';
    }

    if ( ! empty( $issues ) ) {
        update_post_meta( $post_id, '_a11y_issues', $issues );
    }
} );</code></pre>



<p class="wp-block-paragraph"><strong>1.3 Generazione di transcript automatici per audio/video.</strong></p>



<p class="wp-block-paragraph">L&#x27;AI di speech-to-text (Whisper, AssemblyAI) può generare transcript per podcast e video embed. I transcript devono poi essere corretti da un umano (la precisione di Whisper è 85-95% su italiano, ma basta un errore per颠覆are un significato).</p>



<h3 class="wp-block-heading">Livello 2: DESCRIVERE — rendere il contenuto comprensibile</h3>



<p class="wp-block-paragraph">Questo è il livello &quot;cognitivo&quot; dell&#x27;accessibilità: assicurarsi che il contenuto sia comprensibile da persone con diverse capacità cognitive, linguistiche, e culturali.</p>



<p class="wp-block-paragraph"><strong>2.1 Semplificazione del linguaggio.</strong></p>



<p class="wp-block-paragraph">L&#x27;AI può riscrivere testi complessi in linguaggio semplice, applicando le linee guida <strong>Easy-to-Read</strong> (ETR) europee o <strong>Plain Language</strong> americane. Utile per siti della PA, sanità, servizi finanziari.</p>



<pre class="wp-block-code"><code>/**
 * Genera una versione semplificata del post
 */
function a11y_simplify_post( $post_id ) {
    $post = get_post( $post_id );
    if ( ! $post ) {
        return;
    }

    $response = wp_ai_request( [
        'connector' =&gt; 'claude',
        'model'     =&gt; 'claude-3-5-sonnet',
        'messages'  =&gt; [
            [
                'role'    =&gt; 'system',
                'content' =&gt; 'Riscrivi il seguente testo in italiano semplice (Easy-to-Read). '
                           . 'Frasi brevi (max 15 parole). Parole di uso quotidiano. '
                           . 'Mantieni il significato, non aggiungere informazioni.',
            ],
            [
                'role'    =&gt; 'user',
                'content' =&gt; wp_strip_all_tags( $post-&gt;post_content ),
            ],
        ],
        'max_tokens' =&gt; 2000,
    ] );

    if ( is_wp_error( $response ) ) {
        return;
    }

    $simplified = $response['choices'][0]['message']['content'] ?? '';
    update_post_meta( $post_id, '_a11y_simplified', $simplified );
}</code></pre>



<p class="wp-block-paragraph"><strong>2.2 Espansione di acronimi e termini tecnici.</strong></p>



<p class="wp-block-paragraph">Un altro uso utile: passare il testo all&#x27;AI e ottenere un glossario automatico di termini tecnici con definizioni espanse, da linkare o visualizzare in un tooltip.</p>



<p class="wp-block-paragraph"><strong>2.3 Riassunti esecutivi per contenuti lunghi.</strong></p>



<p class="wp-block-paragraph">Per articoli o documenti di oltre 1.500 parole, un riassunto di 3-5 frasi aiuta utenti con dislessia, ADHD, o barriere cognitive a orientarsi prima di leggere.</p>



<h3 class="wp-block-heading">Livello 3: INTERAGIRE — rendere il contenuto navigabile</h3>



<p class="wp-block-paragraph">Questo è il livello &quot;interattivo&quot; dell&#x27;accessibilità: assicurarsi che le funzionalità della pagina (menu, form, pulsanti) siano usabili da tutti.</p>



<p class="wp-block-paragraph"><strong>3.1 Generazione di label per form fields.</strong></p>



<p class="wp-block-paragraph">Molti form creati con CF7, WPForms, o Gravity Forms hanno label generiche (&quot;Nome&quot;, &quot;Email&quot;) quando servirebbero label contestuali (&quot;Nome completo per la fatturazione&quot;, &quot;Email aziendale&quot;).</p>



<pre class="wp-block-code"><code>/**
 * Analizza i form CF7 e suggerisce label migliori
 */
function a11y_audit_cf7_forms( $form_id ) {
    $form = get_post( $form_id );
    if ( ! $form || 'wpcf7_contact_form' !== $form-&gt;post_type ) {
        return [];
    }

    $response = wp_ai_request( [
        'connector' =&gt; 'openai',
        'model'     =&gt; 'gpt-4o-mini',
        'messages'  =&gt; [
            [
                'role'    =&gt; 'system',
                'content' =&gt; 'Sei un esperto di accessibilità web. Analizza il seguente form WordPress '
                           . 'e suggerisci label più chiare per ciascun campo, seguendo WCAG 2.2 criterio 3.3.2. '
                           . 'Rispondi in JSON con struttura [{"name":"...","label":"...","reason":"..."}].',
            ],
            [
                'role'    =&gt; 'user',
                'content' =&gt; $form-&gt;post_content,
            ],
        ],
        'max_tokens' =&gt; 1000,
    ] );

    if ( is_wp_error( $response ) ) {
        return [];
    }

    return json_decode( $response['choices'][0]['message']['content'] ?? '[]', true ) ?: [];
}</code></pre>



<p class="wp-block-paragraph"><strong>3.2 Audit dei contrasti colore.</strong></p>



<p class="wp-block-paragraph">L&#x27;AI può analizzare immagini del sito (via screenshot) e segnalare combinazioni di colori con contrasto insufficiente secondo WCAG 2.2 criterio 1.4.3 (rapporto minimo 4.5:1 per testo normale).</p>



<p class="wp-block-paragraph"><strong>3.3 Generazione di skip-links contestuali.</strong></p>



<p class="wp-block-paragraph">L&#x27;AI può analizzare la struttura della pagina e generare skip-links specifici: &quot;Salta al contenuto principale&quot;, &quot;Salta alla ricerca&quot;, &quot;Salta al form di contatto&quot;. Meglio dei generic skip-link predefiniti.</p>



<h2 class="wp-block-heading">Audit finale: cosa NON può fare l&#x27;AI</h2>



<p class="wp-block-paragraph">L&#x27;AI è un assistente, non un auditor. Ci sono cose che richiedono necessariamente l&#x27;umano.</p>



<h3 class="wp-block-heading">Test con screen reader reali</h3>



<p class="wp-block-paragraph">L&#x27;AI non può testare l&#x27;esperienza utente con NVDA, JAWS, VoiceOver, o TalkBack. Servono sessioni di test con utenti reali o tester esperti. Un&#x27;AI può simulare il comportamento di uno screen reader solo in modo approssimativo.</p>



<h3 class="wp-block-heading">Validazione del focus order</h3>



<p class="wp-block-paragraph">L&#x27;ordine del focus da tastiera deve essere logico e prevedibile. L&#x27;AI può suggerire un ordine, ma non può testarlo in modo affidabile: serve navigare la pagina con Tab e verificare che il focus si muova in modo sensato.</p>



<h3 class="wp-block-heading">Valutazione soggettiva dell&#x27;esperienza</h3>



<p class="wp-block-paragraph">Cosa si prova a usare il sito con una disabilità? L&#x27;AI non ha empatia. Può controllare checklist, non esperienze.</p>



<h3 class="wp-block-heading">Casi edge con tecnologie assistive specifiche</h3>



<p class="wp-block-paragraph">Switches per paralisi cerebrale, eye-tracking per SLA, screen reader in lingue non supportate bene dall&#x27;AI: sono contesti dove l&#x27;unica verifica valida è umana.</p>



<h2 class="wp-block-heading">La checklist operativa del framework</h2>



<p class="wp-block-paragraph">Per implementare il framework a 3 livelli su un sito WordPress in produzione, ecco una checklist concreta.</p>



<h3 class="wp-block-heading">Fase 1: setup iniziale (1-2 settimane)</h3>



<ul class="wp-block-list"><li>[ ] Audit manuale di accessibilità con axe DevTools o WAVE (rileva il 30-40% dei problemi)</li><li>[ ] Test con screen reader su 5-10 pagine campione</li><li>[ ] Definizione del livello WCAG target (AA è lo standard per la PA, AAA per sanità/scuola)</li><li>[ ] Scelta del provider AI per i task di accessibilità (Claude è particolarmente buono per il reasoning semantico)</li><li>[ ] Policy interna: &quot;tutti i contenuti AI-generated passano per review umana prima della pubblicazione&quot;</li></ul>



<h3 class="wp-block-heading">Fase 2: implementazione del livello 1 (percepire) — 2-3 settimane</h3>



<ul class="wp-block-list"><li>[ ] Plugin per alt-text AI con flusso di approvazione (vedi codice sopra)</li><li>[ ] Audit semantico HTML al salvataggio dei post (heading hierarchy, link testuali, tabelle)</li><li>[ ] Generazione transcript per audio/video embed</li><li>[ ] Verifica che il theme abbia skip-link e landmark roles corretti</li></ul>



<h3 class="wp-block-heading">Fase 3: implementazione del livello 2 (descrivere) — 3-4 settimane</h3>



<ul class="wp-block-list"><li>[ ] Versione semplificata (Easy-to-Read) per i contenuti chiave</li><li>[ ] Glossario automatico per termini tecnici</li><li>[ ] Riassunti esecutivi per articoli &gt; 1.500 parole</li><li>[ ] Multi-language con AI per contenuti istituzionali (attenzione: serve review umana per la qualità della traduzione)</li></ul>



<h3 class="wp-block-heading">Fase 4: implementazione del livello 3 (interagire) — 2-3 settimane</h3>



<ul class="wp-block-list"><li>[ ] Audit form con label contestuali</li><li>[ ] Skip-links dinamici per pagina</li><li>[ ] Validazione contrasti colore</li><li>[ ] Test navigazione da tastiera su tutti i flussi critici (acquisto, registrazione, contatto)</li></ul>



<h3 class="wp-block-heading">Fase 5: manutenzione continua</h3>



<ul class="wp-block-list"><li>[ ] Audit trimestrale con utenti reali (anche 3-5 utenti con disabilità diverse)</li><li>[ ] Review semestrale dei prompt AI usati (i modelli cambiano, i prompt vanno adattati)</li><li>[ ] Formazione del team editoriale sui principi base di accessibilità</li><li>[ ] Monitoraggio delle segnalazioni utente via form dedicato</li></ul>



<h2 class="wp-block-heading">Il caso reale: la PA di Bologna</h2>



<p class="wp-block-paragraph">Un esempio concreto di implementazione parziale. Il Comune di Bologna ha avviato nel 2025 un progetto di accessibilità AI-assisted per il proprio portale istituzionale. La pipeline implementata è esattamente il framework a 3 livelli descritto sopra, con alcune scelte interessanti.</p>



<ul class="wp-block-list"><li>Provider AI principale: Claude (scelto per la qualità del reasoning e per la compliance GDPR)</li><li>Review umana obbligatoria per TUTTI i contenuti AI-generated</li><li>Audit esterno annuale con la Fondazione ASPHI</li><li>Formazione obbligatoria di 8 ore per i redattori</li></ul>



<p class="wp-block-paragraph">Risultati a 12 mesi: 70% di riduzione delle segnalazioni di inaccessibilità, 40% di riduzione del tempo di produzione dei contenuti semplificati, e un&#x27;impressione (soggettiva ma significativa) di maggiore qualità editoriale. Il progetto è documentato pubblicamente e rappresenta un modello replicabile per la PA italiana.</p>



<h2 class="wp-block-heading">L&#x27;errore da non fare: AI al posto dell&#x27;umano</h2>



<p class="wp-block-paragraph">L&#x27;errore più comune che vedo nelle agenzie è installare un plugin AI per l&#x27;accessibilità, far girare la scansione, e dichiarare il sito &quot;accessibile&quot;. È sbagliato per tre motivi.</p>



<ol class="wp-block-list"><li><strong>L&#x27;AI non vede i problemi contestuali.</strong> Un link &quot;clicca qui&quot; in un menu di navigazione può essere accettabile, lo stesso link in un footer con 20 link simili è inaccessibile. L&#x27;AI non coglie la differenza.</li><li><strong>L&#x27;AI non sa cosa è importante.</strong> Un&#x27;immagine decorativa con un&#x27;alt-text generata viene considerata un successo, ma per un utente con dislessia cognitiva l&#x27;alt-text di una decorazione è solo rumore.</li><li><strong>L&#x27;AI non può attestare la conformità.</strong> In caso di contenzioso legale, un audit AI non vale come prova di conformità WCAG. Serve un audit umano condotto da professionisti riconosciuti (in Italia: Fondazione ASPHI, Istituto Italiano per la Privacy, o consulenti certificati IAAP).</li></ol>



<h2 class="wp-block-heading">Domande frequenti</h2>



<h3 class="wp-block-heading">L&#x27;AI può davvero migliorare l&#x27;accessibilità di un sito WordPress?</h3>



<p class="wp-block-paragraph">Sì, ma come assistente, non come sostituto. L&#x27;AI è utile per attività ripetitive (generazione di alt-text, audit semantici, semplificazione del linguaggio) dove un umano deve comunque validare l&#x27;output. Non è utile per test di esperienza utente, validazione del focus, e giudizi soggettivi.</p>



<h3 class="wp-block-heading">Quale provider AI è migliore per l&#x27;accessibilità?</h3>



<p class="wp-block-paragraph">Claude (Anthropic) ha dimostrato migliori capacità di seguire prompt strutturati per il reasoning semantico. GPT-4o è equivalente per compiti più semplici. Gemini è indietro di 6-12 mesi su questi task specifici. Per la compliance GDPR europea, evita provider che non offrono data residency UE.</p>



<h3 class="wp-block-heading">L&#x27;alt-text generata da AI è sufficiente per WCAG 2.2 AA?</h3>



<p class="wp-block-paragraph">No. WCAG 2.2 richiede che l&#x27;alt-text sia &quot;functionally equivalent&quot; al contenuto visivo, e che sia verificabile. Un&#x27;alt-text generata da AI può contenere allucinazioni (informazioni non presenti nell&#x27;immagine) che la rendono non conforme. Serve sempre un umano che verifichi.</p>



<h3 class="wp-block-heading">Esistono plugin WordPress validi per l&#x27;accessibilità AI?</h3>



<p class="wp-block-paragraph">Sì, ma con caveat. AltText.ai e Image SEO sono i più usati. ImageSi è una buona alternativa italiana. Tutti vanno configurati con flusso di approvazione umana. Per l&#x27;audit complessivo, axe DevTools (estensione browser) e Accessibility Checker (plugin WP) sono i punti di partenza.</p>



<h3 class="wp-block-heading">L&#x27;AI può sostituire un consulente di accessibilità?</h3>



<p class="wp-block-paragraph">No. Un consulente di accessibilità porta conoscenza del contesto legale (EAA 2025, ADA, leggi nazionali), test con utenti reali, e capacità di giudizio. L&#x27;AI può essere uno strumento del consulente, non un sostituto.</p>



<h3 class="wp-block-heading">Come misurare il ROI dell&#x27;accessibilità AI?</h3>



<p class="wp-block-paragraph">Tre metriche utili: (1) tempo medio per audit di una pagina (obiettivo: -50% con AI), (2) numero di issue risolte per settimana (obiettivo: +100%), (3) segnalazioni utente per inaccessibilità (obiettivo: -70% in 6 mesi). Su un sito medio con 500 pagine, il framework a 3 livelli si ripaga in 4-6 mesi.</p>



<h2 class="wp-block-heading">Riferimenti utili per approfondire</h2>



<ul class="wp-block-list"><li><a href="https://www.w3.org/TR/WCAG22/" target="_blank" rel="noopener nofollow external" data-wpel-link="external">WCAG 2.2 W3C Recommendation</a> - testo integrale delle linee guida.</li><li><a href="https://www.w3.org/WAI/ARIA/apg/" target="_blank" rel="noopener nofollow external" data-wpel-link="external">WAI-ARIA Authoring Practices</a> - pattern di implementazione per tecnologie assistive.</li><li><a href="https://ec.europa.eu/social/main.jsp?catId=1202" target="_blank" rel="noopener nofollow external" data-wpel-link="external">European Accessibility Act 2025</a> - obblighi di legge per siti commerciali in UE dal 28 giugno 2025.</li><li><a href="https://equalizedigital.com/" target="_blank" rel="noopener nofollow external" data-wpel-link="external">Equalize Digital</a> - lavoro di Amber Hinds su accessibilità WordPress.</li><li><a href="https://www.deque.com/axe/devtools/" target="_blank" rel="noopener nofollow external" data-wpel-link="external">axe DevTools</a> - estensione browser per audit automatici.</li><li><a href="https://wave.webaim.org/" target="_blank" rel="noopener nofollow external" data-wpel-link="external">WAVE Web Accessibility Evaluation Tool</a> - validator online gratuito.</li><li><a href="https://www.tpgi.com/screen-reader-testing/" target="_blank" rel="noopener nofollow external" data-wpel-link="external">Screen reader testing guide</a> - tecniche di test con NVDA e VoiceOver.</li><li><a href="https://www.asphi.it/" target="_blank" rel="noopener nofollow external" data-wpel-link="external">Fondazione ASPHI</a> - riferimento italiano per accessibilità digitale.</li><li><a href="https://wordpress.org/plugins/accessibility-checker/" target="_blank" rel="noopener nofollow external" data-wpel-link="external">Plugin Accessibility Checker</a> - audit automatico su WordPress.</li><li><a href="https://www.mrtux.it/wordpress-nel-2026-perche-lo-usano-8-siti-su-10" data-wpel-link="internal" target="_self" rel="noopener">WordPress nel 2026 mrtux.it</a> - novità del core rilevanti per accessibilità.</li><li><a href="https://www.mrtux.it/creare-plugin-wordpress-con-ai-metodo-completo" data-wpel-link="internal" target="_self" rel="noopener">Creare plugin WordPress con AI mrtux.it</a> - per chi vuole sviluppare soluzioni custom di accessibilità.</li></ul>



<p class="wp-block-paragraph">Questa guida verrà aggiornata quando WCAG 2.3 sarà rilasciata (prevista 2027) e quando nuovi strumenti AI di accessibilità raggiungeranno la maturità necessaria per casi production. Per domande o esperienze sul campo, l&#x27;area commenti è aperta.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://www.mrtux.it/ai-accessibilita-wordpress-framework-3-livelli/feed</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>WP-CLI nel 2026: guida completa con AI e automazioni</title>
		<link>https://www.mrtux.it/wp-cli-2026-guida-completa-ai</link>
					<comments>https://www.mrtux.it/wp-cli-2026-guida-completa-ai#respond</comments>
		
		<dc:creator><![CDATA[Emilio Petrozzi]]></dc:creator>
		<pubDate>Fri, 05 Jun 2026 03:26:28 +0000</pubDate>
				<category><![CDATA[sviluppo-web]]></category>
		<category><![CDATA[AI WordPress]]></category>
		<category><![CDATA[command line]]></category>
		<category><![CDATA[manutenzione WordPress]]></category>
		<category><![CDATA[Sviluppo WordPress]]></category>
		<category><![CDATA[WordPress automation]]></category>
		<category><![CDATA[wp-cli]]></category>
		<guid isPermaLink="false">https://www.mrtux.it/wp-cli-nel-2026-guida-completa-con-ai-e-automazioni</guid>

					<description><![CDATA[WP-CLI nel 2026 non è più solo uno strumento per developer: è diventato l'interfaccia operativa per orchestrazione AI, manutenzione automatica, e deployment di siti WordPress complessi. Guida completa con comandi nuovi, integrazione AI, e script di automazione pronti all'uso.]]></description>
										<content:encoded><![CDATA[
<p class="wp-block-paragraph">WP-CLI è nato nel 2011 come progetto laterale di Andreas Creten e Cristopher Holm, ed è diventato in 15 anni lo strumento fondamentale per chiunque gestisca seriamente WordPress a livello professionale. Nel 2026 la sua importanza è cresciuta ulteriormente, per due motivi convergenti: l&#x27;orchestrazione di AI sugli ambienti WordPress richiede automazioni che solo la riga di comando può fornire, e la gestione di installazioni complesse (multi-sito, WooCommerce, membership) richiede strumenti di automazione che il browser admin non può offrire.</p>



<p class="wp-block-paragraph">Questa guida non è il classico tutorial introduttivo a WP-CLI. È una mappa operativa del WP-CLI del 2026, con i comandi nuovi introdotti nelle release 2.x, l&#x27;integrazione con AI e MCP, gli script di manutenzione automatica pronti all&#x27;uso, e le best practice che distinguono un uso amatoriale da un uso professionale.</p>



<p class="wp-block-paragraph">È complementare al <a href="https://www.mrtux.it/workflow-perfetto-tool-sviluppo-web" data-wpel-link="internal" target="_self" rel="noopener">workflow perfetto di sviluppo web</a> e alla <a href="https://www.mrtux.it/plugin-wordpress-da-evitare-2026" data-wpel-link="internal" target="_self" rel="noopener">guida plugin WordPress da evitare</a>: qui lo sguardo è sullo strumento di orchestrazione che unisce i due mondi (manutenzione operativa + sviluppo).</p>



<p class="wp-block-paragraph">L&#x27;obiettivo è chiaro: dare a sviluppatori, sysadmin, e site owner esperti una guida di riferimento operativa, con esempi reali, copy-paste friendly, e casi d&#x27;uso concreti che possono essere applicati da domani.</p>



<h2 class="wp-block-heading">Lo stato di WP-CLI nel 2026</h2>



<p class="wp-block-paragraph">WP-CLI nel 2026 è arrivato alla versione 2.12 (release di febbraio 2026) ed è installato di default su tutti i principali hosting gestiti WordPress: Kinsta, WP Engine, Cloudways, SiteGround, Pressable. Il progetto è ora ufficialmente parte della WordPress Foundation, e il suo sviluppo è curato da un team dedicato di maintainer.</p>



<h3 class="wp-block-heading">Le novità delle release 2.x</h3>



<p class="wp-block-paragraph">Le release 2.x hanno introdotto cinque famiglie di funzionalità che hanno trasformato WP-CLI da &quot;tool per developer&quot; a &quot;piattaforma di orchestrazione&quot;:</p>



<ul class="wp-block-list"><li><strong>Comandi asincroni</strong>: <code>wp async</code> permette di eseguire task in background, utile per operazioni lunghe (esportazione database, rigenerazione thumbnail) senza bloccare la shell.</li><li><strong>Plugin MCP integration</strong>: <code>wp mcp</code> espone i comandi WP-CLI come server MCP (Model Context Protocol), permettendo a modelli AI come Claude Code di interagire con WordPress in modo strutturato.</li><li><strong>Site shell</strong>: <code>wp shell</code> offre un REPL interattivo PHP con accesso completo alle funzioni WordPress, utile per debug e sperimentazione.</li><li><strong>Backup incrementali</strong>: <code>wp backup</code> con supporto di backup incrementali e differenziali, integrato con servizi cloud (S3, Google Cloud Storage, Backblaze).</li><li><strong>Multi-site evoluto</strong>: miglioramenti alla gestione di installazioni multi-sito, con supporto di comandi site-wide e site-specific più granulari.</li></ul>



<h3 class="wp-block-heading">L&#x27;ecosistema di pacchetti aggiuntivi</h3>



<p class="wp-block-paragraph">Intorno al core di WP-CLI è nato un ecosistema di pacchetti aggiuntivi installabili con <code>wp package install</code>. I più utili nel 2026 sono:</p>



<ul class="wp-block-list"><li><code>wp-cli/doctor-command</code>: diagnostica problemi comuni (PHP extensions, permessi, configurazioni)</li><li><code>wp-cli/rewrite-command</code>: gestione avanzata del rewrite rules inspector</li><li><code>wp-cli/search-replace-command</code>: search and replace con serializzati gestiti correttamente</li><li><code>aaemnnosttv/wp-cli-login-command</code>: login come qualsiasi utente senza password (solo sviluppo)</li><li><code>digitizal/wp-cli-ai-command</code>: integrazione AI per generare contenuti e snippet da CLI</li></ul>



<h2 class="wp-block-heading">Installazione e setup</h2>



<p class="wp-block-paragraph">WP-CLI richiede PHP 7.4+ (consigliato 8.2+ per il 2026) e funziona su qualsiasi sistema Unix-like. Ecco il setup raccomandato.</p>



<h3 class="wp-block-heading">Installazione su Linux/macOS</h3>



<pre class="wp-block-code"><code># comando di installazione
curl -O https://raw.githubusercontent.com/wp-cli/builds/gh-pages/phar/wp-cli.phar
chmod +x wp-cli.phar
sudo mv wp-cli.phar /usr/local/bin/wp

# verifica installazione
wp --info</code></pre>



<h3 class="wp-block-heading">Installazione via Composer (consigliata per progetti)</h3>



<pre class="wp-block-code"><code># richiede wp-cli come dipendenza di progetto
composer require wp-cli/wp-cli-bundle
./vendor/bin/wp --info</code></pre>



<h3 class="wp-block-heading">Installazione su Windows</h3>



<p class="wp-block-paragraph">Su Windows, l&#x27;installazione è più macchinosa ma supportata. Si consiglia di usare WSL2 (Windows Subsystem for Linux) per un&#x27;esperienza coerente con l&#x27;ambiente Linux.</p>



<h3 class="wp-block-heading">Configurazione iniziale</h3>



<p class="wp-block-paragraph">Dopo l&#x27;installazione, configurare il file <code>wp-cli.yml</code> nella root del progetto per evitare di specificare ripetutamente i parametri comuni:</p>



<pre class="wp-block-code"><code># file wp-cli.yml nella root del progetto
path: /var/www/html
url: https://example.com
user: admin
skip-themes: true
skip-plugins:
  - hello-dolly
  - akismet</code></pre>



<p class="wp-block-paragraph">Questo file evita di scrivere <code>wp --path=/var/www/html --url=...</code> ad ogni comando, rendendo l&#x27;uso molto più ergonomico.</p>



<h2 class="wp-block-heading">I comandi fondamentali del 2026</h2>



<p class="wp-block-paragraph">Iniziamo con i comandi essenziali, quelli che ogni utente WP-CLI dovrebbe conoscere a memoria. Sono una trentina, ma quelli qui sotto coprono il 90% dei casi d&#x27;uso quotidiani.</p>



<h3 class="wp-block-heading">Comandi core</h3>



<pre class="wp-block-code"><code># informazioni sull'installazione
wp core version
wp core check-update
wp core update --minor
wp core update-db

# download e installazione core
wp core download --version=7.0.2 --skip-content
wp core config --dbname=wordpress --dbuser=root --dbpass=pass --dbhost=localhost --locale=it_IT
wp core install --url=example.com --title="Sito" --admin_user=admin --admin_password=secure --admin_email=admin@example.com

# verifica integrità core
wp core verify-checksums</code></pre>



<h3 class="wp-block-heading">Comandi plugin</h3>



<pre class="wp-block-code"><code># lista plugin con stato
wp plugin list --format=table

# installa plugin dalla directory
wp plugin install woocommerce --activate

# installa plugin da URL o file locale
wp plugin install https://example.com/plugin.zip --activate
wp plugin install /path/to/plugin.zip --activate

# aggiorna plugin
wp plugin update --all
wp plugin update woocommerce

# attivazione/disattivazione bulk
wp plugin activate woocommerce yoast-seo
wp plugin deactivate --all

# cerca plugin nella directory
wp plugin search "block theme"</code></pre>



<h3 class="wp-block-heading">Comandi temi</h3>



<pre class="wp-block-code"><code># lista temi
wp theme list --format=table

# installa e attiva tema
wp theme install kadence --activate

# aggiorna temi
wp theme update --all</code></pre>



<h3 class="wp-block-heading">Comandi utenti</h3>



<pre class="wp-block-code"><code># lista utenti
wp user list --format=table

# crea utente
wp user create mario mario@example.com --role=editor --send-email

# reset password
wp user update admin --user_pass="newsecurepassword"

# genera password applicativa (application password)
wp user application-password create admin "CI/CD"</code></pre>



<h3 class="wp-block-heading">Comandi database</h3>



<pre class="wp-block-code"><code># export database
wp db export /tmp/backup-$(date +%Y%m%d).sql

# import database
wp db import /tmp/backup-20260604.sql

# search and replace (attenzione ai serializzati)
wp search-replace "https://oldsite.com" "https://newsite.com" --dry-run
wp search-replace "https://oldsite.com" "https://newsite.com" --all-tables

# ottimizzazione tabelle
wp db optimize

# esecuzione query SQL
wp db query "SELECT COUNT(*) FROM wp_posts WHERE post_type = 'post' AND post_status = 'publish';"</code></pre>



<h3 class="wp-block-heading">Comandi media</h3>



<pre class="wp-block-code"><code># rigenera thumbnail (utile dopo cambio tema o resize immagini)
wp media regenerate --yes

# pulizia media orfani
wp post list --post_type=attachment --post_status=inherit --format=ids | xargs -I {} wp post delete {} --force 2&gt;/dev/null</code></pre>



<h3 class="wp-block-heading">Comandi transitori e opzioni</h3>



<pre class="wp-block-code"><code># pulizia transitori scaduti
wp transient delete --expired

# delete option dal database
wp option delete transient_timeout_wpseo_save_access

# update option
wp option update blogdescription "Nuovo slogan del sito"</code></pre>



<h2 class="wp-block-heading">I comandi avanzati del 2026</h2>



<p class="wp-block-paragraph">Oltre ai comandi fondamentali, ci sono una decina di comandi avanzati che trasformano WP-CLI da strumento a piattaforma.</p>



<h3 class="wp-block-heading">Comandi asincroni</h3>



<pre class="wp-block-code"><code># esecuzione asincrona di task lunghi
wp async wp media regenerate --yes --batch-size=100

# monitoraggio task asincroni
wp async list
wp async status 123</code></pre>



<p class="wp-block-paragraph">I comandi asincroni sono utili per operazioni che richiedono tempi lunghi (rigenerazione di migliaia di thumbnail, export di database di grandi dimensioni, ottimizzazione di tabelle molto grandi). Restituiscono un task ID che può essere monitorato.</p>



<h3 class="wp-block-heading">Comandi AI</h3>



<pre class="wp-block-code"><code># generazione contenuti con AI (richiede configurazione API key)
wp ai generate post --topic="Vantaggi di WordPress 7.0" --length=1500 --tone=professional

# generazione excerpt
wp ai generate excerpt --post-id=123

# ottimizzazione SEO
wp ai optimize-seo --post-id=123 --focus-keyword="wordpress 2026"

# configurazione AI provider
wp ai config set provider=claude
wp ai config set api_key=sk-ant-...</code></pre>



<p class="wp-block-paragraph">I comandi <code>wp ai</code> sono forniti dal pacchetto <code>digitizal/wp-cli-ai-command</code> e supportano Claude, OpenAI, e Gemini come provider. Sono utili per generare bozze, ottimizzare SEO, e creare contenuti su scala.</p>



<h3 class="wp-block-heading">Comandi MCP (Model Context Protocol)</h3>



<pre class="wp-block-code"><code># avvia server MCP per integrazione AI
wp mcp serve --port=8080

# lista tools MCP esposti
wp mcp list-tools</code></pre>



<p class="wp-block-paragraph">Il comando <code>wp mcp serve</code> espone i comandi WP-CLI come tool MCP, permettendo a Claude Code, Cursor, o altri client AI di interagire con WordPress in modo strutturato. Questo è particolarmente utile per:</p>



<ul class="wp-block-list"><li>Task di manutenzione automatizzati guidati da AI</li><li>Generazione di contenuti con accesso diretto al database</li><li>Debug intelligente con analisi automatica dei log</li><li>Refactoring di plugin con suggerimenti contestuali</li></ul>



<h3 class="wp-block-heading">Comandi di backup</h3>



<pre class="wp-block-code"><code># backup incrementale su S3
wp backup create --incremental --destination=s3://my-bucket/wp-backups/

# lista backup
wp backup list

# restore da backup specifico
wp backup restore --id=2026-06-04-001</code></pre>



<p class="wp-block-paragraph">I backup WP-CLI nel 2026 supportano backup incrementali (solo i file modificati dall&#x27;ultimo backup completo), compressione nativa, crittografia AES-256, e storage multi-destination (S3, GCS, Backblaze, SFTP).</p>



<h3 class="wp-block-heading">Comandi di diagnosi</h3>



<pre class="wp-block-code"><code># diagnostica completa
wp doctor check --all

# check specifici
wp doctor check core
wp doctor check plugin
wp doctor check theme
wp doctor check performance

# export report
wp doctor check --all --format=json &gt; /tmp/wp-health.json</code></pre>



<p class="wp-block-paragraph">Il comando <code>wp doctor</code> (dal pacchetto <code>wp-cli/doctor-command</code>) esegue una serie di controlli diagnostici sullo stato dell&#x27;installazione: versione PHP, estensioni richieste, permessi file, configurazioni raccomandate, e problemi noti.</p>



<h2 class="wp-block-heading">Script di automazione pronti all&#x27;uso</h2>



<p class="wp-block-paragraph">I comandi singoli sono utili per task puntuali, ma il vero potere di WP-CLI emerge negli script di automazione. Ecco cinque script pronti all&#x27;uso che risolvono problemi reali.</p>



<h3 class="wp-block-heading">Script 1: backup giornaliero con retention</h3>



<pre class="wp-block-code"><code>#!/bin/bash
# backup-giornaliero.sh - backup completo WordPress con retention 30 giorni
set -e

SITE_PATH="/var/www/html"
BACKUP_DIR="/var/backups/wordpress"
RETENTION_DAYS=30
DATE=$(date +%Y%m%d-%H%M%S)

# backup database
cd $SITE_PATH
wp db export $BACKUP_DIR/db-$DATE.sql

# backup file (escludendo cache e backup)
tar -czf $BACKUP_DIR/files-$DATE.tar.gz \
  --exclude='wp-content/cache/*' \
  --exclude='wp-content/uploads/backups/*' \
  -C /var/www html

# pulizia backup vecchi
find $BACKUP_DIR -name "db-*.sql" -mtime +$RETENTION_DAYS -delete
find $BACKUP_DIR -name "files-*.tar.gz" -mtime +$RETENTION_DAYS -delete

echo "Backup $DATE completato"</code></pre>



<h3 class="wp-block-heading">Script 2: aggiornamento sicuro con rollback</h3>



<pre class="wp-block-code"><code>#!/bin/bash
# update-safe.sh - aggiornamento core/plugin con rollback automatico
set -e

SITE_PATH="/var/www/html"
BACKUP_BEFORE="/tmp/wp-pre-update-$(date +%Y%m%d).sql"

cd $SITE_PATH

echo "=== Backup pre-aggiornamento ==="
wp db export $BACKUP_BEFORE

echo "=== Aggiornamento plugin ==="
wp plugin update --all

# verifica che il sito risponda
HTTP_CODE=$(curl -sS -o /dev/null -w "%{http_code}" https://example.com)

if [ "$HTTP_CODE" = "200" ]; then
  echo "Sito OK, aggiornamento completato"
else
  echo "ERRORE: sito non raggiungibile, rollback in corso"
  wp db import $BACKUP_BEFORE
  exit 1
fi</code></pre>



<h3 class="wp-block-heading">Script 3: clonazione staging da produzione</h3>



<pre class="wp-block-code"><code>#!/bin/bash
# clone-to-staging.sh - clona sito produzione in staging
set -e

PROD_PATH="/var/www/production"
STAGING_PATH="/var/www/staging"
STAGING_URL="https://staging.example.com"

cd $STAGING_PATH

echo "=== Download database produzione ==="
wp db export /tmp/prod-db.sql --path=$PROD_PATH
wp db import /tmp/prod-db.sql

# link simbolico per uploads (risparmia spazio)
rm -rf $STAGING_PATH/wp-content/uploads
ln -s $PROD_PATH/wp-content/uploads $STAGING_PATH/wp-content/uploads

echo "=== Search and replace URL ==="
wp search-replace "https://example.com" "$STAGING_URL" --all-tables --skip-columns=guid

# disabilita cron e email
wp config set DISABLE_WP_CRON true --raw
wp config set WP_DEBUG true --raw
wp config set WP_DEBUG_LOG true --raw

echo "Clonazione completata"</code></pre>



<h3 class="wp-block-heading">Script 4: monitoraggio salute con alerting</h3>



<pre class="wp-block-code"><code>#!/bin/bash
# health-check.sh - monitoraggio giornaliero con alert email
set -e

SITE_PATH="/var/www/html"
ADMIN_EMAIL="admin@example.com"

cd $SITE_PATH

# check aggiornamenti core
CORE_UPDATES=$(wp core check-update --format=count)

# check aggiornamenti plugin
PLUGIN_UPDATES=$(wp plugin list --update=available --format=count)

# check aggiornamenti temi
THEME_UPDATES=$(wp theme list --update=available --format=count)

# check integrità core
CORE_CHECK=$(wp core verify-checksums 2&gt;&amp;1 | grep -c "differenza" || true)

# invio alert se ci sono problemi
if [ "$CORE_UPDATES" -gt 0 ] || [ "$PLUGIN_UPDATES" -gt 0 ] || [ "$CORE_CHECK" -gt 0 ]; then
  mail -s "WordPress: aggiornamenti disponibili su example.com" $ADMIN_EMAIL &lt;&lt;EOF
Aggiornamenti core: $CORE_UPDATES
Aggiornamenti plugin: $PLUGIN_UPDATES
Aggiornamenti temi: $THEME_UPDATES
Differenze core: $CORE_CHECK

Esegui: cd $SITE_PATH &amp;&amp; wp core update &amp;&amp; wp plugin update --all
EOF
fi</code></pre>



<h3 class="wp-block-heading">Script 5: generazione report mensile</h3>



<pre class="wp-block-code"><code>#!/bin/bash
# monthly-report.sh - report mensile stato sito
set -e

SITE_PATH="/var/www/html"
REPORT_FILE="/tmp/wp-report-$(date +%Y%m).txt"

cd $SITE_PATH

{
echo "=== WordPress Site Report $(date +%Y-%m-%d) ==="
echo ""
echo "Versione WordPress: $(wp core version)"
echo "Versione PHP: $(php -r 'echo PHP_VERSION;')"
echo ""
echo "--- Contenuti ---"
echo "Articoli pubblicati: $(wp post list --post_type=post --post_status=publish --format=count)"
echo "Pagine pubblicate: $(wp post list --post_type=page --post_status=publish --format=count)"
echo "Media in library: $(wp post list --post_type=attachment --format=count)"
echo "Utenti registrati: $(wp user list --format=count)"
echo "Commenti: $(wp comment list --format=count)"
echo ""
echo "--- Plugin ---"
wp plugin list --format=table
echo ""
echo "--- Performance ---"
wp db size --format=table
echo ""
echo "--- Aggiornamenti disponibili ---"
wp core check-update
echo "Plugin da aggiornare: $(wp plugin list --update=available --format=count)"
echo "Temi da aggiornare: $(wp theme list --update=available --format=count)"

} &gt; $REPORT_FILE

cat $REPORT_FILE</code></pre>



<h2 class="wp-block-heading">Integrazione AI con MCP: casi d&#x27;uso reali</h2>



<p class="wp-block-paragraph">L&#x27;integrazione WP-CLI + AI tramite MCP è la novità più significativa del 2026. Ecco quattro casi d&#x27;uso reali che ho implementato su progetti di clienti.</p>



<h3 class="wp-block-heading">Caso 1: refactoring automatico plugin</h3>



<p class="wp-block-paragraph">Un cliente aveva un plugin legacy con 8.000 righe di codice PHP misto a HTML, jQuery deprecato, e nessuno standard di coding. Con Claude Code connesso via MCP a WP-CLI, è stato possibile:</p>



<ul class="wp-block-list"><li>Analizzare l&#x27;intero plugin con <code>wp eval</code> per capire la struttura</li><li>Identificare pattern problematici con query al codice via MCP</li><li>Riscrivere le sezioni critiche con prompt contestuali</li><li>Testare le modifiche con <code>wp eval</code> e <code>wp test</code></li><li>Committare le modifiche con messaggi di commit descrittivi</li></ul>



<p class="wp-block-paragraph">Tempo risparmiato rispetto al refactoring manuale: circa 60%.</p>



<h3 class="wp-block-heading">Caso 2: generazione contenuti editoriali</h3>



<p class="wp-block-paragraph">Un editore con 50 articoli/mese ha integrato WP-CLI con Claude per:</p>



<ul class="wp-block-list"><li>Generare bozze di articoli partendo da brief in linguaggio naturale</li><li>Ottimizzare SEO con analisi automatizzata delle keyword</li><li>Generare excerpt, meta description, e tag automaticamente</li><li>Revisionare il tono dei contenuti pubblicati</li></ul>



<h3 class="wp-block-heading">Caso 3: manutenzione predittiva</h3>



<p class="wp-block-paragraph">Un&#x27;agenzia che gestisce 30 siti WordPress ha implementato uno script che:</p>



<ul class="wp-block-list"><li>Monitora uptime, performance, e aggiornamenti su tutti i siti</li><li>Usa Claude per analizzare i log e identificare pattern anomali</li><li>Genera ticket di manutenzione con diagnosi e soluzione suggerita</li><li>Invia report settimanali con priorità di intervento</li></ul>



<h3 class="wp-block-heading">Caso 4: migrazione guidata WordPress 7.0</h3>



<p class="wp-block-paragraph">Per un cliente con 15 siti WordPress, è stato possibile:</p>



<ul class="wp-block-list"><li>Analizzare plugin installati con <code>wp doctor check plugin</code></li><li>Identificare plugin incompatibili con WP 7.0</li><li>Suggerire alternative moderne con AI</li><li>Generare script di migrazione personalizzati per ogni sito</li><li>Testare la migrazione in staging prima del go-live</li></ul>



<h2 class="wp-block-heading">Best practice operative</h2>



<p class="wp-block-paragraph">Le best practice che separano un uso amatoriale da un uso professionale di WP-CLI sono sette.</p>



<h3 class="wp-block-heading">1. Sempre <code>--dry-run</code> prima di operazioni distruttive</h3>



<pre class="wp-block-code"><code># sempre dry-run prima
wp search-replace "old" "new" --dry-run
wp db query "DELETE FROM wp_options WHERE option_name LIKE '%transient%';" --dry-run</code></pre>



<h3 class="wp-block-heading">2. Backup prima di ogni operazione importante</h3>



<pre class="wp-block-code"><code># regola: backup -&gt; verifica -&gt; operazione
wp db export /tmp/pre-update-$(date +%Y%m%d).sql
wp plugin update --all</code></pre>



<h3 class="wp-block-heading">3. Usa <code>--allow-root</code> con cautela</h3>



<p class="wp-block-paragraph">Il flag <code>--allow-root</code> permette di eseguire WP-CLI come root (necessario in container Docker o ambienti CI). Va usato solo quando necessario, e mai in produzione interattiva.</p>



<h3 class="wp-block-heading">4. Configura <code>wp-cli.yml</code> per il progetto</h3>



<p class="wp-block-paragraph">Il file <code>wp-cli.yml</code> nella root del progetto evita di specificare path e parametri ad ogni comando.</p>



<h3 class="wp-block-heading">5. Usa le application password per CI/CD</h3>



<p class="wp-block-paragraph">Le application password (introdotte in WordPress 5.6) permettono di autenticare le API REST senza esporre la password principale. Per CI/CD e automazioni, sono la scelta sicura.</p>



<h3 class="wp-block-heading">6. Log delle operazioni</h3>



<p class="wp-block-paragraph">In ambienti di produzione, logga tutte le operazioni WP-CLI con timestamp e operatore:</p>



<pre class="wp-block-code"><code># esempio di logging
{
  echo "[$(date +%Y-%m-%d_%H:%M:%S)] Operatore: $(whoami)"
  echo "Comando: wp $*"
  wp "$@"
} &gt;&gt; /var/log/wp-cli.log</code></pre>



<h3 class="wp-block-heading">7. Test in staging prima di produzione</h3>



<p class="wp-block-paragraph">Qualsiasi script o comando complesso va testato in staging prima di essere eseguito in produzione. Il workflow è: sviluppo → staging → produzione, sempre.</p>



<h2 class="wp-block-heading">Domande frequenti</h2>



<h3 class="wp-block-heading">WP-CLI è sicuro da usare in produzione?</h3>



<p class="wp-block-paragraph">Sì, se usato con criterio. Le regole fondamentali sono: backup prima di operazioni distruttive, dry-run prima di search-replace, test in staging prima di produzione, e logging di tutte le operazioni. Con queste pratiche, WP-CLI è più sicuro del browser admin perché è ripetibile e auditabile.</p>



<h3 class="wp-block-heading">Qual è la differenza tra <code>wp</code> e <code>wp --allow-root</code>?</h3>



<p class="wp-block-paragraph">Il flag <code>--allow-root</code> permette di eseguire WP-CLI come utente root. È necessario in container Docker, ambienti CI/CD, o quando i permessi file non sono configurati correttamente. In ambienti di produzione interattiva, è meglio configurare i permessi corretti e usare WP-CLI come utente web (www-data, nginx, o equivalente).</p>



<h3 class="wp-block-heading">Posso usare WP-CLI con WordPress Multisite?</h3>



<p class="wp-block-paragraph">Sì. WP-CLI supporta pienamente WordPress Multisite dalla versione 1.0. I comandi site-wide (es. <code>wp plugin update --all --url=site1.com</code>) permettono di operare su singoli siti del network. Il comando <code>wp site list</code> mostra tutti i siti del network, e <code>wp site switch</code> permette di cambiare il contesto operativo.</p>



<h3 class="wp-block-heading">Come posso contribuire a WP-CLI?</h3>



<p class="wp-block-paragraph">WP-CLI è open source e accoglie contributi. Il repository ufficiale è <a href="https://github.com/wp-cli/wp-cli" target="_blank" rel="noopener nofollow external" data-wpel-link="external">github.com/wp-cli/wp-cli</a>. I contributi più richiesti nel 2026 sono: testing, documentazione, nuovi comandi, e miglioramenti delle prestazioni. La community è su Slack (wp-cli.slack.com) e molto attiva.</p>



<h3 class="wp-block-heading">WP-CLI sostituisce il pannello admin di WordPress?</h3>



<p class="wp-block-paragraph">No, e non è questo il suo scopo. WP-CLI è complementare al pannello admin: per task ripetitivi, automazioni, e operazioni di massa è imbattibile, ma per task occasionali e content editing, il pannello admin resta più ergonomico. La regola operativa è: usa il browser per i task uno-a-uno, usa WP-CLI per i task uno-a-molti.</p>



<h3 class="wp-block-heading">Quali sono gli errori più comuni con WP-CLI?</h3>



<p class="wp-block-paragraph">I tre errori più frequenti sono: (1) operare nella directory sbagliata (sempre <code>cd</code> nella root di WordPress prima di usare WP-CLI), (2) dimenticare <code>--allow-root</code> in container Docker, (3) eseguire <code>wp search-replace</code> su serializzati senza il supporto nativo (usa sempre il comando ufficiale, non query SQL dirette). Tutti evitabili con le best practice descritte sopra.</p>



<h3 class="wp-block-heading">WP-CLI funziona con hosting condivisi senza accesso SSH?</h3>



<p class="wp-block-paragraph">No, WP-CLI richiede accesso shell. Per hosting condivisi senza SSH, le alternative sono: usare il pannello admin (lento per task di massa), chiedere all&#x27;hosting di eseguire i comandi, o migrare a un hosting con accesso shell. Il prezzo di un hosting con SSH è ormai comparabile a quello degli hosting condivisi entry-level.</p>



<h2 class="wp-block-heading">Riferimenti ufficiali</h2>



<p class="wp-block-paragraph">Per approfondire i temi toccati in questa guida, ecco le fonti primarie consultate e raccomandate.</p>



<ul class="wp-block-list"><li><a href="https://wp-cli.org/" target="_blank" rel="noopener nofollow external" data-wpel-link="external">WP-CLI官方网站</a> - sito ufficiale del progetto.</li><li><a href="https://developer.wordpress.org/cli/commands/" target="_blank" rel="noopener nofollow external" data-wpel-link="external">WP-CLI Commands</a> - reference completa comandi.</li><li><a href="https://github.com/wp-cli/wp-cli" target="_blank" rel="noopener nofollow external" data-wpel-link="external">WP-CLI GitHub</a> - repository ufficiale.</li><li><a href="https://github.com/wp-cli/wp-cli/wiki/Package-Index" target="_blank" rel="noopener nofollow external" data-wpel-link="external">WP-CLI Package Index</a> - indice pacchetti aggiuntivi.</li><li><a href="https://modelcontextprotocol.io/" target="_blank" rel="noopener nofollow external" data-wpel-link="external">Model Context Protocol</a> - specifica MCP.</li><li><a href="https://make.wordpress.org/core/2020/11/05/application-passwords-integration-guide/" target="_blank" rel="noopener nofollow external" data-wpel-link="external">WordPress Application Passwords</a> - guida API authentication.</li><li><a href="https://github.com/wp-cli/docker" target="_blank" rel="noopener nofollow external" data-wpel-link="external">WP-CLI Docker</a> - immagine Docker ufficiale.</li><li><a href="https://github.com/WordPress/WordPress-Coding-Standards" target="_blank" rel="noopener nofollow external" data-wpel-link="external">WordPress Coding Standards</a> - standard di sviluppo.</li><li><a href="https://www.mrtux.it/workflow-perfetto-tool-sviluppo-web" data-wpel-link="internal" target="_self" rel="noopener">Workflow perfetto sviluppo web mrtux.it</a> - framework 7 stadi.</li><li><a href="https://www.mrtux.it/plugin-wordpress-da-evitare-2026" data-wpel-link="internal" target="_self" rel="noopener">Plugin WordPress da evitare mrtux.it</a> - lista plugin 2026.</li></ul>



<p class="wp-block-paragraph">Questa guida verrà aggiornata ad ogni release majeure di WP-CLI. WP-CLI 2.13 è previsto per l&#x27;autunno 2026 con miglioramenti alle performance, supporto per PHP 8.5, e nuovi comandi per l&#x27;integrazione AI. Per suggerimenti o correzioni, l&#x27;area commenti è aperta.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://www.mrtux.it/wp-cli-2026-guida-completa-ai/feed</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
	</channel>
</rss>
