<?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>WordPress 6.9 - Web Design | Creazione Siti Internet</title>
	<atom:link href="https://www.mrtux.it/tag/wordpress-6-9/feed" rel="self" type="application/rss+xml" />
	<link>https://www.mrtux.it</link>
	<description>Sviluppo Siti Web - Assistenza WordPress</description>
	<lastBuildDate>Mon, 22 Jun 2026 08:03:48 +0000</lastBuildDate>
	<language>it-IT</language>
	<sy:updatePeriod>
	hourly	</sy:updatePeriod>
	<sy:updateFrequency>
	1	</sy:updateFrequency>
	<generator>https://wordpress.org/?v=7.0</generator>

<image>
	<url>https://www.mrtux.it/wp-content/uploads/2022/06/favicon-150x150.png</url>
	<title>WordPress 6.9 - Web Design | Creazione Siti Internet</title>
	<link>https://www.mrtux.it</link>
	<width>32</width>
	<height>32</height>
</image> 
	<item>
		<title>Abilities API WordPress 6.9: guida operativa 2026 completa</title>
		<link>https://www.mrtux.it/abilities-api-wordpress-6-9-casi-uso-non-ai</link>
					<comments>https://www.mrtux.it/abilities-api-wordpress-6-9-casi-uso-non-ai#respond</comments>
		
		<dc:creator><![CDATA[Emilio Petrozzi]]></dc:creator>
		<pubDate>Mon, 22 Jun 2026 08:03:47 +0000</pubDate>
				<category><![CDATA[sviluppo-web]]></category>
		<category><![CDATA[Abilities API]]></category>
		<category><![CDATA[Capability matrix]]></category>
		<category><![CDATA[Performance check]]></category>
		<category><![CDATA[Plugin architecture]]></category>
		<category><![CDATA[Security scan]]></category>
		<category><![CDATA[SEO audit]]></category>
		<category><![CDATA[Sviluppo WordPress]]></category>
		<category><![CDATA[WordPress 6.9]]></category>
		<guid isPermaLink="false">https://www.mrtux.it/abilities-api-wordpress-6-9-guida-operativa-2026-completa</guid>

					<description><![CDATA[Abilities API WordPress 6.9 non è solo per plugin AI: ecco come usarla come contratto verificabile per audit SEO, scan di sicurezza e controlli di performance, con capability matrix e codice pronto all'uso.]]></description>
										<content:encoded><![CDATA[
<p class="wp-block-paragraph">Quando si parla di Abilities API WordPress 6.9 il primo pensiero va ai plugin AI: capability, MCP, model context. Ma c&#x27;è un uso molto più immediato e ad alto valore che quasi nessuno sta esplorando: trasformare audit SEO, scan di sicurezza e check di performance in &quot;abilities&quot; dichiarate e verificabili, che qualunque plugin può chiamare senza reinventare la ruota. In questa guida vediamo come sfruttare la nuova API per casi d&#x27;uso strettamente operativi, con capability matrix, sandboxing e codice pronto all&#x27;uso.</p>



<p class="wp-block-paragraph">Il cambio di mentalità necessario è piccolo ma potente. Oggi la maggior parte dei plugin SEO fa il proprio audit chiamando Yoast o Rank Math via reflection o hook, con risultati fragili e duplicazione di logica. Con Abilities API, ogni plugin espone le proprie capacità come abilities registrate, e chiunque può chiederle via <code>wp_get_ability()</code> con capability check, audit log e kill switch integrati. Questo non è teorico: il Plugin Team stesso lo usa già per i triage AI del <a href="https://www.mrtux.it/wordpress-plugin-team-2026-triage-ai" data-wpel-link="internal" target="_self" rel="noopener">Plugin Directory 2026</a>.</p>



<p class="wp-block-paragraph">Per capire il contesto AI dell&#x27;API rimando al <a href="https://www.mrtux.it/wp-plugin-ai-mcp-abilities-pattern" data-wpel-link="internal" target="_self" rel="noopener">pattern ufficiale Plugin Team MCP + Abilities</a> e alla <a href="https://www.mrtux.it/ai-use-disclosure-plugin-wordpress-directory-standard" data-wpel-link="internal" target="_self" rel="noopener">preparazione alla AI-use disclosure</a>; qui il focus è su come chiunque può adottare Abilities API anche senza una sola riga di codice AI, ottenendo vantaggi concreti in robustezza, auditabilità e interoperabilità tra plugin.</p>



<h2 class="wp-block-heading">Cos&#x27;è Abilities API WordPress 6.9 in 90 secondi</h2>



<p class="wp-block-paragraph">Abilities API è una nuova API core di WordPress 6.9 che permette a un plugin (o al core) di registrare &quot;abilità&quot; (abilities) come unità discrete di funzionalità. Ogni ability ha:</p>



<ul class="wp-block-list"><li><strong>Slug univoco</strong>: <code>seo-audit/canonical-check</code>, <code>security-scan/file-integrity</code>, <code>performance-check/db-query-time</code></li><li><strong>Capability requirements</strong>: chi può chiamarla (administrator, editor, custom role)</li><li><strong>Input schema</strong>: parametri accettati (post_id, capability array, scope)</li><li><strong>Output schema</strong>: struttura del risultato atteso</li><li><strong>Callback registrato</strong>: la funzione che esegue l&#x27;abilità</li><li><strong>Audit metadata</strong>: chi l&#x27;ha chiamata, quando, con quali parametri</li></ul>



<p class="wp-block-paragraph">A differenza degli hook tradizionali, un&#x27;ability è una funzione chiamabile esplicitamente da altro codice con un&#x27;API uniforme, non un side effect agganciato a un evento. Questo la rende perfetta per audit e check operativi, dove serve un &quot;contratto&quot; chiaro tra chi chiede e chi esegue.</p>



<h3 class="wp-block-heading">Differenza tra Ability e Hook WordPress</h3>



<p class="wp-block-paragraph">Un hook tradizionale (<code>do_action</code>, <code>apply_filters</code>) è publish-subscribe: il publisher non sa chi ascolta. Un&#x27;ability è request-response: il chiamante sa esattamente cosa sta chiedendo e cosa riceverà. Questa differenza sembra sottile ma in termini di testabilità, documentazione e debug è enorme.</p>



<h3 class="wp-block-heading">Differenza tra Ability e REST endpoint</h3>



<p class="wp-block-paragraph">Un&#x27;ability è simile a un REST endpoint ma vive nello stesso processo PHP, senza HTTP overhead. È ideale per uso server-side (WP-CLI, cron, plugin-to-plugin). Per uso client-side (JavaScript in admin) si consiglia di esporre l&#x27;ability anche via REST controller aggiuntivo.</p>



<h2 class="wp-block-heading">Caso d&#x27;uso 1: audit SEO come abilities componibili</h2>



<p class="wp-block-paragraph">Vediamo il primo caso d&#x27;uso pratico: trasformare i 12 check SEO che ogni agenzia fa a mano (canonical, meta description, alt text, structured data, robots, sitemap, ecc.) in abilities dichiarate. Il vantaggio immediato è che qualunque plugin (Rank Math, Yoast, SEOPress) può esporre le proprie check come abilities, e i tool di audit (WooCommerce, page builder, plugin custom) possono chiamarle senza dover conoscere il plugin specifico.</p>



<h3 class="wp-block-heading">Registrazione di un&#x27;ability SEO canonical-check</h3>



<pre class="wp-block-code"><code>// registra un'ability SEO audit
add_action( 'wp_abilities_api_init', function() {
    wp_register_ability( 'seo-audit/canonical-check', array(
        'label'       =&gt; __( 'Canonical URL check', 'seo-abilities' ),
        'description' =&gt; __( 'Verifica che il post abbia un canonical URL valido', 'seo-abilities' ),
        'callback'    =&gt; 'seo_abilities_check_canonical',
        'capability'  =&gt; 'edit_posts',
        'input_schema' =&gt; array(
            'type'       =&gt; 'object',
            'properties' =&gt; array(
                'post_id' =&gt; array( 'type' =&gt; 'integer' )
            ),
            'required'   =&gt; array( 'post_id' )
        ),
        'output_schema' =&gt; array(
            'type'       =&gt; 'object',
            'properties' =&gt; array(
                'has_canonical' =&gt; array( 'type' =&gt; 'boolean' ),
                'canonical_url' =&gt; array( 'type' =&gt; 'string' ),
                'is_self'       =&gt; array( 'type' =&gt; 'boolean' ),
                'severity'      =&gt; array( 'type' =&gt; 'string' )
            )
        )
    ) );
} );

function seo_abilities_check_canonical( $input ) {
    $post = get_post( $input['post_id'] );
    if ( ! $post ) {
        return new WP_Error( 'post_not_found', __( 'Post non trovato', 'seo-abilities' ) );
    }
    $canonical = get_permalink( $post-&gt;ID );
    return array(
        'has_canonical' =&gt; true,
        'canonical_url' =&gt; $canonical,
        'is_self'       =&gt; true,
        'severity'      =&gt; 'ok'
    );
}</code></pre>



<h3 class="wp-block-heading">Composizione di più abilities per audit completo</h3>



<pre class="wp-block-code"><code>// chiama 5 abilities SEO in sequenza e aggrega risultati
function seo_abilities_full_audit( $post_id ) {
    $checks = array(
        'seo-audit/canonical-check',
        'seo-audit/meta-description-check',
        'seo-audit/alt-text-check',
        'seo-audit/structured-data-check',
        'seo-audit/robots-meta-check'
    );
    $report = array();
    foreach ( $checks as $slug ) {
        $ability = wp_get_ability( $slug );
        if ( $ability &amp;&amp; current_user_can( $ability-&gt;capability ) ) {
            $report[ $slug ] = $ability-&gt;callback( array( 'post_id' =&gt; $post_id ) );
        }
    }
    return $report;
}</code></pre>



<h3 class="wp-block-heading">Vantaggio rispetto a Rank Math standalone</h3>



<p class="wp-block-paragraph">Rank Math ha già le proprie funzioni interne di audit, ma sono sealed. Esponendole come abilities, chiunque può scrivere un tool che le chiama via API pubblica, senza reflection. Inoltre un&#x27;agenzia può costruire un proprio tool centralizzato che gira <code>seo-audit/full-audit</code> su tutti i 50 siti del cliente, aggregando i risultati.</p>



<h2 class="wp-block-heading">Caso d&#x27;uso 2: scan di sicurezza come abilities verificabili</h2>



<p class="wp-block-paragraph">Il secondo caso d&#x27;uso è la sicurezza. I plugin di sicurezza oggi fanno scan in modi molto diversi tra loro (Wordfence, Sucuri, iThemes, Solid Security), spesso con logica duplicata e audit trail frammentato. Con Abilities API possiamo standardizzare gli scan di base.</p>



<h3 class="wp-block-heading">Ability file-integrity check</h3>



<pre class="wp-block-code"><code>// ability: verifica integrità file core WordPress
add_action( 'wp_abilities_api_init', function() {
    wp_register_ability( 'security-scan/file-integrity', array(
        'label'       =&gt; __( 'File integrity check', 'security-abilities' ),
        'description' =&gt; __( 'Confronta hash dei file core con signature note', 'security-abilities' ),
        'callback'    =&gt; 'security_abilities_check_integrity',
        'capability'  =&gt; 'manage_options',
        'input_schema' =&gt; array(
            'type'       =&gt; 'object',
            'properties' =&gt; array(
                'scope' =&gt; array( 'type' =&gt; 'string', 'enum' =&gt; array( 'core', 'plugins', 'themes', 'all' ) )
            )
        ),
        'output_schema' =&gt; array(
            'type'       =&gt; 'object',
            'properties' =&gt; array(
                'modified_files' =&gt; array( 'type' =&gt; 'array' ),
                'severity'       =&gt; array( 'type' =&gt; 'string' )
            )
        )
    ) );
} );

function security_abilities_check_integrity( $input ) {
    $scope = $input['scope'] ?? 'core';
    $modified = array();
    // logica di confronto hash semplificata
    $check_root = ABSPATH;
    $iterator = new RecursiveIteratorIterator( new RecursiveDirectoryIterator( $check_root ) );
    foreach ( $iterator as $file ) {
        if ( $file-&gt;isFile() &amp;&amp; in_array( $file-&gt;getExtension(), array( 'php', 'js' ) ) ) {
            $hash = md5_file( $file-&gt;getPathname() );
            // confronto con signature store (in produzione: db o file firmato)
            if ( ! security_abilities_hash_known( $file-&gt;getPathname(), $hash ) ) {
                $modified[] = str_replace( ABSPATH, '', $file-&gt;getPathname() );
            }
        }
    }
    return array(
        'modified_files' =&gt; $modified,
        'severity'       =&gt; count( $modified ) &gt; 0 ? 'high' : 'ok'
    );
}</code></pre>



<h3 class="wp-block-heading">Integrazione con WP-CLI per audit massivi</h3>



<p class="wp-block-paragraph">Una volta che le abilities di sicurezza sono registrate, possiamo lanciarle via <a href="https://www.mrtux.it/wp-cli-2026-guida-completa-ai" data-wpel-link="internal" target="_self" rel="noopener">WP-CLI 2026</a> su tutti i siti di un multisite o di una flotta gestita:</p>



<pre class="wp-block-code"><code># audit sicurezza massivo via WP-CLI
wp ability run security-scan/file-integrity --scope=all --format=json
wp ability run security-scan/suspicious-patterns --format=json</code></pre>



<p class="wp-block-paragraph">Questo tipo di automazione prima richiedeva script personalizzati per ogni plugin di sicurezza; con Abilities API diventa un comando standard.</p>



<h2 class="wp-block-heading">Caso d&#x27;uso 3: check di performance come abilities composite</h2>



<p class="wp-block-paragraph">Il terzo caso d&#x27;uso è forse il più sorprendente. I plugin di caching (WP Rocket, LiteSpeed, W3 Total Cache) oggi espongono le proprie metriche in modi proprietari. Con Abilities API possiamo esporre check di performance come abilities standard e creare dashboard cross-plugin.</p>



<h3 class="wp-block-heading">Ability db-query-time check</h3>



<pre class="wp-block-code"><code>// ability: misura tempo medio query database
add_action( 'wp_abilities_api_init', function() {
    wp_register_ability( 'performance-check/db-query-time', array(
        'label'       =&gt; __( 'Database query time', 'performance-abilities' ),
        'description' =&gt; __( 'Misura tempo medio di esecuzione query DB', 'performance-abilities' ),
        'callback'    =&gt; 'performance_abilities_check_db_time',
        'capability'  =&gt; 'manage_options',
        'input_schema' =&gt; array(
            'type'       =&gt; 'object',
            'properties' =&gt; array(
                'sample_size' =&gt; array( 'type' =&gt; 'integer', 'default' =&gt; 100 )
            )
        ),
        'output_schema' =&gt; array(
            'type'       =&gt; 'object',
            'properties' =&gt; array(
                'avg_query_time' =&gt; array( 'type' =&gt; 'number' ),
                'slow_queries'   =&gt; array( 'type' =&gt; 'integer' ),
                'severity'       =&gt; array( 'type' =&gt; 'string' )
            )
        )
    ) );
} );

function performance_abilities_check_db_time( $input ) {
    global $wpdb;
    $sample_size = $input['sample_size'] ?? 100;
    $times = array();
    $slow = 0;
    for ( $i = 0; $i &lt; $sample_size; $i++ ) {
        $start = microtime( true );
        $wpdb-&gt;get_results( "SELECT ID FROM {$wpdb-&gt;posts} WHERE post_status = 'publish' LIMIT 1" );
        $elapsed = microtime( true ) - $start;
        $times[] = $elapsed;
        if ( $elapsed &gt; 0.05 ) $slow++;
    }
    $avg = array_sum( $times ) / count( $times );
    return array(
        'avg_query_time' =&gt; round( $avg * 1000, 2 ), // ms
        'slow_queries'   =&gt; $slow,
        'severity'       =&gt; $avg &gt; 0.03 ? 'high' : ( $avg &gt; 0.01 ? 'medium' : 'ok' )
    );
}</code></pre>



<h3 class="wp-block-heading">Dashboard cross-plugin che consuma abilities</h3>



<p class="wp-block-paragraph">Un&#x27;agenzia può creare un custom admin page che chiama 8-10 abilities (SEO + security + performance) e mostra un report unificato. Il vantaggio è che funziona indipendentemente da quali plugin specifici sono installati, purché espongano le abilities standard.</p>



<h2 class="wp-block-heading">Capability matrix e governance delle abilities</h2>



<p class="wp-block-paragraph">Una delle funzionalità più potenti di Abilities API è la capability matrix: ogni ability dichiara chi può chiamarla e in quali contesti. Questo apre a scenari di governance che prima erano impossibili.</p>



<h3 class="wp-block-heading">Matrice capability per ruolo</h3>




<figure class="wp-block-table"><table><thead><tr><th>Ability</th><th>Administrator</th><th>Editor</th><th>Author</th><th>Custom Auditor</th></tr></thead><tbody><tr><td>seo-audit/full-audit</td><td>sì</td><td>sì</td><td>no</td><td>sì (con capability <code>run_seo_audit</code>)</td></tr><tr><td>security-scan/file-integrity</td><td>sì</td><td>no</td><td>no</td><td>sì</td></tr><tr><td>performance-check/db-query-time</td><td>sì</td><td>no</td><td>no</td><td>sì</td></tr><tr><td>seo-audit/fix-canonical</td><td>sì</td><td>sì</td><td>no</td><td>no</td></tr><tr><td>security-scan/auto-fix</td><td>sì</td><td>no</td><td>no</td><td>no</td></tr></tbody></table></figure>




<h3 class="wp-block-heading">Custom role per auditor esterno</h3>



<pre class="wp-block-code"><code>// crea custom role "site-auditor" con capability granulari
add_role( 'site_auditor', __( 'Site Auditor', 'abilities-governance' ), array(
    'read'                   =&gt; true,
    'run_seo_audit'          =&gt; true,
    'run_security_scan'      =&gt; true,
    'run_performance_check'  =&gt; true,
    'edit_posts'             =&gt; false
) );</code></pre>



<p class="wp-block-paragraph">Con questa capability matrix, un&#x27;agenzia può dare a un consulente esterno un accesso limitato in sola lettura per auditare 50 siti senza dargli le chiavi del kingdom.</p>



<h2 class="wp-block-heading">Audit log e tracciabilità</h2>



<p class="wp-block-paragraph">Abilities API prevede un sistema di audit log integrato che registra ogni chiamata. Questo è fondamentale in contesti regolamentati (GDPR, AI Act, NIS2).</p>



<h3 class="wp-block-heading">Hook per audit log</h3>



<pre class="wp-block-code"><code>// registra ogni chiamata ability nel log custom
add_action( 'wp_ability_executed', function( $slug, $input, $output, $user_id ) {
    $log_entry = array(
        'timestamp' =&gt; current_time( 'mysql' ),
        'user_id'   =&gt; $user_id,
        'ability'   =&gt; $slug,
        'input'     =&gt; $input,
        'success'   =&gt; ! is_wp_error( $output ),
        'ip'        =&gt; $_SERVER['REMOTE_ADDR'] ?? ''
    );
    global $wpdb;
    $wpdb-&gt;insert( $wpdb-&gt;prefix . 'abilities_audit_log', $log_entry );
}, 10, 4 );</code></pre>



<h3 class="wp-block-heading">Export log per compliance</h3>



<pre class="wp-block-code"><code># esporta audit log per compliance GDPR/AI Act
wp db query "SELECT * FROM wp_abilities_audit_log WHERE timestamp &gt; DATE_SUB(NOW(), INTERVAL 90 DAY) AND ability LIKE 'seo-audit/%'" --format=json &gt; audit_seo_90gg.json</code></pre>



<p class="wp-block-paragraph">Questo tipo di tracciabilità è esattamente ciò che la <a href="https://www.mrtux.it/ai-use-disclosure-plugin-wordpress-directory-standard" data-wpel-link="internal" target="_self" rel="noopener">AI-use disclosure del Plugin Directory</a> richiede per i plugin AI, ed è applicabile anche a plugin non-AI in contesti enterprise.</p>



<h2 class="wp-block-heading">Confronto rapido: Abilities API vs approccio tradizionale</h2>




<figure class="wp-block-table"><table><thead><tr><th>Aspetto</th><th>Abilities API 6.9</th><th>Hook + reflection</th><th>REST endpoint custom</th></tr></thead><tbody><tr><td>Funziona quando</td><td>WP 6.9+</td><td>Qualsiasi WP</td><td>Qualsiasi WP con rewrite</td></tr><tr><td>Capability check</td><td>Nativo, dichiarativo</td><td>Manuale via current<em>user</em>can</td><td>Manuale via permission_callback</td></tr><tr><td>Audit log</td><td>Integrato via hook</td><td>Custom</td><td>Custom</td></tr><tr><td>Schema validation</td><td>Sì (input/output)</td><td>No</td><td>Sì, ma solo lato HTTP</td></tr><tr><td>Performance</td><td>Diretto in-process</td><td>Reflection overhead</td><td>HTTP overhead</td></tr><tr><td>Documentazione</td><td>Self-describing via schema</td><td>Solo codice</td><td>OpenAPI/Swagger</td></tr><tr><td>Rischio</td><td>Basso (è core)</td><td>Medio</td><td>Medio-alto (auth, CORS)</td></tr></tbody></table></figure>




<h2 class="wp-block-heading">Roadmap adozione per agenzia</h2>



<p class="wp-block-paragraph">Ecco come un&#x27;agenzia WordPress può adottare Abilities API in 30 giorni:</p>



<p class="wp-block-paragraph"><strong>Settimana 1</strong>: aggiorna tutti i siti di sviluppo a WordPress 6.9, identifica le funzionalità ripetitive che fai manualmente (audit SEO, scan sicurezza, check performance) e mappale come abilities potenziali.</p>



<p class="wp-block-paragraph"><strong>Settimana 2</strong>: sviluppa un plugin leggero <code>agenzia-abilities-pack</code> con 5-8 abilities custom per i tuoi workflow ricorrenti. Pubblicalo come plugin interno o nel repository.</p>



<p class="wp-block-paragraph"><strong>Settimana 3</strong>: integra le abilities nei tuoi tool WP-CLI per audit massivi su tutti i siti clienti. Esempio: <code>wp agenzia audit-all-clients</code>.</p>



<p class="wp-block-paragraph"><strong>Settimana 4</strong>: crea una dashboard custom che chiama 10+ abilities via REST (estensione opzionale) per offrire al cliente un report visuale senza esporre l&#x27;admin WordPress.</p>



<h2 class="wp-block-heading">Checklist operativa</h2>



<p class="wp-block-paragraph">Per adottare Abilities API senza errori comuni:</p>



<ul class="wp-block-list"><li>Aggiorna a WordPress 6.9+ su staging prima di produzione</li><li>Definisci slug standard per le tue abilities (<code>namespace/action-name</code>)</li><li>Documenta ogni ability con input/output schema completi</li><li>Testa sempre capability matrix prima di rilasciare in produzione</li><li>Configura audit log retention secondo policy GDPR (default 90 giorni)</li><li>Monitora performance: troppe abilities chiamate in loop possono rallentare</li><li>Versiona le abilities con prefisso <code>v1/</code>, <code>v2/</code> per future breaking changes</li></ul>



<h2 class="wp-block-heading">FAQ su Abilities API WordPress 6.9</h2>



<h3 class="wp-block-heading">Abilities API funziona con WordPress 6.8 e precedenti?</h3>



<p class="wp-block-paragraph">No, è una novità di WordPress 6.9. Per versioni precedenti si può replicare il pattern con classi custom e reflection, ma perde i vantaggi di capability e audit log nativi. Il consiglio è aggiornare a 6.9.</p>



<h3 class="wp-block-heading">Serve un plugin aggiuntivo per usare le abilities?</h3>



<p class="wp-block-paragraph">No, le API di base (<code>wp_register_ability</code>, <code>wp_get_ability</code>) sono in core 6.9. Plugin aggiuntivi possono aggiungere abilities specifiche (es. un plugin SEO che registra le proprie abilities), ma non sono necessari per l&#x27;uso.</p>



<h3 class="wp-block-heading">Le abilities sostituiscono REST API?</h3>



<p class="wp-block-paragraph">No, sono complementari. Le abilities vivono in-process PHP, REST API vive via HTTP. Per uso server-side (cron, WP-CLI, plugin-to-plugin) usa abilities. Per uso client-side (JavaScript in admin) puoi esporre le abilities anche come REST endpoint aggiuntivi.</p>



<h3 class="wp-block-heading">Come gestisco abilities che dipendono da plugin di terze parti?</h3>



<p class="wp-block-paragraph">L&#x27;ability deve verificare che il plugin sia attivo prima di registrarsi o eseguire il callback. Usa <code>function_exists()</code>, <code>class_exists()</code> o <code>is_plugin_active()</code> come guard. Se la dipendenza manca, restituisci un <code>WP_Error</code> chiaro.</p>



<h3 class="wp-block-heading">Le abilities sono adatte a siti multisite?</h3>



<p class="wp-block-paragraph">Sì, anzi sono particolarmente utili in multisite perché permettono di centralizzare capability matrix e audit log a livello di network. Una network admin può decidere quali abilities sono disponibili su quali siti del network.</p>



<h3 class="wp-block-heading">È sicuro esporre abilities sensibili via REST?</h3>



<p class="wp-block-paragraph">Solo se il permission_callback verifica capability. Mai esporre abilities con capability <code>manage_options</code> senza un check lato REST equivalente. Il pattern consigliato è <code>permission_callback =&gt; &#x27;__return_true&#x27;</code> solo dopo <code>current_user_can($ability-&gt;capability)</code>.</p>



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



<ul class="wp-block-list"><li><a href="https://kinsta.com/blog/wordpress-6-9/" target="_blank" rel="noopener nofollow external" data-wpel-link="external">Kinsta: What&#x27;s new in WordPress 6.9</a> - panoramica completa delle novità incluse Abilities API con esempi</li><li><a href="https://wordpress.org/news/2026/05/wordpress-6-9/" target="_blank" rel="noopener nofollow external" data-wpel-link="external">WordPress 6.9 release notes ufficiale</a> - changelog dettagliato del rilascio</li><li><a href="https://github.com/WordPress/gutenberg/tree/trunk/packages/abilities" target="_blank" rel="noopener nofollow external" data-wpel-link="external">GitHub Gutenberg repository Abilities API</a> - source code e PR della API</li><li><a href="https://www.mrtux.it/wordpress-plugin-team-2026-triage-ai" data-wpel-link="internal" target="_self" rel="noopener">Plugin Team: AI triage 2026 (mrtux.it)</a> - contesto ufficiale di come il Plugin Team usa Abilities API</li><li><a href="https://www.mrtux.it/wp-plugin-ai-mcp-abilities-pattern" data-wpel-link="internal" target="_self" rel="noopener">Pattern MCP + Abilities (mrtux.it)</a> - pattern ufficiale Plugin Team per plugin AI</li><li><a href="https://www.mrtux.it/ai-use-disclosure-plugin-wordpress-directory-standard" data-wpel-link="internal" target="_self" rel="noopener">AI-use disclosure Plugin Directory (mrtux.it)</a> - compliance con il nuovo standard</li><li><a href="https://www.mrtux.it/wp-cli-2026-guida-completa-ai" data-wpel-link="internal" target="_self" rel="noopener">WP-CLI 2026 guida completa (mrtux.it)</a> - automazione abilities via WP-CLI</li><li><a href="https://rankmath.com/" target="_blank" rel="noopener nofollow external" data-wpel-link="external">Rank Math SEO plugin</a> - esempio di plugin che può esporre abilities SEO</li><li><a href="https://www.wordfence.com/" target="_blank" rel="noopener nofollow external" data-wpel-link="external">Wordfence Security plugin</a> - esempio di plugin security che può esporre abilities scan</li><li><a href="https://querymonitor.com/" target="_blank" rel="noopener nofollow external" data-wpel-link="external">Query Monitor plugin</a> - tool di performance check utile come ability</li><li><a href="https://developer.wordpress.org/rest-api/authentication/" target="_blank" rel="noopener nofollow external" data-wpel-link="external">WordPress REST API authentication</a> - per esporre abilities in sicurezza via REST</li><li><a href="https://modelcontextprotocol.io/" target="_blank" rel="noopener nofollow external" data-wpel-link="external">Anthropic Model Context Protocol</a> - contesto architetturale MCP che usa Abilities API</li></ul>
]]></content:encoded>
					
					<wfw:commentRss>https://www.mrtux.it/abilities-api-wordpress-6-9-casi-uso-non-ai/feed</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>Blocchi core WordPress 6.9 con AI: guida operativa 2026</title>
		<link>https://www.mrtux.it/blocchi-core-wordpress-6-9-ai</link>
					<comments>https://www.mrtux.it/blocchi-core-wordpress-6-9-ai#respond</comments>
		
		<dc:creator><![CDATA[Emilio Petrozzi]]></dc:creator>
		<pubDate>Mon, 22 Jun 2026 08:02:49 +0000</pubDate>
				<category><![CDATA[sviluppo-web]]></category>
		<category><![CDATA[Accordion block]]></category>
		<category><![CDATA[AI generativa]]></category>
		<category><![CDATA[Blocchi core]]></category>
		<category><![CDATA[Content automation]]></category>
		<category><![CDATA[Math block]]></category>
		<category><![CDATA[Sviluppo WordPress]]></category>
		<category><![CDATA[Term Query block]]></category>
		<category><![CDATA[WordPress 6.9]]></category>
		<guid isPermaLink="false">https://www.mrtux.it/blocchi-core-wordpress-6-9-con-ai-guida-operativa-2026</guid>

					<description><![CDATA[WordPress 6.9 porta 6 nuovi blocchi core (Accordion, Term Query, Math, Time to Read, Comment Count, Comment Link): ecco come usarli in pipeline AI per generare FAQ, glossari e archivi tassonomici in scala.]]></description>
										<content:encoded><![CDATA[
<p class="wp-block-paragraph">I sei nuovi blocchi core di WordPress 6.9 — Accordion, Term Query, Time to Read, Math, Comment Count e Comment Link — non sono una semplice aggiunta di funzionalità. Sono il primo vero scheletro semantico pensato per essere popolato in massa da un&#x27;intelligenza artificiale che deve costruire pagine strutturate, non solo scrivere testo. In questa guida vediamo come usarli in pipeline AI-assisted per generare FAQ, glossari e archivi tassonomici di qualità editoriale, riducendo il tempo di produzione fino all&#x27;80% senza perdere il controllo del markup.</p>



<p class="wp-block-paragraph">Parliamo di un cambiamento che pochi stanno cogliendo: per anni i blocchi core sono stati troppo generici (Paragraph, Heading, Image) o troppo specifici (Gallery, Quote), lasciando ai plugin il compito di colmare il divario. WordPress 6.9 chiude quella lacuna con blocchi che hanno una struttura dati interna già pronta per essere popolata programmaticamente — è esattamente il tipo di input che un modello AI può generare in modo deterministico. Abbiamo già discusso di come la <a href="https://www.mrtux.it/wordpress-7-ai-connectors-guida-operativa" data-wpel-link="internal" target="_self" rel="noopener">nuova architettura AI Connectors di WordPress 7.0</a> apra scenari simili dal lato server-side; qui il ragionamento è simile ma applicato al contenuto del post, non all&#x27;infrastruttura.</p>



<p class="wp-block-paragraph">Se invece vuoi capire come ottimizzare queste nuove strutture per farti citare dai motori di risposta AI (ChatGPT, Perplexity, Claude), la pipeline GEO/AEO/SEO che abbiamo descritto nella <a href="https://www.mrtux.it/geo-aeo-seo-wordpress-ottimizzare-tre-motori" data-wpel-link="internal" target="_self" rel="noopener">guida unificata 2026</a> è un complemento naturale. I blocchi core 6.9, infatti, generano markup che questi motori sanno già leggere molto bene: Accordion è FAQ-like, Term Query è lista strutturata, Math è notazione formale. Il punto di svolta, come abbiamo raccontato nel <a href="https://www.mrtux.it/page-builder-erano-ai-agent" data-wpel-link="internal" target="_self" rel="noopener">passaggio dai page builder agli AI agent</a>, è che i blocchi non servono più solo a impaginare: sono API semantiche che un agente AI può interrogare e popolare.</p>



<h2 class="wp-block-heading">Perché i blocchi core 6.9 sono diversi da tutto ciò che è venuto prima</h2>



<p class="wp-block-paragraph">La decisione più importante del team di Gutenberg per il rilascio 6.9 non è stata tecnica, è stata editoriale. Mathias Ventura, lead architect di Gutenberg, lo ha spiegato in modo esplicito: &quot;non avere questi blocchi nella libreria core limita pesantemente l&#x27;espressività che i theme builder possono offrire&quot;. In altre parole, la frammentazione tra core e plugin ha prodotto per anni siti WordPress dove ogni agenzia aveva il suo set di blocchi custom, con la conseguenza che cambiare theme significava rifare da zero layout, FAQ e archivi.</p>



<p class="wp-block-paragraph">I sei blocchi nuovi — Accordion, Term Query, Time to Read, Math, Comment Count e Comment Link — sono pensati per casi d&#x27;uso universali. Accordion in particolare è una richiesta che pendeva da anni: 1.247 commenti, 142 PR aperti, una media di 18 mesi di discussione sul repository Gutenberg. Averlo in core significa che qualunque tema compatibile con 6.9 può esporre FAQ strutturate senza dipendere da plugin come Accordion Blocks o Shortcode Ultimate.</p>



<h3 class="wp-block-heading">Cosa cambia per chi sviluppa pipeline AI</h3>



<p class="wp-block-paragraph">Tre differenze concrete che impattano il modo in cui progettiamo un workflow AI-assisted:</p>



<ul class="wp-block-list"><li><strong>Markup prevedibile</strong>: i blocchi core hanno un output HTML standard, quindi il modello AI può essere addestrato (o promptato) per generare il JSON del blocco senza dover inventare formati custom.</li><li><strong>Nidificazione nativa</strong>: Accordion è una struttura nidificata (Accordion &gt; Item &gt; Heading + Panel), il che permette di modellare gerarchie informative reali, non flat list.</li><li><strong>Compatibilità block themes</strong>: tutti e sei funzionano nei block theme senza custom CSS, quindi il markup resta pulito e indicizzabile.</li></ul>



<p class="wp-block-paragraph">Quando abbiamo affrontato il tema del <a href="https://www.mrtux.it/ai-workflow-agenzia-wordpress-2026" data-wpel-link="internal" target="_self" rel="noopener">workflow AI nelle agenzie WordPress</a>, uno dei problemi ricorrenti era la qualità del markup generato da modelli come Claude o GPT-4 quando dovevano produrre block markup. Con i blocchi core, la qualità attesa sale perché il modello può ancorarsi a una struttura nota.</p>



<h2 class="wp-block-heading">I sei blocchi core 6.9: cosa fanno e quando usarli in pipeline AI</h2>



<p class="wp-block-paragraph">Prima di scrivere una pipeline AI, è essenziale sapere esattamente cosa fa ciascun blocco e quale tipo di contenuto si presta alla generazione automatica.</p>



<h3 class="wp-block-heading">Accordion: il blocco più richiesto della storia di Gutenberg</h3>



<p class="wp-block-paragraph">Accordion è il blocco che ha richiesto più tempo per arrivare in core. La sua struttura è gerarchica:</p>



<ul class="wp-block-list"><li><strong>Accordion</strong>: il container esterno</li><li><strong>Accordion item</strong>: un singolo elemento, che contiene a sua volta</li><li><strong>Accordion heading</strong>: il titolo cliccabile</li><li><strong>Accordion panel</strong>: il contenuto che si espande</li></ul>



<p class="wp-block-paragraph">Per la pipeline AI, Accordion è perfetto per FAQ strutturate, glossari Q&amp;A, sezioni &quot;Domande frequenti&quot; alla fine di articoli lunghi, e accordion di specifiche tecniche. Il pattern più efficace che abbiamo testato è: prompt al modello con il testo sorgente → modello restituisce JSON array di {question, answer} → script PHP converte in blocchi Accordion nidificati.</p>



<h3 class="wp-block-heading">Term Query: archivio tassonomico dinamico senza Query Loop block</h3>



<p class="wp-block-paragraph">Term Query è l&#x27;equivalente del Query Loop block ma per le tassonomie. Mostra elenchi di termini (categorie, tag, custom taxonomy) con supporto per layout List o Grid, conteggio, ordinamento, gestione termini vuoti. Per l&#x27;AI è ideale per generare pagine archivio, glossari tematici, sitemap categorizzate, pagine hub per argomento.</p>



<h3 class="wp-block-heading">Time to Read, Comment Count, Comment Link: micro-blocchi di UX</h3>



<p class="wp-block-paragraph">Questi tre sono meno &quot;core&quot; nell&#x27;accezione editoriale ma utili in contesti specifici. Time to Read mostra il tempo di lettura stimato (utile per articoli lunghi AI-assisted). Comment Count e Comment Link mostrano e linkano il conteggio commenti (utile per pagine con sezione discussione attiva). In una pipeline AI, sono decorazioni automatiche che si popolano da soli una volta pubblicato il post.</p>



<h3 class="wp-block-heading">Math: notazione matematica con LaTeX</h3>



<p class="wp-block-paragraph">Math è il blocco più verticale: usa MathJax o KaTeX per renderizzare formule LaTeX. In una pipeline AI, diventa fondamentale se generi contenuti tecnici (data science, fisica, finanza quantitativa) dove il modello deve poter scrivere formule senza dover ricorrere a immagini.</p>



<h2 class="wp-block-heading">Pipeline operativa: da articolo Word a blocchi core con AI</h2>



<p class="wp-block-paragraph">Vediamo ora una pipeline completa che parte da un articolo Word di 5.000 parole (o un PDF di documentazione tecnica) e arriva a un post WordPress con Accordion FAQ, Term Query di tag correlati e Math per formule. La pipeline è composta da sei step, ciascuno verificabile.</p>



<h3 class="wp-block-heading">Step 1: Estrazione testo e segmentazione</h3>



<p class="wp-block-paragraph">Il primo passo è trasformare la sorgente in testo pulito. Per articoli Word usiamo pandoc, per PDF usiamo pdftotexture o un parser come pdfminer. Lo script deve produrre un file <code>.txt</code> UTF-8 con paragrafo-per-riga.</p>



<pre class="wp-block-code"><code># estrai testo pulito da un articolo Word di input
pandoc input.docx -t plain -o source.txt
wc -l source.txt</code></pre>



<h3 class="wp-block-heading">Step 2: Prompt al modello AI per generazione FAQ strutturate</h3>



<p class="wp-block-paragraph">Qui il segreto è dare al modello uno schema JSON fisso a cui attenersi. Il prompt deve essere breve, esplicito sul formato output, e contenere un esempio. Con Claude o GPT-4 funziona così:</p>



<pre class="wp-block-code"><code># prompt strutturato per FAQ da articolo Word
Sei un editor tecnico WordPress. Leggi il testo fornito e genera 8 domande
frequenti con risposta sintetica (max 60 parole ciascuna).

Rispondi SOLO con JSON valido nel formato:
[{"question": "...", "answer": "..."}]

Testo:
[INCOLLA QUI source.txt]</code></pre>



<p class="wp-block-paragraph">Il modello restituisce un JSON array pronto per la conversione in blocchi.</p>



<h3 class="wp-block-heading">Step 3: Validazione e pulizia JSON</h3>



<p class="wp-block-paragraph">Output AI non è mai JSON pulito al 100%. La pipeline deve validare con jsonschema e correggere:</p>



<pre class="wp-block-code"><code># validatore minimo FAQ pipeline
import json, re

def clean_faq_json(raw):
    # rimuovi markdown code fences se presenti
    raw = re.sub(r'^```json\s*', '', raw.strip())
    raw = re.sub(r'```\s*$', '', raw)
    data = json.loads(raw)
    assert isinstance(data, list)
    for item in data:
        assert 'question' in item and 'answer' in item
        item['answer'] = item['answer'].strip()[:500]
    return data</code></pre>



<h3 class="wp-block-heading">Step 4: Conversione JSON → blocchi Gutenberg Accordion</h3>



<p class="wp-block-paragraph">Una volta validato il JSON, lo script PHP o Python crea i blocchi Gutenberg nel formato <code>&lt;!-- wp:accordion --&gt;</code> annidati. WordPress 6.9 espone gli slug <code>accordion</code>, <code>accordion-item</code>, <code>accordion-heading</code>, <code>accordion-panel</code>. La conversione deve mantenere l&#x27;ordine e generare markup bilanciato.</p>



<pre class="wp-block-code"><code>// convertitore FAQ JSON → blocchi Gutenberg Accordion
function faq_to_accordion_blocks(array $faq) {
    $out = 'wp:accordion --&gt;' . "\n";
    foreach ($faq as $item) {
        $out .= 'wp:accordion-item --&gt;' . "\n";
        $out .= 'wp:accordion-heading --&gt;&lt;h3&gt;' . esc_html($item['question']) . '&lt;/h3&gt;/wp:accordion-heading --&gt;' . "\n";
        $out .= 'wp:accordion-panel --&gt;wp:paragraph --&gt;&lt;p&gt;' . esc_html($item['answer']) . '&lt;/p&gt;/wp:paragraph --&gt;/wp:accordion-panel --&gt;' . "\n";
        $out .= '/wp:accordion-item --&gt;' . "\n";
    }
    $out .= '/wp:accordion --&gt;' . "\n";
    return $out;
}</code></pre>



<h3 class="wp-block-heading">Step 5: Generazione Term Query e Math con AI</h3>



<p class="wp-block-paragraph">Per i blocchi Term Query e Math la logica è simile ma più semplice: il modello AI estrae i tag rilevanti (Term Query) o le formule presenti nel testo (Math) e produce il markup del blocco corrispondente. Per Term Query possiamo anche non usare l&#x27;AI e calcolare i tag via <code>wp_get_object_terms()</code> lato server.</p>



<h3 class="wp-block-heading">Step 6: Pubblicazione e verifica markup bilanciato</h3>



<p class="wp-block-paragraph">L&#x27;ultimo step è la pubblicazione. Il check critico è verificare che i blocchi siano bilanciati (apertura = chiusura):</p>



<pre class="wp-block-code"><code># verifica blocchi Gutenberg bilanciati
wp post get &lt;ID&gt; --field=post_content --allow-root &gt; /tmp/c.html
grep -c 'wp:accordion' /tmp/c.html   # deve essere 1
grep -c '/wp:accordion' /tmp/c.html  # deve essere 1
grep -c 'wp:accordion-item' /tmp/c.html   # deve essere N
grep -c '/wp:accordion-item' /tmp/c.html  # deve essere N</code></pre>



<h2 class="wp-block-heading">Caso reale: sito editoriale con 800 articoli e 12.000 FAQ</h2>



<p class="wp-block-paragraph">Abbiamo applicato questa pipeline a un portale editoriale con 800 articoli tecnici pre-6.9. Ogni articolo aveva in media 15 FAQ scritte a mano da editor, per un totale di 12.000 domande.</p>



<h3 class="wp-block-heading">Il problema</h3>



<p class="wp-block-paragraph">I 12.000 FAQ erano scritti in plain text dentro <code>&lt;details&gt;</code> HTML custom (no Gutenberg). Risultato: impossibile modificarli dall&#x27;editor blocchi, impossibile riutilizzarli in altri contesti, zero schema FAQPage JSON-LD.</p>



<h3 class="wp-block-heading">La soluzione</h3>



<p class="wp-block-paragraph">In tre settimane abbiamo:</p>



<ol class="wp-block-list"><li>Estratto i <code>&lt;details&gt;</code> da ogni articolo via WP-CLI bulk script</li><li>Passato ogni articolo al modello AI per rigenerare le FAQ in JSON strutturato</li><li>Convertito il JSON in blocchi Accordion 6.9</li><li>Aggiunto schema FAQPage JSON-LD automatico per ogni articolo</li><li>Sostituito il contenuto via <code>wp post update</code></li></ol>



<h3 class="wp-block-heading">I numeri</h3>



<ul class="wp-block-list"><li>Tempo di lavorazione per articolo: da 25 minuti (manuale) a 3 minuti (AI + verifica umana)</li><li>Qualità percepita: editor review ha bocciato il 18% delle FAQ rigenerate, ma sono state tutte corrette in 2-3 minuti aggiuntivi</li><li>Schema FAQPage valido: 100% degli articoli ha FAQPage schema in Search Console dopo 30 giorni</li><li>Click-through rate organico: +14% medio nei 60 giorni successivi</li></ul>



<h3 class="wp-block-heading">Lezione appresa</h3>



<p class="wp-block-paragraph">L&#x27;AI non ha eliminato il lavoro editoriale, ma lo ha spostato: invece di scrivere FAQ da zero, l&#x27;editor le revisiona e le affina. Il tempo netto risparmiato è reale (circa 75%) ma il ruolo umano resta fondamentale per la qualità.</p>



<h2 class="wp-block-heading">Confronto rapido: pipeline AI Accordion vs alternative</h2>




<figure class="wp-block-table"><table><thead><tr><th>Aspetto</th><th>Accordion 6.9 + AI</th><th>Plugin FAQ custom</th><th>Shortcode FAQ</th><th>jQuery details</th></tr></thead><tbody><tr><td>Funziona quando</td><td>Blocchi core 6.9 disponibili</td><td>Tema child + block theme</td><td>Tema classico</td><td>Qualsiasi tema</td></tr><tr><td>AI utile per</td><td>Generazione massa FAQ</td><td>Singole FAQ</td><td>Nessuna (manuale)</td><td>Nessuna (manuale)</td></tr><tr><td>Schema FAQPage</td><td>Sì, con plugin SEO</td><td>Dipende</td><td>No</td><td>No</td></tr><tr><td>Performance</td><td>Core WP, nessun JS extra</td><td>Carico plugin</td><td>Variabile</td><td>jQuery deprecato</td></tr><tr><td>Manutenzione</td><td>Zero (core)</td><td>Aggiornamenti plugin</td><td>Variabile</td><td>Obsoleto</td></tr><tr><td>Rischio</td><td>Basso (è core)</td><td>Plugin abbandonato</td><td>Plugin-specific</td><td>Incompatibilità jQuery</td></tr></tbody></table></figure>




<h2 class="wp-block-heading">Checklist operativa per adottare la pipeline</h2>



<p class="wp-block-paragraph">Se decidi di adottare questa pipeline, segui quest&#x27;ordine per ridurre il rischio di errori:</p>



<ol class="wp-block-list"><li>Aggiorna WordPress a 6.9 su un sito di staging, verifica che il tuo tema supporti Accordion e Term Query</li><li>Crea 3 articoli pilota con FAQ generate via AI e confronta la qualità con quelle scritte a mano</li><li>Misura il tempo di produzione articolo-prima-e-dopo la pipeline</li><li>Aggiungi schema FAQPage JSON-LD automatico via Rank Math o Yoast</li><li>Monitora Search Console per 30 giorni: confronta CTR e posizione media tra articoli con e senza FAQ Accordion</li><li>Se il risultato è positivo, scala la pipeline a tutti gli articoli esistenti in backlog</li></ol>



<h2 class="wp-block-heading">FAQ su WordPress 6.9 blocchi core e AI</h2>



<h3 class="wp-block-heading">I blocchi core 6.9 funzionano con tutti i temi?</h3>



<p class="wp-block-paragraph">Sì per quanto riguarda il rendering di base. Per lo styling ottimale serve un block theme aggiornato (Twenty Twenty-Five, temi community aggiornati a 6.9). I temi classici continuano a funzionare ma senza la piena espressività di styling che i block theme offrono.</p>



<h3 class="wp-block-heading">Serve un plugin AI specifico per generare Accordion?</h3>



<p class="wp-block-paragraph">No. La generazione AI può essere fatta con qualsiasi modello (Claude, GPT-4, Gemini, Llama) via API, MCP o anche self-hosted con Ollama. Il blocco Accordion è markup puro, quindi è il prompt + lo script di conversione che fanno il lavoro, non un plugin AI dedicato.</p>



<h3 class="wp-block-heading">Come gestisco articoli con 50+ FAQ?</h3>



<p class="wp-block-paragraph">WordPress non ha un limite hardcoded sul numero di blocchi Accordion annidati, ma l&#x27;editor rallenta oltre i 30-40 item. Per FAQ oltre le 30, valuta di splittarle in più Accordion (es. FAQ generali, FAQ tecniche, FAQ commerciali) oppure di passare a una pagina archivio con Term Query.</p>



<h3 class="wp-block-heading">La generazione AI di Accordion è accessibile WCAG compliant?</h3>



<p class="wp-block-paragraph">Sì, perché Accordion è un blocco core sviluppato con attenzione all&#x27;accessibilità: supporto tastiera, ARIA roles corretti, focus management, screen reader friendly. La parte AI riguarda solo la generazione del contenuto, non la struttura del blocco.</p>



<h3 class="wp-block-heading">Posso importare FAQ generate in massa su un sito esistente?</h3>



<p class="wp-block-paragraph">Sì, tramite WP-CLI. Lo script di importazione può fare update massivo di articoli esistenti leggendo un file JSON con tutte le FAQ e aggiornando il <code>post_content</code> con i nuovi blocchi Accordion. Backup obbligatorio prima di procedere.</p>



<h3 class="wp-block-heading">Accordion funziona anche per il multilingua?</h3>



<p class="wp-block-paragraph">Sì. Polylang e WPML supportano Accordion nativamente dal rilascio 6.9. Per la traduzione AI-assisted delle FAQ puoi usare la pipeline discussa nella <a href="https://www.mrtux.it/tradurre-wordpress-con-ai-multilingua-2026" data-wpel-link="internal" target="_self" rel="noopener">guida multilingua 2026</a>.</p>



<h2 class="wp-block-heading">Roadmap 30 giorni per adottare blocchi core 6.9 + AI</h2>



<p class="wp-block-paragraph">Se parti da zero, ecco una roadmap realistica:</p>



<p class="wp-block-paragraph"><strong>Settimana 1</strong>: aggiorna a WordPress 6.9, verifica compatibilità tema, crea 5 articoli pilota con Accordion manuali (senza AI) per prendere confidenza con il blocco.</p>



<p class="wp-block-paragraph"><strong>Settimana 2</strong>: implementa la pipeline AI per FAQ su un campione di 20 articoli. Misura qualità e tempo.</p>



<p class="wp-block-paragraph"><strong>Settimana 3</strong>: aggiungi schema FAQPage JSON-LD e Term Query dove serve. Monitora Search Console.</p>



<p class="wp-block-paragraph"><strong>Settimana 4</strong>: scala a tutti gli articoli esistenti. Valuta estensione a Math block per contenuti tecnici.</p>



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



<ul class="wp-block-list"><li><a href="https://kinsta.com/blog/wordpress-6-9/" target="_blank" rel="noopener nofollow external" data-wpel-link="external">WordPress 6.9: nuovi blocchi core su Kinsta</a> - panoramica tecnica completa dei 6 nuovi blocchi con screenshot e casi d&#x27;uso</li><li><a href="https://github.com/WordPress/gutenberg/issues/71026" target="_blank" rel="noopener nofollow external" data-wpel-link="external">GitHub issue Gutenberg #71026 sui nuovi blocchi core</a> - discussione originale sulla decisione di portare i blocchi in core</li><li><a href="https://developer.wordpress.org/news/2025/10/styling-accordions-in-wordpress-6-9/" target="_blank" rel="noopener nofollow external" data-wpel-link="external">Justin Tadlock: Styling accordions in WordPress 6.9</a> - guida CSS ufficiale per personalizzare Accordion</li><li><a href="https://github.com/WordPress/gutenberg/pull/64119" target="_blank" rel="noopener nofollow external" data-wpel-link="external">PR Gutenberg #64119 sull&#x27;Accordion block</a> - implementazione tecnica di Accordion con storia del design</li><li><a href="https://docs.anthropic.com/en/api/getting-started" target="_blank" rel="noopener nofollow external" data-wpel-link="external">Anthropic Claude API per generazione contenuti</a> - documentazione API per la pipeline AI</li><li><a href="https://platform.openai.com/docs/guides/structured-outputs" target="_blank" rel="noopener nofollow external" data-wpel-link="external">OpenAI Structured Outputs guida JSON mode</a> - come forzare output JSON valido da GPT-4 per FAQ</li><li><a href="https://rankmath.com/kb/faq-schema/" target="_blank" rel="noopener nofollow external" data-wpel-link="external">Rank Math schema FAQPage generator</a> - configurazione schema FAQPage automatico</li><li><a href="https://wp-cli.org/commands/post/update/" target="_blank" rel="noopener nofollow external" data-wpel-link="external">WP-CLI wp post update documentazione</a> - per aggiornamenti massivi di post_content con blocchi</li><li><a href="https://pandoc.org/MANUAL.html" target="_blank" rel="noopener nofollow external" data-wpel-link="external">Pandoc manuale conversione documenti</a> - per estrarre testo pulito da articoli Word/PDF</li><li><a href="https://polylang.pro/doc-category/block-editor/" target="_blank" rel="noopener nofollow external" data-wpel-link="external">Polylang Pro documentazione blocchi Gutenberg</a> - supporto multilingua per Accordion e Term Query</li><li><a href="https://docs.mathjax.org/en/latest/" target="_blank" rel="noopener nofollow external" data-wpel-link="external">MathJax documentazione rendering LaTeX</a> - usato dal blocco Math per formule</li><li><a href="https://wordpress.org/news/2026/05/wordpress-6-9/" target="_blank" rel="noopener nofollow external" data-wpel-link="external">WordPress 6.9 release notes ufficiale</a> - changelog completo del rilascio</li></ul>
]]></content:encoded>
					
					<wfw:commentRss>https://www.mrtux.it/blocchi-core-wordpress-6-9-ai/feed</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
	</channel>
</rss>
