Aggiornamento Bulk Plugin WordPress: Come Farlo Su 30 Siti Senza Rompere Nulla
Lunedì mattina. Apri la dashboard. 30 siti WordPress, ognuno con 3-7 plugin da aggiornare. Totale: 150 aggiornamenti. Li fai uno alla volta? Ci vogliono 3 ore. Li fai in bulk senza test? Qualcosa si romperà.
La soluzione è nel mezzo: aggiornamenti bulk con classificazione del rischio e rollback automatico.
La Strategia: Classify, Batch, Verify
Step 1: Classifica il rischio
Non tutti gli aggiornamenti sono uguali (come spiegato nella nostra guida agli aggiornamenti sicuri).
#!/bin/bash
# classify-updates.sh
SITE="/var/www/html"
cd "$SITE"
echo "=== SECURITY PATCHES (aggiorna subito) ==="
wp plugin list --update=available --format=json | \
jq -r '.[] | select(.update_version | test("^[0-9]+\\.[0-9]+\\.[1-9]")) | .name + " " + .version + " -> " + .update_version'
echo ""
echo "=== MINOR UPDATES (aggiorna con verifica) ==="
wp plugin list --update=available --format=json | \
jq -r '.[] | select(.update_version | test("^[0-9]+\\.[1-9]")) | .name + " " + .version + " -> " + .update_version'
echo ""
echo "=== MAJOR UPDATES (staging first!) ==="
wp plugin list --update=available --format=json | \
jq -r '.[] | select(.update_version | test("^[1-9]")) | .name + " " + .version + " -> " + .update_version'
Step 2: Batch per rischio
# Batch 1: patch di sicurezza (basso rischio, subito)
wp plugin update plugin-1 plugin-2 plugin-3
# Verifica rapida
curl -s -o /dev/null -w "%{http_code}" https://tuosito.com
# Se 200: prossimo batch. Se non 200: rollback.
# Batch 2: minor updates
wp plugin update plugin-4 plugin-5
# Batch 3: major updates (uno alla volta)
wp plugin update woocommerce
# Test checkout completo prima del prossimo
Step 3: Script multi-sito con rollback
#!/bin/bash
# bulk-update-all.sh
SITES=("/var/www/site1" "/var/www/site2" "/var/www/site3")
for site in "${SITES[@]}"; do
name=$(basename "$site")
cd "$site"
# Backup
wp db export "/tmp/pre-update-${name}.sql" 2>/dev/null
# Aggiorna (solo patch e minor)
wp plugin update --all --minor 2>/dev/null
# Verifica
url=$(wp option get siteurl 2>/dev/null)
http=$(curl -s -o /dev/null -w "%{http_code}" "$url")
if [ "$http" != "200" ]; then
echo "❌ $name: ROLLBACK (HTTP $http)"
wp db import "/tmp/pre-update-${name}.sql" 2>/dev/null
else
echo "✅ $name: OK"
fi
done
Gestire i Plugin Premium
I plugin premium (Elementor Pro, ACF Pro, Gravity Forms) non si aggiornano via wp plugin update dal repository. Opzioni:
- Licenza attiva: molti plugin premium si aggiornano dalla dashboard se la licenza è inserita
- WP-CLI con filter: alcuni plugin premium hanno comandi WP-CLI dedicati
- Download manuale + wp plugin install: scarica il .zip dal sito del vendor e installa con
wp plugin install plugin.zip --force
FAQ
Se un aggiornamento rompe un sito, come faccio il rollback di un singolo plugin?
WP-CLI non ha un comando di rollback nativo. Opzioni: 1) Ripristina il backup DB pre-update. 2) Installa la versione precedente manualmente: wp plugin install plugin-name --version=3.1.0 --force. 3) Plugin WP Rollback per farlo dalla dashboard.
Posso schedulare gli aggiornamenti bulk di notte?
Sì, con cron. Schedula lo script alle 3:00 di notte, con email di report al mattino. Ma attenzione: se qualcosa si rompe alle 3:00, nessuno lo vede fino alle 9:00. Per siti critici (e-commerce), meglio durante l’orario di lavoro con verifica immediata.