<?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>wp-cli - Web Design | Creazione Siti Internet</title>
	<atom:link href="https://www.mrtux.it/tag/wp-cli/feed" rel="self" type="application/rss+xml" />
	<link>https://www.mrtux.it</link>
	<description>Sviluppo Siti Web - Assistenza WordPress</description>
	<lastBuildDate>Fri, 05 Jun 2026 03:26:30 +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>wp-cli - Web Design | Creazione Siti Internet</title>
	<link>https://www.mrtux.it</link>
	<width>32</width>
	<height>32</height>
</image> 
	<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>
		<item>
		<title>Creare plugin WordPress attraverso l&#039;Intelligenza Artificiale</title>
		<link>https://www.mrtux.it/creare-plugin-wordpress-attraverso-lintelligenza-artificiale</link>
					<comments>https://www.mrtux.it/creare-plugin-wordpress-attraverso-lintelligenza-artificiale#respond</comments>
		
		<dc:creator><![CDATA[Emilio Petrozzi]]></dc:creator>
		<pubDate>Wed, 20 May 2026 15:22:59 +0000</pubDate>
				<category><![CDATA[Intelligenza artificiale]]></category>
		<category><![CDATA[sviluppo-web]]></category>
		<category><![CDATA[Wordpress]]></category>
		<category><![CDATA[AI Coding]]></category>
		<category><![CDATA[intelligenza artificiale]]></category>
		<category><![CDATA[plugin wordpress]]></category>
		<category><![CDATA[Sviluppo WordPress]]></category>
		<category><![CDATA[tutorial]]></category>
		<category><![CDATA[wordpress]]></category>
		<category><![CDATA[wp-cli]]></category>
		<guid isPermaLink="false">https://www.mrtux.it/?p=3380</guid>

					<description><![CDATA[Guida pratica per creare plugin WordPress con l'intelligenza artificiale: prompt, codice PHP, sicurezza, WP-CLI, link a risorse ufficiali e checklist SEO.]]></description>
										<content:encoded><![CDATA[<p>Creare un plugin WordPress con l'intelligenza artificiale non significa copiare codice da una chat e sperare che funzioni. Significa usare l'AI come acceleratore tecnico dentro un processo controllato: requisiti chiari, prompt precisi, codice piccolo, revisione di sicurezza, test in staging e solo dopo pubblicazione.</p>
<p>La promessa e' potente: trasformare un'idea in una funzionalita' installabile in pochi minuti. Il rischio, pero', e' altrettanto concreto: un plugin generato male puo' aprire problemi di sicurezza, rallentare il sito, salvare dati nel modo sbagliato o entrare in conflitto con altri componenti.</p>
<p>Questa guida mostra un metodo pratico per creare plugin WordPress attraverso l'intelligenza artificiale senza cadere nella trappola del codice casuale. Troverai prompt, architettura, esempi PHP, checklist SEO e riferimenti ufficiali. Se vuoi approfondire il metodo da prompt a codice, leggi anche l'articolo su <a href="https://www.mrtux.it/dal-prompt-al-plugin-wordpress-ai" data-wpel-link="internal" target="_self" rel="noopener">dal prompt al plugin WordPress</a>, la guida su <a href="https://www.mrtux.it/ai-sviluppo-wordpress-progettare-scrivere-ottimizzare-plugin" data-wpel-link="internal" target="_self" rel="noopener">AI e sviluppo WordPress per progettare e ottimizzare plugin</a> e l'approfondimento sugli <a href="https://www.mrtux.it/hook-wordpress-azioni-e-filter-per-plugin-professionali" data-wpel-link="internal" target="_self" rel="noopener">hook WordPress per plugin professionali</a>.</p>
<h2>Perche' l'AI cambia lo sviluppo dei plugin WordPress</h2>
<p>WordPress e' un ecosistema enorme: hook, azioni, filtri, shortcode, REST API, Options API, metadati, ruoli utente, nonce, capability, traduzioni e standard di codice. L'intelligenza artificiale puo' aiutarti a navigare tutto questo piu' velocemente, ma non deve sostituire la comprensione tecnica.</p>
<p>L'AI e' utile soprattutto in cinque aree:</p>
<ul>
<li>trasformare un'idea vaga in requisiti tecnici;</li>
<li>generare boilerplate coerente con WordPress;</li>
<li>proporre hook, funzioni e struttura dei file;</li>
<li>revisionare codice alla ricerca di errori;</li>
<li>scrivere documentazione, readme e checklist di test.</li>
</ul>
<p>Il punto chiave e' questo: un modello linguistico puo' produrre codice plausibile, ma non ha la responsabilita' del sito. Quella resta tua. Per questo conviene lavorare con un workflow ripetibile, non con prompt improvvisati.</p>
<h2>Il workflow corretto: dall'idea al plugin installabile</h2>
<p>Il metodo piu' sicuro per creare plugin WordPress con AI e' diviso in sette fasi. Ogni fase ha un obiettivo preciso e una verifica concreta.</p>
<ol>
<li>Definisci il problema che il plugin deve risolvere.</li>
<li>Trasforma l'idea in requisiti funzionali e tecnici.</li>
<li>Chiedi all'AI una struttura minima, non un plugin gigante.</li>
<li>Genera il codice un file alla volta.</li>
<li>Fai revisionare sicurezza, naming e compatibilita'.</li>
<li>Testa in locale o staging con debug attivo.</li>
<li>Documenta uso, limiti e manutenzione.</li>
</ol>
<p>Questo flusso si integra bene con un workflow piu' ampio di <a href="https://www.mrtux.it/sviluppo-wordpress-ai-temi-plugin" data-wpel-link="internal" target="_self" rel="noopener">sviluppo WordPress con AI per temi e plugin</a>, soprattutto quando lavori su progetti cliente o siti con traffico reale.</p>
<h2>Prima di scrivere codice: il prompt di analisi</h2>
<p>L'errore piu' comune e' chiedere subito: &quot;creami un plugin WordPress&quot;. E' il modo piu' rapido per ottenere codice generico. Prima devi chiedere all'AI di chiarire il progetto.</p>
<p>Usa un prompt come questo:</p>
<pre><code class="language-text">Agisci come sviluppatore WordPress senior specializzato in plugin sicuri e manutenibili.

Voglio creare un plugin WordPress chiamato &quot;MRT Reading CTA&quot;.
Obiettivo: aggiungere automaticamente alla fine degli articoli un box con tempo di lettura stimato e una call to action configurabile.

Prima di scrivere codice, produci:
1. requisiti funzionali;
2. requisiti di sicurezza;
3. hook WordPress necessari;
4. dati da salvare e dove salvarli;
5. struttura minima dei file;
6. rischi tecnici;
7. checklist di test.

Non generare ancora codice PHP.</code></pre>
<p>Questo prompt forza il modello a progettare prima di produrre. La qualita' del risultato aumenta perche' il codice nasce da un perimetro chiaro.</p>
<h2>Struttura minima consigliata</h2>
<p>Per un plugin semplice non serve un framework interno. Serve una struttura leggibile, con nomi coerenti e pochi file.</p>
<pre><code class="language-text">mrt-reading-cta/
├── mrt-reading-cta.php
├── includes/
│   └── admin-settings.php
├── assets/
│   └── css/
│       └── frontend.css
└── readme.txt</code></pre>
<p>Questa struttura basta per un plugin piccolo con impostazioni admin e output frontend. Se il plugin cresce, puoi separare shortcode, REST API, integrazioni esterne e classi dedicate. Ma all'inizio la semplicita' e' una forma di sicurezza.</p>
<h2>Esempio pratico: plugin con tempo di lettura e CTA</h2>
<p>Immaginiamo di creare un plugin che aggiunge alla fine di ogni articolo un box con tempo di lettura stimato e link a un servizio. E' un caso reale, utile per blog, content marketing e siti editoriali.</p>
<p>Ecco un esempio minimale, pensato per mostrare i concetti fondamentali:</p>
<pre><code class="language-php">&lt;?php
/**
 * Plugin Name: MRT Reading CTA
 * Description: Aggiunge un box con tempo di lettura stimato e call to action alla fine degli articoli.
 * Version: 0.1.0
 * Author: MrTux
 * Text Domain: mrt-reading-cta
 */

if ( ! defined( &#039;ABSPATH&#039; ) ) {
    exit;
}

define( &#039;MRT_READING_CTA_VERSION&#039;, &#039;0.1.0&#039; );

add_filter( &#039;the_content&#039;, &#039;mrt_reading_cta_append_box&#039; );

function mrt_reading_cta_append_box( $content ) {
    if ( ! is_singular( &#039;post&#039; ) || ! in_the_loop() || ! is_main_query() ) {
        return $content;
    }

    $plain_text = wp_strip_all_tags( $content );
    $word_count = str_word_count( $plain_text );
    $minutes    = max( 1, (int) ceil( $word_count / 220 ) );
    $cta_url    = get_option( &#039;mrt_reading_cta_url&#039;, home_url( &#039;/contatti/&#039; ) );

    $box  = &#039;&lt;div class=&quot;mrt-reading-cta&quot;&gt;&#039;;
    $box .= &#039;&lt;p&gt;&lt;strong&gt;&#039; . esc_html( sprintf( &#039;Tempo di lettura: %d minuti&#039;, $minutes ) ) . &#039;&lt;/strong&gt;&lt;/p&gt;&#039;;
    $box .= &#039;&lt;p&gt;&#039; . esc_html__( &#039;Vuoi trasformare questa idea in un plugin su misura?&#039;, &#039;mrt-reading-cta&#039; ) . &#039;&lt;/p&gt;&#039;;
    $box .= &#039;&lt;a href=&quot;&#039; . esc_url( $cta_url ) . &#039;&quot;&gt;&#039; . esc_html__( &#039;Richiedi una consulenza WordPress&#039;, &#039;mrt-reading-cta&#039; ) . &#039;&lt;/a&gt;&#039;;
    $box .= &#039;&lt;/div&gt;&#039;;

    return $content . $box;
}</code></pre>
<p>Questo snippet mostra gia' alcuni principi importanti:</p>
<ul>
<li>blocco dell'accesso diretto con <code>ABSPATH</code>;</li>
<li>uso di <code>the_content</code> solo nei post singoli;</li>
<li>controllo su loop principale e query principale;</li>
<li>escape dell'URL con <code>esc_url()</code>;</li>
<li>escape del testo con <code>esc_html()</code> ed <code>esc_html__()</code>;</li>
<li>opzione configurabile con fallback sicuro.</li>
</ul>
<p>Non e' ancora un plugin commerciale, ma e' una base sensata. Da qui puoi chiedere all'AI di aggiungere una pagina impostazioni, un file CSS, traduzioni e test.</p>
<h2>Prompt per aggiungere una pagina impostazioni</h2>
<p>La pagina impostazioni e' una delle parti dove l'AI sbaglia piu' spesso. Puo' dimenticare nonce, capability o sanitizzazione. Devi quindi essere molto esplicito.</p>
<pre><code class="language-text">Partendo dal plugin MRT Reading CTA, aggiungi una pagina impostazioni sotto &quot;Impostazioni &gt; Reading CTA&quot;.

Vincoli obbligatori:
- accesso solo a utenti con capability manage_options;
- salvataggio di una singola opzione mrt_reading_cta_url;
- campo URL sanificato con esc_url_raw;
- form protetto da nonce;
- output sempre escapato;
- text domain mrt-reading-cta;
- nessun framework esterno;
- codice compatibile con WordPress 6.x e PHP 8.1.

Restituisci solo il codice necessario e spiega quali parti devo testare.</code></pre>
<p>Un prompt cosi' riduce il rischio di codice superficiale. Non basta dire &quot;sicuro&quot;: devi specificare cosa significa sicurezza in WordPress.</p>
<h2>Sicurezza: la checklist che l'AI deve rispettare</h2>
<p>La sicurezza e' il confine tra un esperimento e un plugin installabile. Quando usi AI per generare codice WordPress, controlla sempre questi elementi.</p>
<table>
<thead>
<tr>
<th>Area</th>
<th>Controllo</th>
<th>Funzioni utili</th>
</tr>
</thead>
<tbody>
<tr>
<td>Accesso diretto</td>
<td>Il file blocca esecuzioni fuori da WordPress</td>
<td><code>defined( &#039;ABSPATH&#039; )</code></td>
</tr>
<tr>
<td>Permessi</td>
<td>Solo utenti autorizzati modificano impostazioni</td>
<td><code>current_user_can()</code></td>
</tr>
<tr>
<td>Intenzione</td>
<td>I form admin verificano la richiesta</td>
<td><code>check_admin_referer()</code></td>
</tr>
<tr>
<td>Input</td>
<td>I dati salvati sono puliti</td>
<td><code>sanitize_text_field()</code>, <code>esc_url_raw()</code>, <code>absint()</code></td>
</tr>
<tr>
<td>Output</td>
<td>I dati stampati sono protetti</td>
<td><code>esc_html()</code>, <code>esc_attr()</code>, <code>esc_url()</code></td>
</tr>
<tr>
<td>Database</td>
<td>Query sicure quando serve SQL custom</td>
<td><code>$wpdb-&gt;prepare()</code></td>
</tr>
<tr>
<td>REST API</td>
<td>Endpoint protetti</td>
<td><code>permission_callback</code></td>
</tr>
</tbody>
</table>
<p>Le fonti ufficiali restano indispensabili: consulta il <a href="https://developer.wordpress.org/plugins/" target="_blank" rel="noopener nofollow external" data-wpel-link="external">WordPress Plugin Handbook</a>, la sezione sulla <a href="https://developer.wordpress.org/plugins/security/" target="_blank" rel="noopener nofollow external" data-wpel-link="external">sicurezza dei plugin WordPress</a>, la documentazione su <a href="https://developer.wordpress.org/apis/security/escaping/" target="_blank" rel="noopener nofollow external" data-wpel-link="external">validazione, sanitizzazione ed escaping</a> e le <a href="https://developer.wordpress.org/plugins/wordpress-org/detailed-plugin-guidelines/" target="_blank" rel="noopener nofollow external" data-wpel-link="external">linee guida per plugin WordPress.org</a>.</p>
<h2>Come usare l'AI per fare code review</h2>
<p>Dopo aver generato il codice, cambia ruolo al modello. Non chiedergli di &quot;migliorare&quot; il plugin. Chiedigli di fare revisione tecnica con vincoli stretti.</p>
<pre><code class="language-text">Analizza questo plugin WordPress come revisore senior.
Non riscrivere tutto.
Segnala solo problemi concreti in queste aree:
1. capability mancanti o sbagliate;
2. nonce assenti;
3. input non sanificati;
4. output non escapati;
5. uso scorretto di hook;
6. naming collision;
7. problemi di compatibilita&#039; PHP/WordPress;
8. possibili warning con WP_DEBUG attivo.

Per ogni problema dammi: rischio, riga coinvolta e patch minima.</code></pre>
<p>Questo tipo di prompt rende l'AI piu' utile. La obbliga a cercare difetti verificabili invece di proporre refactoring estetici.</p>
<h2>Test in staging con WP-CLI</h2>
<p>Un plugin generato con AI non va mai testato direttamente sul sito live. Crea uno staging o un ambiente locale. Poi usa comandi semplici e ripetibili.</p>
<pre><code class="language-bash"># verifica che WordPress veda il plugin
wp plugin list

# attiva il plugin
wp plugin activate mrt-reading-cta

# controlla l&#039;opzione salvata
wp option get mrt_reading_cta_url

# disattiva il plugin per verificare rollback base
wp plugin deactivate mrt-reading-cta</code></pre>
<p>La documentazione di <a href="https://make.wordpress.org/cli/handbook/" target="_blank" rel="noopener nofollow external" data-wpel-link="external">WP-CLI</a> e' fondamentale per trasformare i test in una procedura ripetibile. Per controlli piu' avanzati puoi usare anche <a href="https://github.com/WordPress/WordPress-Coding-Standards" target="_blank" rel="noopener nofollow external" data-wpel-link="external">WordPress Coding Standards</a>, utile per intercettare problemi di stile e sicurezza ricorrenti.</p>
<h2>AI, REST API e integrazioni esterne</h2>
<p>Molti plugin moderni integrano servizi AI esterni: OpenAI, Claude, Gemini, modelli locali o API proprietarie. Qui serve ancora piu' attenzione. Un plugin che invia prompt, dati utente o contenuti a servizi esterni deve considerare privacy, timeout, gestione errori e consenso.</p>
<p>Se il plugin usa endpoint REST, non lasciare mai permessi vaghi. La documentazione della <a href="https://developer.wordpress.org/rest-api/" target="_blank" rel="noopener nofollow external" data-wpel-link="external">WordPress REST API</a> mostra come registrare route e callback in modo corretto.</p>
<p>Esempio di endpoint protetto:</p>
<pre><code class="language-php">add_action( &#039;rest_api_init&#039;, function () {
    register_rest_route(
        &#039;mrt-reading-cta/v1&#039;,
        &#039;/settings&#039;,
        array(
            &#039;methods&#039;             =&gt; &#039;POST&#039;,
            &#039;callback&#039;            =&gt; &#039;mrt_reading_cta_save_settings&#039;,
            &#039;permission_callback&#039; =&gt; function () {
                return current_user_can( &#039;manage_options&#039; );
            },
        )
    );
} );</code></pre>
<p>Se l'AI propone <code>__return_true</code> come <code>permission_callback</code>, chiedi una giustificazione. Per dati pubblici puo' essere accettabile. Per impostazioni, azioni admin o contenuti riservati e' quasi sempre un errore.</p>
<h2>Come trasformare un plugin AI in contenuto SEO</h2>
<p>Creare plugin WordPress con l'intelligenza artificiale puo' diventare anche una strategia editoriale. Ogni plugin risolve un problema specifico e quel problema puo' diventare un articolo, una guida, una landing page o un case study.</p>
<p>Il formato che funziona meglio e':</p>
<ul>
<li>problema reale del lettore;</li>
<li>soluzione con plugin;</li>
<li>prompt usato;</li>
<li>codice spiegato;</li>
<li>errori corretti;</li>
<li>checklist di sicurezza;</li>
<li>risultato finale.</li>
</ul>
<p>Questo e' lo stesso principio che trovi nei contenuti su <a href="https://www.mrtux.it/plugin-ai-wordpress-contenuti-seo-automazione" data-wpel-link="internal" target="_self" rel="noopener">plugin AI per WordPress dedicati a contenuti, SEO e automazione</a>: l'AI diventa utile quando viene collegata a un risultato concreto, misurabile e replicabile.</p>
<h2>Errori da evitare</h2>
<p>Quando crei plugin WordPress attraverso l'AI, evita questi errori.</p>
<ul>
<li>Pubblicare codice generato senza leggerlo.</li>
<li>Installare il plugin direttamente in produzione.</li>
<li>Dimenticare nonce nei form admin.</li>
<li>Usare capability troppo permissive.</li>
<li>Stampare dati utente senza escape.</li>
<li>Creare tabelle custom quando bastano opzioni o meta.</li>
<li>Caricare CSS e JavaScript su tutte le pagine senza motivo.</li>
<li>Salvare API key in chiaro senza valutare permessi e privacy.</li>
<li>Fidarti di funzioni WordPress inventate o obsolete.</li>
<li>Chiedere all'AI un plugin enorme invece di procedere per moduli.</li>
</ul>
<p>La regola e' semplice: se non sai spiegare cosa fa ogni blocco di codice, non e' ancora pronto.</p>
<h2>Le migliori risorse da tenere aperte</h2>
<p>Quando lavori con AI e WordPress, tieni sempre aperte queste risorse ufficiali e tecniche:</p>
<ul>
<li><a href="https://developer.wordpress.org/plugins/" target="_blank" rel="noopener nofollow external" data-wpel-link="external">WordPress Plugin Handbook</a> per struttura, API e standard di sviluppo.</li>
<li><a href="https://developer.wordpress.org/reference/hooks/" target="_blank" rel="noopener nofollow external" data-wpel-link="external">WordPress Hooks Reference</a> per verificare azioni e filtri.</li>
<li><a href="https://developer.wordpress.org/plugins/security/" target="_blank" rel="noopener nofollow external" data-wpel-link="external">Plugin Security Handbook</a> per nonce, capability e gestione input/output.</li>
<li><a href="https://developer.wordpress.org/rest-api/" target="_blank" rel="noopener nofollow external" data-wpel-link="external">WordPress REST API Handbook</a> per endpoint e permission callback.</li>
<li><a href="https://make.wordpress.org/cli/handbook/" target="_blank" rel="noopener nofollow external" data-wpel-link="external">WP-CLI Handbook</a> per test, automazione e gestione da terminale.</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> per controlli di qualita' sul codice PHP.</li>
<li><a href="https://platform.openai.com/docs" target="_blank" rel="noopener nofollow external" data-wpel-link="external">OpenAI API Documentation</a> se vuoi integrare modelli AI esterni in un plugin.</li>
</ul>
<h2>Checklist finale prima della pubblicazione</h2>
<p>Prima di considerare pronto un plugin generato con AI, verifica questi punti.</p>
<ol>
<li>Il plugin ha uno scopo chiaro in una frase.</li>
<li>Il nome dello slug e il prefisso delle funzioni sono coerenti.</li>
<li>Tutti i file bloccano accesso diretto.</li>
<li>Ogni form admin usa nonce.</li>
<li>Ogni azione sensibile controlla le capability.</li>
<li>Ogni input e' validato o sanificato.</li>
<li>Ogni output e' escapato.</li>
<li>Il plugin si attiva e disattiva senza errori.</li>
<li>WP_DEBUG non mostra warning o notice.</li>
<li>Il codice e' stato testato in staging.</li>
<li>Il readme spiega installazione, uso e limiti.</li>
<li>Eventuali API esterne hanno timeout e gestione errori.</li>
</ol>
<p>Questa checklist puo' diventare un prompt finale:</p>
<pre><code class="language-text">Verifica questo plugin contro la checklist seguente.
Non proporre nuove funzionalita&#039;.
Segnala solo i punti non rispettati e suggerisci la correzione minima.</code></pre>
<h2>Conclusione</h2>
<p>Creare plugin WordPress attraverso l'intelligenza artificiale e' una delle applicazioni piu' concrete dell'AI nello sviluppo web. Il vantaggio non e' solo scrivere codice piu' velocemente. Il vero vantaggio e' ridurre il tempo tra idea, prototipo, revisione e test.</p>
<p>La differenza tra un plugin utile e un rischio per il sito sta nel metodo. Usa l'AI per chiarire requisiti, generare una base, revisionare codice e preparare documentazione. Usa la tua competenza per decidere architettura, sicurezza, compatibilita' e pubblicazione.</p>
<p>Se vuoi iniziare oggi, scegli una funzionalita' piccola: uno shortcode, un box CTA, una pagina impostazioni, un'integrazione semplice. Genera poco codice, controllalo bene, testalo in staging e miglioralo a piccoli passi. E' cosi' che l'intelligenza artificiale diventa uno strumento professionale, non una scorciatoia pericolosa.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://www.mrtux.it/creare-plugin-wordpress-attraverso-lintelligenza-artificiale/feed</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>Sviluppo WordPress con AI: Workflow Completo (Temi + Plugin)</title>
		<link>https://www.mrtux.it/sviluppo-wordpress-ai-temi-plugin</link>
					<comments>https://www.mrtux.it/sviluppo-wordpress-ai-temi-plugin#respond</comments>
		
		<dc:creator><![CDATA[Emilio Petrozzi]]></dc:creator>
		<pubDate>Sun, 29 Mar 2026 18:42:36 +0000</pubDate>
				<category><![CDATA[Wordpress]]></category>
		<category><![CDATA[Claude AI]]></category>
		<category><![CDATA[Cursor IDE]]></category>
		<category><![CDATA[intelligenza artificiale]]></category>
		<category><![CDATA[plugin]]></category>
		<category><![CDATA[Sviluppo web]]></category>
		<category><![CDATA[temi]]></category>
		<category><![CDATA[tutorial]]></category>
		<category><![CDATA[wordpress]]></category>
		<category><![CDATA[wp-cli]]></category>
		<guid isPermaLink="false">https://www.mrtux.it/?p=3231</guid>

					<description><![CDATA[Scopri il workflow completo per sviluppare temi child e plugin WordPress professionali usando Cursor, Claude, GitHub Copilot e WP-CLI. Risparmia l'89% del tempo mantenendo standard di qualità elevati. Include 50+ prompt pronti all'uso.]]></description>
										<content:encoded><![CDATA[<h1>Sviluppo WordPress con AI: Il Workflow Completo per Professionisti</h1>
<p><em>Guida pratica per sviluppatori che vogliono creare temi child e plugin custom usando l'intelligenza artificiale.</em></p>
<hr />
<h2>🎯 Introduzione</h2>
<p>Lo sviluppo WordPress è cambiato radicalmente con l'avvento degli strumenti di intelligenza artificiale. Oggi uno sviluppatore esperto può creare <strong>temi child professionali</strong> e <strong>plugin custom</strong> in una frazione del tempo tradizionale, mantenendo alti standard di qualità e sicurezza.</p>
<p>In questa guida completa ti mostrerò il <strong>workflow esatto</strong> che uso quotidianamente per sviluppare per i miei clienti, combinando:</p>
<ul>
<li>✅ <strong>Cursor IDE</strong> (editor AI-first)</li>
<li>✅ <strong>Claude 3.5 Sonnet</strong> (code generation avanzata)</li>
<li>✅ <strong>GitHub Copilot</strong> (autocomplete contestuale)</li>
<li>✅ <strong>ChatGPT-4</strong> (architettura e debugging)</li>
<li>✅ <strong>WP-CLI</strong> (automazione deploy)</li>
</ul>
<p><strong>Cosa imparerai:</strong></p>
<ol>
<li>Come strutturare un progetto WordPress con AI</li>
<li>Creare un tema child da zero in 30 minuti</li>
<li>Sviluppare plugin custom con validazione AI</li>
<li>Workflow di testing e debugging assistito</li>
<li>Best practices per sicurezza e performance</li>
</ol>
<hr />
<h2>📋 Prerequisiti</h2>
<p>Prima di iniziare, assicurati di avere:</p>
<ul>
<li>✅ <strong>WordPress 6.4+</strong> installato (locale o remoto)</li>
<li>✅ <strong>Node.js 18+</strong> e <strong>npm</strong> per gli strumenti di build</li>
<li>✅ <strong>Composer</strong> per le dipendenze PHP</li>
<li>✅ <strong>Abbonamento Cursor Pro</strong> ($20/mese) o alternativo</li>
<li>✅ <strong>API Key Claude</strong> (opzionale ma consigliato)</li>
<li>✅ <strong>Conoscenza base di PHP, HTML, CSS, JavaScript</strong></li>
</ul>
<p><strong>Tempo stimato:</strong> 2-3 ore per completare l'intero workflow</p>
<hr />
<h2>🏗️ Fase 1: Setup dell'Ambiente di Sviluppo</h2>
<h3>1.1 Configurazione Cursor IDE</h3>
<p>Cursor è un fork di VS Code con AI nativa integrata. Ecco la configurazione ottimale:</p>
<pre><code class="language-json">// .cursor/settings.json
{
  &quot;ai.model&quot;: &quot;claude-3.5-sonnet&quot;,
  &quot;ai.autoComplete.enabled&quot;: true,
  &quot;ai.inlineChat.enabled&quot;: true,
  &quot;files.exclude&quot;: {
    &quot;**/node_modules&quot;: true,
    &quot;**/.git&quot;: true
  },
  &quot;editor.formatOnSave&quot;: true,
  &quot;php.validate.enable&quot;: true
}</code></pre>
<h3>1.2 Struttura del Progetto</h3>
<p>Crea questa struttura per il tuo progetto:</p>
<pre><code>my-wordpress-project/
├── wp-content/
│   ├── themes/
│   │   └── my-child-theme/
│   └── plugins/
│       └── my-custom-plugin/
├── .cursor/
├── docs/
├── tests/
└── README.md</code></pre>
<p><strong>Prompt per Cursor:</strong></p>
<pre><code>Crea la struttura directory per un progetto WordPress professionale 
con tema child e plugin custom. Includi:
- Cartella per tema child con file base (style.css, functions.php, index.php)
- Cartella per plugin con file principale e namespace
- Directory per documentazione e test
- File .gitignore ottimizzato per WordPress</code></pre>
<hr />
<h2>🎨 Fase 2: Creare un Tema Child con AI</h2>
<h3>2.1 File style.css</h3>
<p>Il file fondamentale per qualsiasi tema child:</p>
<pre><code class="language-css">/*
Theme Name:     My Child Theme
Theme URI:      https://www.mrtux.it/my-child-theme
Description:    Tema child professionale creato con AI per siti business
Author:         Emilio Petrozzi
Author URI:     https://www.mrtux.it
Template:       twentytwentyfour
Version:        1.0.0
License:        GPL-2.0-or-later
License URI:    https://www.gnu.org/licenses/gpl-2.0.html
Text Domain:    my-child-theme
Tags:           custom-background, custom-logo, custom-menu, featured-images
*/

/* Variabili CSS personalizzate */
:root {
  --primary-color: #2563eb;
  --secondary-color: #1e40af;
  --text-color: #1f2937;
  --background-color: #ffffff;
  --font-primary: &#039;Inter&#039;, sans-serif;
}

/* Override del tema parent */
body {
  font-family: var(--font-primary);
  color: var(--text-color);
  background-color: var(--background-color);
}

.header-custom {
  background: linear-gradient(135deg, var(--primary-color), var(--secondary-color));
  padding: 2rem 0;
}</code></pre>
<p><strong>Prompt per generare CSS:</strong></p>
<pre><code>Genera un file style.css completo per un tema child WordPress 
based on Twenty Twenty-Four. Includi:
- Header comment standard WordPress
- Variabili CSS per branding personalizzato
- Override per header, footer, e layout principale
- Media queries per responsive design
- Supporto per dark mode</code></pre>
<h3>2.2 File functions.php</h3>
<p>Il cuore del tuo tema child:</p>
<pre><code class="language-php">&lt;?php
/**
 * My Child Theme Functions
 *
 * @package My_Child_Theme
 * @since 1.0.0
 */

// Prevent direct access
if (!defined(&#039;ABSPATH&#039;)) {
    exit;
}

/**
 * Enqueue parent and child theme stylesheets
 */
function my_child_theme_enqueue_styles() {
    // Parent theme
    wp_enqueue_style(
        &#039;parent-style&#039;,
        get_template_directory_uri() . &#039;/style.css&#039;,
        array(),
        wp_get_theme(&#039;twentytwentyfour&#039;)-&gt;get(&#039;Version&#039;)
    );

    // Child theme
    wp_enqueue_style(
        &#039;child-style&#039;,
        get_stylesheet_uri(),
        array(&#039;parent-style&#039;),
        wp_get_theme()-&gt;get(&#039;Version&#039;)
    );

    // Google Fonts
    wp_enqueue_style(
        &#039;google-fonts&#039;,
        &#039;https://fonts.googleapis.com/css2?family=Inter:wght@400;500;600;700&amp;display=swap&#039;,
        array(),
        null
    );
}
add_action(&#039;wp_enqueue_scripts&#039;, &#039;my_child_theme_enqueue_styles&#039;);

/**
 * Register custom navigation menus
 */
function my_child_theme_register_menus() {
    register_nav_menus(array(
        &#039;primary&#039; =&gt; __(&#039;Primary Menu&#039;, &#039;my-child-theme&#039;),
        &#039;footer&#039;  =&gt; __(&#039;Footer Menu&#039;, &#039;my-child-theme&#039;),
        &#039;mobile&#039;  =&gt; __(&#039;Mobile Menu&#039;, &#039;my-child-theme&#039;),
    ));
}
add_action(&#039;after_setup_theme&#039;, &#039;my_child_theme_register_menus&#039;);

/**
 * Add theme support for various features
 */
function my_child_theme_setup() {
    // Add custom logo support
    add_theme_support(&#039;custom-logo&#039;, array(
        &#039;height&#039;      =&gt; 100,
        &#039;width&#039;       =&gt; 400,
        &#039;flex-height&#039; =&gt; true,
        &#039;flex-width&#039;  =&gt; true,
    ));

    // Add custom background
    add_theme_support(&#039;custom-background&#039;);

    // Add HTML5 support
    add_theme_support(&#039;html5&#039;, array(
        &#039;search-form&#039;,
        &#039;comment-form&#039;,
        &#039;comment-list&#039;,
        &#039;gallery&#039;,
        &#039;caption&#039;,
    ));
}
add_action(&#039;after_setup_theme&#039;, &#039;my_child_theme_setup&#039;);

/**
 * Register widget areas
 */
function my_child_theme_widgets_init() {
    register_sidebar(array(
        &#039;name&#039;          =&gt; __(&#039;Sidebar&#039;, &#039;my-child-theme&#039;),
        &#039;id&#039;            =&gt; &#039;sidebar-1&#039;,
        &#039;description&#039;   =&gt; __(&#039;Add widgets here to appear in your sidebar.&#039;, &#039;my-child-theme&#039;),
        &#039;before_widget&#039; =&gt; &#039;&lt;section id=&quot;%1$s&quot; class=&quot;widget %2$s&quot;&gt;&#039;,
        &#039;after_widget&#039;  =&gt; &#039;&lt;/section&gt;&#039;,
        &#039;before_title&#039;  =&gt; &#039;&lt;h2 class=&quot;widget-title&quot;&gt;&#039;,
        &#039;after_title&#039;   =&gt; &#039;&lt;/h2&gt;&#039;,
    ));
}
add_action(&#039;widgets_init&#039;, &#039;my_child_theme_widgets_init&#039;);

/**
 * Custom excerpt length
 */
function my_child_theme_excerpt_length($length) {
    return 25;
}
add_filter(&#039;excerpt_length&#039;, &#039;my_child_theme_excerpt_length&#039;, 999);

/**
 * Add custom body classes
 */
function my_child_theme_body_classes($classes) {
    if (is_singular()) {
        $classes[] = &#039;singular&#039;;
    }
    if (is_front_page()) {
        $classes[] = &#039;front-page&#039;;
    }
    return $classes;
}
add_filter(&#039;body_class&#039;, &#039;my_child_theme_body_classes&#039;);</code></pre>
<p><strong>Prompt per functions.php:</strong></p>
<pre><code>Genera un file functions.php completo per un tema child WordPress 
professionale. Includi:
- Enqueue di parent e child stylesheet
- Registrazione menu di navigazione (primary, footer, mobile)
- Theme support per custom logo, background, HTML5
- Widget areas personalizzate
- Filter per excerpt length
- Custom body classes
- Tutto con proper escaping e security best practices</code></pre>
<h3>2.3 Template Personalizzati</h3>
<p>Crea template page personalizzati:</p>
<pre><code class="language-php">&lt;?php
/**
 * Template Name: Landing Page
 * Template Post Type: page
 *
 * Landing page template con sezioni predefinite
 */

get_header();
?&gt;

&lt;main class=&quot;landing-page&quot;&gt;
    &lt;!-- Hero Section --&gt;
    &lt;section class=&quot;hero-section&quot;&gt;
        &lt;div class=&quot;container&quot;&gt;
            &lt;h1&gt;&lt;?php the_title(); ?&gt;&lt;/h1&gt;
            &lt;div class=&quot;hero-content&quot;&gt;
                &lt;?php the_content(); ?&gt;
            &lt;/div&gt;
        &lt;/div&gt;
    &lt;/section&gt;

    &lt;!-- Features Section --&gt;
    &lt;section class=&quot;features-section&quot;&gt;
        &lt;div class=&quot;container&quot;&gt;
            &lt;?php
            if (have_rows(&#039;features&#039;)):
                while (have_rows(&#039;features&#039;)): the_row();
                    ?&gt;
                    &lt;div class=&quot;feature&quot;&gt;
                        &lt;h3&gt;&lt;?php the_sub_field(&#039;title&#039;); ?&gt;&lt;/h3&gt;
                        &lt;p&gt;&lt;?php the_sub_field(&#039;description&#039;); ?&gt;&lt;/p&gt;
                    &lt;/div&gt;
                    &lt;?php
                endwhile;
            endif;
            ?&gt;
        &lt;/div&gt;
    &lt;/section&gt;

    &lt;!-- CTA Section --&gt;
    &lt;section class=&quot;cta-section&quot;&gt;
        &lt;div class=&quot;container&quot;&gt;
            &lt;h2&gt;Pronto a iniziare?&lt;/h2&gt;
            &lt;a href=&quot;/contatti&quot; class=&quot;btn btn-primary&quot;&gt;Contattaci&lt;/a&gt;
        &lt;/div&gt;
    &lt;/section&gt;
&lt;/main&gt;

&lt;?php
get_footer();</code></pre>
<hr />
<h2>🔌 Fase 3: Sviluppare un Plugin Custom con AI</h2>
<h3>3.1 Struttura del Plugin</h3>
<pre><code class="language-php">&lt;?php
/**
 * Plugin Name:       My Custom Plugin
n * Plugin URI:        https://www.mrtux.it/my-custom-plugin
 * Description:       Plugin custom per funzionalità avanzate WordPress
 * Version:           1.0.0
 * Author:            Emilio Petrozzi
 * Author URI:        https://www.mrtux.it
 * License:           GPL-2.0+
 * License URI:       http://www.gnu.org/licenses/gpl-2.0.txt
 * Text Domain:       my-custom-plugin
 * Domain Path:       /languages
 */

// Prevent direct access
if (!defined(&#039;ABSPATH&#039;)) {
    exit;
}

// Define plugin constants
define(&#039;MY_PLUGIN_VERSION&#039;, &#039;1.0.0&#039;);
define(&#039;MY_PLUGIN_PATH&#039;, plugin_dir_path(__FILE__));
define(&#039;MY_PLUGIN_URL&#039;, plugin_dir_url(__FILE__));

/**
 * Main plugin class
 */
class My_Custom_Plugin {

    private static $instance = null;

    /**
     * Get singleton instance
     */
    public static function get_instance() {
        if (null === self::$instance) {
            self::$instance = new self();
        }
        return self::$instance;
    }

    /**
     * Constructor
     */
    private function __construct() {
        $this-&gt;init_hooks();
    }

    /**
     * Initialize hooks
     */
    private function init_hooks() {
        add_action(&#039;init&#039;, array($this, &#039;init&#039;));
        add_action(&#039;admin_menu&#039;, array($this, &#039;add_admin_menu&#039;));
        add_action(&#039;admin_enqueue_scripts&#039;, array($this, &#039;enqueue_admin_assets&#039;));
        add_action(&#039;wp_ajax_my_plugin_action&#039;, array($this, &#039;handle_ajax_action&#039;));
        add_shortcode(&#039;my_custom_shortcode&#039;, array($this, &#039;render_shortcode&#039;));
    }

    /**
     * Initialize plugin components
     */
    public function init() {
        load_plugin_textdomain(&#039;my-custom-plugin&#039;, false, dirname(plugin_basename(__FILE__)) . &#039;/languages&#039;);
    }

    /**
     * Add admin menu
     */
    public function add_admin_menu() {
        add_menu_page(
            __(&#039;My Plugin&#039;, &#039;my-custom-plugin&#039;),
            __(&#039;My Plugin&#039;, &#039;my-custom-plugin&#039;),
            &#039;manage_options&#039;,
            &#039;my-plugin&#039;,
            array($this, &#039;render_admin_page&#039;),
            &#039;dashicons-admin-generic&#039;,
            30
        );
    }

    /**
     * Render admin page
     */
    public function render_admin_page() {
        ?&gt;
        &lt;div class=&quot;wrap&quot;&gt;
            &lt;h1&gt;&lt;?php echo esc_html(get_admin_page_title()); ?&gt;&lt;/h1&gt;
            &lt;form method=&quot;post&quot; action=&quot;options.php&quot;&gt;
                &lt;?php
                settings_fields(&#039;my_plugin_options&#039;);
                do_settings_sections(&#039;my-plugin&#039;);
                submit_button();
                ?&gt;
            &lt;/form&gt;
        &lt;/div&gt;
        &lt;?php
    }

    /**
     * Enqueue admin assets
     */
    public function enqueue_admin_assets($hook) {
        if (&#039;toplevel_page_my-plugin&#039; !== $hook) {
            return;
        }

        wp_enqueue_style(
            &#039;my-plugin-admin&#039;,
            MY_PLUGIN_URL . &#039;assets/css/admin.css&#039;,
            array(),
            MY_PLUGIN_VERSION
        );

        wp_enqueue_script(
            &#039;my-plugin-admin&#039;,
            MY_PLUGIN_URL . &#039;assets/js/admin.js&#039;,
            array(&#039;jquery&#039;),
            MY_PLUGIN_VERSION,
            true
        );

        wp_localize_script(&#039;my-plugin-admin&#039;, &#039;myPluginData&#039;, array(
            &#039;ajaxUrl&#039; =&gt; admin_url(&#039;admin-ajax.php&#039;),
            &#039;nonce&#039;   =&gt; wp_create_nonce(&#039;my_plugin_nonce&#039;),
        ));
    }

    /**
     * Handle AJAX action
     */
    public function handle_ajax_action() {
        check_ajax_referer(&#039;my_plugin_nonce&#039;, &#039;nonce&#039;);

        if (!current_user_can(&#039;manage_options&#039;)) {
            wp_send_json_error(&#039;Unauthorized&#039;);
        }

        // Process action
        $result = $this-&gt;process_action();

        if ($result) {
            wp_send_json_success(&#039;Action completed successfully&#039;);
        } else {
            wp_send_json_error(&#039;Action failed&#039;);
        }
    }

    /**
     * Render shortcode
     */
    public function render_shortcode($atts) {
        $atts = shortcode_atts(array(
            &#039;title&#039; =&gt; &#039;Default Title&#039;,
            &#039;color&#039; =&gt; &#039;blue&#039;,
        ), $atts, &#039;my_custom_shortcode&#039;);

        ob_start();
        ?&gt;
        &lt;div class=&quot;my-custom-shortcode&quot; style=&quot;color: &lt;?php echo esc_attr($atts[&#039;color&#039;]); ?&gt;&quot;&gt;
            &lt;h3&gt;&lt;?php echo esc_html($atts[&#039;title&#039;]); ?&gt;&lt;/h3&gt;
        &lt;/div&gt;
        &lt;?php
        return ob_get_clean();
    }

    /**
     * Process action (placeholder)
     */
    private function process_action() {
        // Implement your logic here
        return true;
    }
}

// Initialize plugin
function my_custom_plugin_init() {
    return My_Custom_Plugin::get_instance();
}
add_action(&#039;plugins_loaded&#039;, &#039;my_custom_plugin_init&#039;);

/**
 * Activation hook
 */
function my_custom_plugin_activate() {
    // Create database tables if needed
    // Set default options
    flush_rewrite_rules();
}
register_activation_hook(__FILE__, &#039;my_custom_plugin_activate&#039;);

/**
 * Deactivation hook
 */
function my_custom_plugin_deactivate() {
    flush_rewrite_rules();
}
register_deactivation_hook(__FILE__, &#039;my_custom_plugin_deactivate&#039;);</code></pre>
<p><strong>Prompt per generare plugin:</strong></p>
<pre><code>Genera un plugin WordPress completo e professionale con:
- Struttura OOP con singleton pattern
- Hook per init, admin_menu, AJAX, shortcode
- Security: nonce verification, capability checks, escaping
- Admin page con settings
- AJAX handler per azioni asincrone
- Shortcode personalizzabile
- Activation/deactivation hooks
- Text domain per traduzioni
- Tutto conforme agli WordPress Coding Standards</code></pre>
<h3>3.2 Custom Post Types e Taxonomies</h3>
<pre><code class="language-php">&lt;?php
/**
 * Register custom post types and taxonomies
 */

function my_plugin_register_post_types() {
    // Portfolio CPT
    register_post_type(&#039;portfolio&#039;, array(
        &#039;labels&#039; =&gt; array(
            &#039;name&#039; =&gt; __(&#039;Portfolio&#039;, &#039;my-custom-plugin&#039;),
            &#039;singular_name&#039; =&gt; __(&#039;Portfolio Item&#039;, &#039;my-custom-plugin&#039;),
            &#039;add_new&#039; =&gt; __(&#039;Add New&#039;, &#039;my-custom-plugin&#039;),
            &#039;add_new_item&#039; =&gt; __(&#039;Add New Portfolio Item&#039;, &#039;my-custom-plugin&#039;),
            &#039;edit_item&#039; =&gt; __(&#039;Edit Portfolio Item&#039;, &#039;my-custom-plugin&#039;),
            &#039;new_item&#039; =&gt; __(&#039;New Portfolio Item&#039;, &#039;my-custom-plugin&#039;),
            &#039;view_item&#039; =&gt; __(&#039;View Portfolio Item&#039;, &#039;my-custom-plugin&#039;),
            &#039;search_items&#039; =&gt; __(&#039;Search Portfolio&#039;, &#039;my-custom-plugin&#039;),
            &#039;not_found&#039; =&gt; __(&#039;No portfolio items found&#039;, &#039;my-custom-plugin&#039;),
            &#039;not_found_in_trash&#039; =&gt; __(&#039;No portfolio items found in trash&#039;, &#039;my-custom-plugin&#039;),
        ),
        &#039;public&#039; =&gt; true,
        &#039;has_archive&#039; =&gt; true,
        &#039;menu_icon&#039; =&gt; &#039;dashicons-portfolio&#039;,
        &#039;supports&#039; =&gt; array(&#039;title&#039;, &#039;editor&#039;, &#039;thumbnail&#039;, &#039;excerpt&#039;, &#039;custom-fields&#039;),
        &#039;show_in_rest&#039; =&gt; true, // Enable Gutenberg
        &#039;rewrite&#039; =&gt; array(&#039;slug&#039; =&gt; &#039;portfolio&#039;),
    ));

    // Portfolio Category Taxonomy
    register_taxonomy(&#039;portfolio_category&#039;, &#039;portfolio&#039;, array(
        &#039;labels&#039; =&gt; array(
            &#039;name&#039; =&gt; __(&#039;Categories&#039;, &#039;my-custom-plugin&#039;),
            &#039;singular_name&#039; =&gt; __(&#039;Category&#039;, &#039;my-custom-plugin&#039;),
            &#039;search_items&#039; =&gt; __(&#039;Search Categories&#039;, &#039;my-custom-plugin&#039;),
            &#039;all_items&#039; =&gt; __(&#039;All Categories&#039;, &#039;my-custom-plugin&#039;),
            &#039;edit_item&#039; =&gt; __(&#039;Edit Category&#039;, &#039;my-custom-plugin&#039;),
            &#039;update_item&#039; =&gt; __(&#039;Update Category&#039;, &#039;my-custom-plugin&#039;),
            &#039;add_new_item&#039; =&gt; __(&#039;Add New Category&#039;, &#039;my-custom-plugin&#039;),
        ),
        &#039;hierarchical&#039; =&gt; true,
        &#039;show_in_rest&#039; =&gt; true,
        &#039;rewrite&#039; =&gt; array(&#039;slug&#039; =&gt; &#039;portfolio-category&#039;),
    ));
}
add_action(&#039;init&#039;, &#039;my_plugin_register_post_types&#039;);</code></pre>
<hr />
<h2>🧪 Fase 4: Testing e Debugging con AI</h2>
<h3>4.1 Prompt per Code Review</h3>
<pre><code>Analizza questo codice WordPress e identifica:
1. Problemi di sicurezza (SQL injection, XSS, CSRF)
2. Violazioni WordPress Coding Standards
3. Performance issues (query non ottimizzate, loop inefficienti)
4. Best practices mancanti (escaping, sanitization, validation)
5. Suggerimenti per migliorare la struttura

[Incolla il tuo codice qui]</code></pre>
<h3>4.2 Prompt per Debugging</h3>
<pre><code>Ho questo errore WordPress: [Incolla errore]

Contesto:
- WordPress version: 6.4
- PHP version: 8.2
- Plugin/Tema: [Nome]

Cosa ho già provato:
1. [Tentativo 1]
2. [Tentativo 2]

Analizza l&#039;errore e fornisci:
1. Diagnosi della causa radice
2. Soluzione step-by-step
3. Codice corretto
4. Come prevenire in futuro</code></pre>
<h3>4.3 Test Unitari con AI</h3>
<pre><code class="language-php">&lt;?php
/**
 * Example PHPUnit test for plugin
 */

class MyPluginTest extends WP_UnitTestCase {

    public function test_shortcode_returns_html() {
        $output = do_shortcode(&#039;[my_custom_shortcode title=&quot;Test&quot;]&#039;);

        $this-&gt;assertStringContainsString(&#039;Test&#039;, $output);
        $this-&gt;assertStringContainsString(&#039;my-custom-shortcode&#039;, $output);
    }

    public function test_ajax_requires_nonce() {
        $_POST[&#039;nonce&#039;] = &#039;&#039;;

        $this-&gt;expectException(WPDieException::class);

        // Call AJAX handler
        my_plugin_ajax_handler();
    }

    public function test_user_capability_check() {
        wp_set_current_user(0); // No user

        $this-&gt;assertFalse(current_user_can(&#039;manage_options&#039;));
    }
}</code></pre>
<hr />
<h2>🚀 Fase 5: Deploy e Automazione</h2>
<h3>5.1 Script di Deploy con WP-CLI</h3>
<pre><code class="language-bash">#!/bin/bash
# deploy.sh - Deploy automatico tema/plugin

set -e

# Configurazione
REMOTE_USER=&quot;myweb&quot;
REMOTE_HOST=&quot;192.5.123.123&quot;
REMOTE_PATH=&quot;/home/user/web/site.it/public_html&quot;
SSH_KEY=&quot;~/.ssh/wp_publisher&quot;

# Colori per output
RED=&#039;\033[0;31m&#039;
GREEN=&#039;\033[0;32m&#039;
YELLOW=&#039;\033[1;33m&#039;
NC=&#039;\033[0m&#039;

echo -e &quot;${GREEN}🚀 Starting WordPress deployment...${NC}&quot;

# 1. Backup pre-deploy
echo -e &quot;${YELLOW}📦 Creating backup...${NC}&quot;
ssh -i $SSH_KEY $REMOTE_USER@$REMOTE_HOST \
    &quot;wp db export /tmp/backup-$(date +%Y%m%d-%H%M%S).sql --path=$REMOTE_PATH&quot;

# 2. Sync files
if [ &quot;$1&quot; == &quot;theme&quot; ]; then
    echo -e &quot;${YELLOW}📁 Syncing theme files...${NC}&quot;
    rsync -avz -e &quot;ssh -i $SSH_KEY&quot; \
        wp-content/themes/my-child-theme/ \
        $REMOTE_USER@$REMOTE_HOST:$REMOTE_PATH/wp-content/themes/my-child-theme/
elif [ &quot;$1&quot; == &quot;plugin&quot; ]; then
    echo -e &quot;${YELLOW}📁 Syncing plugin files...${NC}&quot;
    rsync -avz -e &quot;ssh -i $SSH_KEY&quot; \
        wp-content/plugins/my-custom-plugin/ \
        $REMOTE_USER@$REMOTE_HOST:$REMOTE_PATH/wp-content/plugins/my-custom-plugin/
fi

# 3. Clear cache
echo -e &quot;${YELLOW}🧹 Clearing cache...${NC}&quot;
ssh -i $SSH_KEY $REMOTE_USER@$REMOTE_HOST \
    &quot;wp cache flush --path=$REMOTE_PATH&quot;

# 4. Verify deployment
echo -e &quot;${YELLOW}✅ Verifying deployment...${NC}&quot;
ssh -i $SSH_KEY $REMOTE_USER@$REMOTE_HOST \
    &quot;wp core version --path=$REMOTE_PATH&quot;

echo -e &quot;${GREEN}✨ Deployment completed successfully!${NC}&quot;</code></pre>
<h3>5.2 GitHub Actions per CI/CD</h3>
<pre><code class="language-yaml"># .github/workflows/deploy.yml
name: Deploy WordPress

on:
  push:
    branches: [main]

jobs:
  deploy:
    runs-on: ubuntu-latest

    steps:
    - uses: actions/checkout@v3

    - name: Setup PHP
      uses: shivammathur/setup-php@v2
      with:
        php-version: &#039;8.2&#039;
        tools: wp-cli

    - name: Run tests
      run: |
        composer install
        vendor/bin/phpunit

    - name: Deploy to server
      uses: easingthemes/ssh-deploy@v3
      with:
        SSH_PRIVATE_KEY: ${{ secrets.SSH_KEY }}
        REMOTE_HOST: ${{ secrets.REMOTE_HOST }}
        REMOTE_USER: ${{ secrets.REMOTE_USER }}
        SOURCE: &quot;wp-content/&quot;
        TARGET: &quot;/home/myweb/web/mrtux.it/public_html/wp-content/&quot;
        EXCLUDE: &quot;/.git/,/node_modules/&quot;

    - name: Clear cache
      run: |
        ssh -i ${{ secrets.SSH_KEY }} \
          ${{ secrets.REMOTE_USER }}@${{ secrets.REMOTE_HOST }} \
          &quot;wp cache flush --path=/home/user/web/site.it/public_html&quot;</code></pre>
<hr />
<h2>📊 Tabella Comparativa: Sviluppo Tradizionale vs AI-Assisted</h2>
<table>
<thead>
<tr>
<th>Attività</th>
<th>Tradizionale</th>
<th>Con AI</th>
<th>Risparmio</th>
</tr>
</thead>
<tbody>
<tr>
<td>Setup progetto</td>
<td>2 ore</td>
<td>15 min</td>
<td>87%</td>
</tr>
<tr>
<td>Tema child base</td>
<td>4 ore</td>
<td>30 min</td>
<td>87%</td>
</tr>
<tr>
<td>Plugin custom</td>
<td>8 ore</td>
<td>1 ora</td>
<td>87%</td>
</tr>
<tr>
<td>Code review</td>
<td>2 ore</td>
<td>10 min</td>
<td>91%</td>
</tr>
<tr>
<td>Debugging</td>
<td>3 ore</td>
<td>20 min</td>
<td>88%</td>
</tr>
<tr>
<td>Testing</td>
<td>4 ore</td>
<td>30 min</td>
<td>87%</td>
</tr>
<tr>
<td><strong>TOTALE</strong></td>
<td><strong>23 ore</strong></td>
<td><strong>2.5 ore</strong></td>
<td><strong>89%</strong></td>
</tr>
</tbody>
</table>
<hr />
<h2>✅ Checklist Finale</h2>
<h3>Prima del Deploy</h3>
<ul>
<li>[ ] Code review con AI completata</li>
<li>[ ] Tutti i test PHPUnit passano</li>
<li>[ ] Security scan eseguito (nessuna vulnerabilità)</li>
<li>[ ] Performance test (PageSpeed &gt; 90)</li>
<li>[ ] Backup database creato</li>
<li>[ ] Staging environment testato</li>
<li>[ ] Documentazione aggiornata</li>
</ul>
<h3>Dopo il Deploy</h3>
<ul>
<li>[ ] Verifica funzionalità su produzione</li>
<li>[ ] Monitoraggio errori (24h)</li>
<li>[ ] Cache cleared</li>
<li>[ ] Analytics verificati</li>
<li>[ ] Client notification inviata</li>
</ul>
<hr />
<h2>🎯 50+ Prompt AI per Sviluppo WordPress</h2>
<h3>Setup e Architettura</h3>
<pre><code>1. &quot;Genera la struttura directory per un progetto WordPress enterprise&quot;
2. &quot;Crea un file composer.json ottimizzato per sviluppo WordPress&quot;
3. &quot;Genera configurazione Docker per ambiente WordPress locale&quot;</code></pre>
<h3>Temi Child</h3>
<pre><code>4. &quot;Scrivi style.css per tema child con branding personalizzato&quot;
5. &quot;Genera functions.php con enqueue, menus, e widget areas&quot;
6. &quot;Crea template page personalizzato per landing page&quot;
7. &quot;Genera custom post types per portfolio con taxonomy&quot;</code></pre>
<h3>Plugin Development</h3>
<pre><code>8. &quot;Crea plugin boilerplate con OOP e singleton pattern&quot;
9. &quot;Genera admin settings page con validation&quot;
10. &quot;Scrivi AJAX handler con nonce verification&quot;
11. &quot;Crea shortcode con attributi personalizzati&quot;
12. &quot;Genera custom REST API endpoint&quot;</code></pre>
<h3>Security</h3>
<pre><code>13. &quot;Analizza questo codice per vulnerabilità XSS&quot;
14. &quot;Verifica SQL injection risks in questa query&quot;
15. &quot;Controlla CSRF protection in questo form&quot;
16. &quot;Genera funzione di sanitizzazione per input utente&quot;</code></pre>
<h3>Performance</h3>
<pre><code>17. &quot;Ottimizza questa query WordPress lenta&quot;
18. &quot;Genera funzione di caching per dati frequenti&quot;
19. &quot;Analizza performance di questo tema&quot;
20. &quot;Suggerisci ottimizzazioni per Core Web Vitals&quot;</code></pre>
<h3>Debugging</h3>
<pre><code>21. &quot;Debugga questo errore: [incolla errore]&quot;
22. &quot;Spiega perché questo hook non funziona&quot;
23. &quot;Trova il bug in questo codice: [incolla codice]&quot;
24. &quot;Perché il mio plugin causa white screen?&quot;</code></pre>
<h3>Testing</h3>
<pre><code>25. &quot;Genera PHPUnit test per questa funzione&quot;
26. &quot;Crea test per AJAX handler&quot;
27. &quot;Scrivi integration test per custom post type&quot;
28. &quot;Genera test di sicurezza per form&quot;</code></pre>
<h3>SEO e Accessibility</h3>
<pre><code>29. &quot;Genera meta tags SEO per questa page template&quot;
30. &quot;Crea schema.org markup per articolo&quot;
31. &quot;Verifica accessibility WCAG 2.1 di questo tema&quot;
32. &quot;Genera sitemap XML custom&quot;</code></pre>
<h3>E-commerce (WooCommerce)</h3>
<pre><code>33. &quot;Crea custom product type per WooCommerce&quot;
34. &quot;Genera hook per modificare checkout&quot;
35. &quot;Scrivi funzione per custom shipping method&quot;
36. &quot;Crea email template personalizzata&quot;</code></pre>
<h3>Multisite</h3>
<pre><code>37. &quot;Configura WordPress multisite con AI&quot;
38. &quot;Genera plugin network-activated&quot;
39. &quot;Crea custom user role per multisite&quot;
40. &quot;Scrivi funzione per sync settings across sites&quot;</code></pre>
<h3>Migration e Deploy</h3>
<pre><code>41. &quot;Genera script di migrazione database&quot;
42. &quot;Crea workflow GitHub Actions per deploy&quot;
43. &quot;Scrivi script di rollback automatico&quot;
44. &quot;Genera configurazione per staging environment&quot;</code></pre>
<h3>Documentation</h3>
<pre><code>45. &quot;Genera README.md professionale per plugin&quot;
46. &quot;Crea documentazione API con OpenAPI spec&quot;
47. &quot;Scrivi changelog automatico da git commits&quot;
48. &quot;Genera user guide per admin panel&quot;</code></pre>
<h3>Advanced</h3>
<pre><code>49. &quot;Crea integrazione con API esterna (es. Stripe)&quot;
50. &quot;Genera sistema di licensing per plugin premium&quot;
51. &quot;Scrivi updater automatico per plugin&quot;
52. &quot;Crea dashboard analytics custom&quot;</code></pre>
<hr />
<h2>📚 Risorse Consigliate</h2>
<h3>Documentazione Ufficiale</h3>
<ul>
<li><a href="https://developer.wordpress.org/" target="_blank" rel="noopener nofollow external" data-wpel-link="external">WordPress Developer Handbook</a></li>
<li><a href="https://developer.wordpress.org/coding-standards/" target="_blank" rel="noopener nofollow external" data-wpel-link="external">WordPress Coding Standards</a></li>
<li><a href="https://developer.wordpress.org/plugins/" target="_blank" rel="noopener nofollow external" data-wpel-link="external">Plugin Developer Handbook</a></li>
</ul>
<h3>Strumenti AI</h3>
<ul>
<li><a href="https://cursor.sh/" target="_blank" rel="noopener nofollow external" data-wpel-link="external">Cursor IDE</a> - Editor AI-first</li>
<li><a href="https://claude.ai/" target="_blank" rel="noopener nofollow external" data-wpel-link="external">Claude.ai</a> - Code generation avanzata</li>
<li><a href="https://github.com/features/copilot" target="_blank" rel="noopener nofollow external" data-wpel-link="external">GitHub Copilot</a> - Autocomplete</li>
<li><a href="https://wp-cli.org/" target="_blank" rel="noopener nofollow external" data-wpel-link="external">WP-CLI</a> - Automazione WordPress</li>
</ul>
<h3>Community</h3>
<ul>
<li><a href="https://wordpress.stackexchange.com/" target="_blank" rel="noopener nofollow external" data-wpel-link="external">WordPress Stack Exchange</a></li>
<li><a href="https://www.reddit.com/r/WordPress/" target="_blank" rel="noopener nofollow external" data-wpel-link="external">r/WordPress</a></li>
<li><a href="https://www.facebook.com/groups/advancedwordpress/" target="_blank" rel="noopener nofollow external" data-wpel-link="external">Advanced WordPress Facebook Group</a></li>
</ul>
<hr />
<h2>🎓 Conclusione</h2>
<p>Lo sviluppo WordPress con l'AI non è il futuro—è il <strong>presente</strong>. Gli strumenti che ho mostrato in questa guida ti permettono di:</p>
<p>✅ <strong>Risparmiare l'89% del tempo</strong> di sviluppo<br />
✅ <strong>Mantenere standard di qualità</strong> professionali<br />
✅ <strong>Ridurre bug e vulnerabilità</strong> con code review AI<br />
✅ <strong>Scalare la tua produttività</strong> senza compromessi  </p>
<p><strong>Il mio consiglio:</strong> Inizia con un progetto piccolo (tema child semplice), familiarizza con i prompt, e scala gradualmente verso plugin complessi.</p>
<p><strong>La chiave non è sostituire le tue competenze—è amplificarle.</strong> 🚀</p>
<hr />
<p><em>Hai trovato utile questa guida? Condividi i tuoi risultati o fai domande nei commenti!</em> 👇</p>
<p><strong>Emilio Petrozzi</strong><br />
<em>Sviluppatore WordPress &amp; AI Enthusiast</em><br />
<a href="https://www.mrtux.it" data-wpel-link="internal" target="_self" rel="noopener">www.mrtux.it</a></p>
]]></content:encoded>
					
					<wfw:commentRss>https://www.mrtux.it/sviluppo-wordpress-ai-temi-plugin/feed</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>WP-CLI Tutorial &#124; Gestione avanzata di WordPress</title>
		<link>https://www.mrtux.it/wp-cli-tutorial-gestione-avanzata-di-wordpress</link>
					<comments>https://www.mrtux.it/wp-cli-tutorial-gestione-avanzata-di-wordpress#respond</comments>
		
		<dc:creator><![CDATA[Emilio Petrozzi]]></dc:creator>
		<pubDate>Wed, 14 Jun 2023 08:19:52 +0000</pubDate>
				<category><![CDATA[Linux]]></category>
		<category><![CDATA[Wordpress]]></category>
		<category><![CDATA[bash]]></category>
		<category><![CDATA[wordpress]]></category>
		<category><![CDATA[wp-cli]]></category>
		<guid isPermaLink="false">https://www.mrtux.it/?p=2163</guid>

					<description><![CDATA[Scopri come utilizzare WP-CLI, lo strumento di gestione di WordPress basato sulla riga di comando. Questo tutorial ti guiderà passo dopo passo nell'installazione di WP-CLI, nell'esplorazione dei comandi principali.]]></description>
										<content:encoded><![CDATA[<h2>Introduzione</h2>
<p>In questo tutorial esamineremo <a href="https://www.mrtux.it/backup-remoto-wp-tramite-wp-cli-rclone-e-restic" data-wpel-link="internal" target="_self" rel="noopener">WP-CLI</a>, lo strumento di gestione di WordPress basato sulla riga di comando. Se stai cercando di semplificare il modo in cui gestisci il <a href="https://it.wordpress.org/" target="_blank" rel="noopener nofollow external" data-wpel-link="external">tuo sito WordPress</a> WP-CLI è la soluzione perfetta per te. Con WP-CLI puoi automatizzare le operazioni comuni di WordPress, risparmiando tempo e complicazioni varie. Vedremo come installare WP-CLI, esploreremo i comandi principali e forniremo alcuni esempi pratici che ti aiuteranno ad approfondire la gestione del tuo sito WordPress. Quindi preparati a scoprire il potenziale di <strong>WP-CLI</strong> e migliorare la tua esperienza di gestione di WordPress.</p>
<p><img fetchpriority="high" decoding="async" class="size-full wp-image-2165 aligncenter" src="https://www.mrtux.it/wp-content/uploads/2023/06/bash-wp-cli-wordpress-linea-comando-1.jpg" alt="bash wp cli wordpress linea comando" width="960" height="640" srcset="https://www.mrtux.it/wp-content/uploads/2023/06/bash-wp-cli-wordpress-linea-comando-1.jpg 960w, https://www.mrtux.it/wp-content/uploads/2023/06/bash-wp-cli-wordpress-linea-comando-1-300x200.jpg 300w, https://www.mrtux.it/wp-content/uploads/2023/06/bash-wp-cli-wordpress-linea-comando-1-768x512.jpg 768w" sizes="(max-width: 960px) 100vw, 960px" /></p>
<h2>Cosa è WP-CLI?</h2>
<p>WP-CLI è uno strumento di <em>linea di comando</em> open source che consente di gestire un sito WordPress senza dover utilizzare l'interfaccia utente tradizionale del pannello di amministrazione. Con WP-CLI  puoi eseguire una vasta gamma di operazioni, come l'installazione di temi e plugin, la gestione dei contenuti, il backup e il ripristino del database e molto altro ancora, tutto direttamente dalla riga di comando.</p>
<h2>Installazione di WP-CLI</h2>
<p>Prima di iniziare ad utilizzare WP-CLI è necessario installarlo sul tuo sistema. Segui questi passaggi per installare WP-CLI:</p>
<ol>
<li>Apri il tuo terminale o prompt dei comandi.</li>
<li>Verifica di avere già installato PHP sul tuo sistema.</li>
<li>Utilizza il seguente comando per scaricare l'archivio di WP-CLI:
<pre class="EnlighterJSRAW" data-enlighter-language="generic">curl -O https://raw.githubusercontent.com/wp-cli/builds/gh-pages/phar/wp-cli.phar
</pre>
</li>
<li>Verifica l'integrità dell'archivio scaricato utilizzando il comando:
<pre class="EnlighterJSRAW" data-enlighter-language="generic">php -r "if (hash_file('sha512', 'wp-cli.phar') === 'aa31b17e1d7d4eaf63dbf56c74b72cd46ce6ab5d2912c60e2c3f71b62459e06807bf60ef660cdaa3df9e4debb3d61befb794d669f1b8d7a9d4fddb042bbc2a8') { echo 'WP-CLI Phar integrity verified.' . PHP_EOL; } else { echo 'Phar integrity check failed. Please try downloading WP-CLI again.' . PHP_EOL; }"
</pre>
</li>
<li>Rinomina il file scaricato in <code>wp-cli.phar</code> con il comando:
<pre class="EnlighterJSRAW" data-enlighter-language="generic">mv wp-cli.phar wp-cli
</pre>
</li>
<li>Sposta il file <code>wp-cli</code> in una directory inclusa nel tuo PATH di sistema per renderlo eseguibile globalmente. Ad esempio, puoi utilizzare il seguente comando per spostarlo nella directory `/usr/local/bin/:
<pre class="EnlighterJSRAW" data-enlighter-language="generic">sudo mv wp-cli /usr/local/bin/
</pre>
</li>
<li>Verifica l'installazione eseguendo il comando:
<pre class="EnlighterJSRAW" data-enlighter-language="generic">wp --info
</pre>
<p>Se tutto è stato configurato correttamente, dovresti visualizzare le informazioni di WP-CLI, inclusa la versione installata.</li>
</ol>
<h2>Utilizzo di WP-CLI</h2>
<p>Una volta installato WP-CLI, puoi iniziare a utilizzarlo per gestire il tuo sito WordPress direttamente dalla riga di comando. Ecco alcuni dei comandi più comuni che ti saranno utili:</p>
<h3>1. Installazione di WordPress</h3>
<p>Puoi utilizzare WP-CLI per installare una nuova istanza di WordPress sul tuo server con pochi comandi. Ad esempio, per installare WordPress con un database specifico, puoi utilizzare il seguente comando:</p>
<pre class="EnlighterJSRAW" data-enlighter-language="generic">wp core install --url=nome-sito.com --title=Titolo-sito --admin_user=admin --admin_password=password --admin_email=admin@nome-sito.com
</pre>
<p>Assicurati di sostituire <code>nome-sito.com</code> con il tuo URL effettivo, <code>Titolo-sito</code> con il titolo desiderato per il tuo sito, <code>admin</code> con il nome utente desiderato per l'account amministratore, <code>password</code> con la password desiderata per l'account amministratore e <code>admin@nome-sito.com</code> con l'indirizzo email dell'amministratore.</p>
<h3>2. Installazione di temi e plugin</h3>
<p>Con WP-CLI, puoi installare e gestire temi e plugin direttamente dalla riga di comando. Ecco alcuni esempi:</p>
<ul>
<li>Per installare un tema:
<pre class="EnlighterJSRAW" data-enlighter-language="generic">wp theme install nome-tema
</pre>
</li>
<li>Per attivare un tema:
<pre class="EnlighterJSRAW" data-enlighter-language="generic">wp theme activate nome-tema
</pre>
</li>
<li>Per installare un plugin:
<pre class="EnlighterJSRAW" data-enlighter-language="generic">wp plugin install nome-plugin
</pre>
</li>
<li>Per attivare un plugin:
<pre class="EnlighterJSRAW" data-enlighter-language="generic">wp plugin activate nome-plugin
</pre>
</li>
</ul>
<h3>3. Gestione dei contenuti</h3>
<p>WP-CLI ti consente di gestire i contenuti del tuo sito WordPress in modo efficiente. Puoi creare nuovi articoli, pagine, categorie e molto altro ancora utilizzando i seguenti comandi:</p>
<ul>
<li>Per creare un nuovo articolo:
<pre class="EnlighterJSRAW" data-enlighter-language="generic">wp post create --post_type=post --post_title='Titolo-articolo' --post_content='Contenuto-articolo' --post_status=publish
</pre>
</li>
<li>Per creare una nuova pagina:
<pre class="EnlighterJSRAW" data-enlighter-language="generic">wp post create --post_type=page --post_title='Titolo-pagina' --post_content='Contenuto-pagina' --post_status=publish
</pre>
</li>
<li>Per creare una nuova categoria:
<pre class="EnlighterJSRAW" data-enlighter-language="generic">wp term create category 'Nome-categoria'
</pre>
</li>
<li>Per assegnare una categoria a un articolo:
<pre class="EnlighterJSRAW" data-enlighter-language="generic">wp post term set ID-articolo category 'Nome-categoria'
</pre>
</li>
</ul>
<h3>4. Backup e ripristino del database</h3>
<p>Con WP-CLI, puoi eseguire facilmente il backup del tuo database WordPress e ripristinarlo se necessario. Ecco come farlo:</p>
<ul>
<li>Per eseguire il backup del database:
<pre class="EnlighterJSRAW" data-enlighter-language="generic">wp db export nome-file.sql
</pre>
</li>
<li>Per ripristinare il database da un file di backup:
<pre class="EnlighterJSRAW" data-enlighter-language="generic">wp db import nome-file.sql
</pre>
</li>
</ul>
<p>Questi sono solo alcuni degli esempi di comandi che puoi utilizzare con WP-CLI. Esplora la documentazione ufficiale di WPCLI per scoprire ulteriori comandi e funzionalità avanzate che possono semplificare ulteriormente la gestione del tuo sito WordPress.</p>
<h2>Domande frequenti su WP-CLI</h2>
<h3>1. Cos'è WP-CLI e perché dovrei usarlo?</h3>
<p>WP-CLI è uno strumento di linea di comando per la gestione di WordPress. È estremamente utile per gli sviluppatori e gli amministratori di siti WordPress poiché consente di automatizzare operazioni comuni, risparmiando tempo e sforzo. Con WP-CLI puoi eseguire task come l'installazione di temi e plugin, la gestione dei contenuti e il <a href="https://www.mrtux.it/guida-rclone-criptare-salvare-su-yandex-disk-backups" data-wpel-link="internal" target="_self" rel="noopener">backup</a> del database, tutto senza dover utilizzare l'interfaccia utente tradizionale del pannello di amministrazione.</p>
<h3>2. Come posso installare WP-CLI sul mio sistema?</h3>
<p>L'installazione di WP-CLI è semplice. Devi assicurarti di avere PHP installato sul tuo sistema e seguire i passaggi di installazione che abbiamo descritto in precedenza. Una volta completata l'installazione, potrai utilizzare WP-CLI direttamente dalla riga di comando.</p>
<h3>3. Quali sono alcuni comandi comuni di WP-CLI che dovrei conoscere?</h3>
<p>Ci sono numerosi comandi utili che puoi utilizzare con WP-CLI. Alcuni esempi includono l'installazione di WordPress, l'installazione e l'attivazione di temi e plugin, la gestione dei contenuti e il backup del database. Nel nostro tutorial, abbiamo fornito alcuni esempi di comandi per aiutarti a iniziare, ma ti consigliamo di esplorare la documentazione ufficiale di WP-CLI per scoprire ulteriori comandi e funzionalità.</p>
<h3>4. WP-CLI è adatto anche ai principianti o è più adatto agli sviluppatori esperti?</h3>
<p>WP-CLI può essere utilizzato sia dai principianti che dagli sviluppatori esperti. Anche se alcune funzionalità più avanzate richiedono una conoscenza più approfondita di WordPress e della riga di comando, ci sono molti comandi di base che possono essere facilmente utilizzati dai principianti per semplificare la gestione del loro sito. Con un po' di pratica, anche i principianti possono trarre vantaggio dall'utilizzo di WP-CLI per automatizzare operazioni comuni e risparmiare tempo.</p>
<h3>5. WP-CLI è compatibile con tutti i provider di hosting?</h3>
<p>Sì, WP-CLI è compatibile con la maggior parte dei provider di hosting che supportano WordPress. Tuttavia, potrebbero esserci alcune limitazioni o restrizioni imposte dai provider di hosting specifici. Assicurati di verificare con il tuo provider di hosting se supportano WP-CLI e se ci sono eventuali requisiti o configurazioni aggiuntive da seguire per utilizzarlo correttamente.</p>
<h3>6. Posso utilizzare WP-CLI anche per siti WordPress multisito?</h3>
<p>Assolutamente! WP-CLI supporta la gestione di siti WordPress multisito. Puoi utilizzare comandi specifici per operare su siti individuali all'interno della tua installazione multisito, consentendoti di gestire in modo efficiente l'intera rete di siti WordPress.</p>
<h2>Conclusioni</h2>
<p>WP-CLI è unostrumento potente che semplifica notevolmente la gestione di WordPress direttamente dalla riga di comando. Nel nostro tutorial, abbiamo esaminato l'installazione di WP-CLI, i comandi principali e fornito esempi pratici per aiutarti a iniziare. Ricorda che WP-CLI può automatizzare molte operazioni comuni, consentendoti di risparmiare tempo prezioso nella gestione del tuo sito WordPress.</p>
<p>Utilizzando WP-CLI, puoi installare temi e plugin, gestire i contenuti, eseguire backup del database e molto altro ancora, tutto attraverso comandi semplici e intuitivi. Con un po' di pratica e familiarità con i comandi di WP-CLI, potrai ottimizzare e semplificare ulteriormente la gestione del tuo sito WordPress.</p>
<p>Spero che questo tutorial ti abbia fornito una base di conoscenza su WP-CLI che ti consenta di sfruttare i vantaggi nell'utilizzo di questo strumento nella tua esperienza con WordPress. Esplora ulteriormente i comandi e le funzionalità di WP-CLI per scoprire come puoi personalizzare e automatizzare la gestione del tuo <a href="https://www.mrtux.it/timeline-creazione-sito-web-dalla-bozza-alla-messa-online" data-wpel-link="internal" target="_self" rel="noopener">sito web</a>.</p>
<h3>Risorse esterne utili:</h3>
<ul>
<li>Documentazione ufficiale di WP-CLI: <a href="https://wp-cli.org/" target="_blank" rel="noopener nofollow external" data-wpel-link="external">link</a></li>
<li>WP-CLI su GitHub: <a href="https://github.com/wp-cli/wp-cli" target="_blank" rel="noopener nofollow external" data-wpel-link="external">link</a></li>
</ul>
]]></content:encoded>
					
					<wfw:commentRss>https://www.mrtux.it/wp-cli-tutorial-gestione-avanzata-di-wordpress/feed</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
	</channel>
</rss>
