Aggiornare WordPress, Plugin e Temi in Sicurezza: Procedura Step-by-Step

14 aprile 20265 minGuide
In breveAI

Aggiornare WordPress senza interruzioni richiede una procedura attenta per minimizzare il rischio di problemi. Impara a eseguire aggiornamenti sicuri e senza downtime utilizzando una procedura testata su oltre 40 siti WordPress, che include backup completi, lettura del changelog e test in staging per aggiornamenti critici.

Aggiornare WordPress Senza Rompere Nulla: La Procedura che Usiamo su 40+ Siti

L’aggiornamento è la singola azione di sicurezza più importante su WordPress. Il 60% dei siti hackerati non era aggiornato. Ma l’aggiornamento fatto male è la singola causa più comune di downtime auto-inflitto.

Il paradosso: devi aggiornare per la sicurezza, ma ogni aggiornamento può rompere qualcosa. La soluzione non è “non aggiornare” (il che è peggio). La soluzione è una procedura che minimizza il rischio.

Questa è la procedura che usiamo su 40+ siti WordPress in produzione. Non è teoria. È il risultato di centinaia di aggiornamenti (e qualche rollback).

La Classificazione degli Aggiornamenti

Non tutti gli aggiornamenti sono uguali. La procedura cambia in base al tipo:

Tipo Esempio Rischio Procedura
Core minor 6.5.1 → 6.5.2 Bassissimo Automatico, nessun test
Core major 6.5 → 6.6 Medio Staging first, test completo
Plugin patch 3.2.1 → 3.2.2 Basso Backup + aggiorna + verifica
Plugin minor 3.2 → 3.3 Medio Leggi changelog + backup + aggiorna
Plugin major 3.x → 4.0 Alto Staging + test completo + rollback plan
Tema Qualsiasi Medio-alto Solo se tema child, staging first
PHP version 8.1 → 8.3 Alto Staging obbligatorio + PHP Compatibility Checker

La Procedura Step-by-Step

Step 1: Backup completo (2 minuti)

Prima di qualsiasi aggiornamento. Sempre. Non “di solito”. Sempre.

# Con WP-CLI
wp db export /tmp/backup-pre-update-$(date +%Y%m%d).sql

# File backup (solo wp-content che contiene le customizzazioni)
tar -czf /tmp/wp-content-backup-$(date +%Y%m%d).tar.gz wp-content/

# Oppure con UpdraftPlus
wp updraftplus backup

Verifica che il backup sia leggibile. Un backup corrotto è peggio di nessun backup (ti dà una falsa sicurezza).

Step 2: Leggi il changelog (5 minuti)

Per aggiornamenti minor e major di plugin critici, leggi il changelog. Cerca:

  • “Breaking change” o “breaking” (incompatibilità)
  • “Deprecated” (funzionalità rimossa in futuro)
  • “Requires PHP” o “Requires WordPress” (cambio requisiti)
  • “Security fix” (aggiorna subito, non aspettare)

Se il changelog menziona breaking changes e il plugin è critico (WooCommerce, page builder, SEO plugin), vai allo Step 2b (staging).

Step 2b: Test in Staging (per aggiornamenti rischiosi)

# Crea un clone rapido per il test
# Opzione 1: WP-CLI + plugin (WP Staging, Jeep)
wp staging create --name=update-test

# Opzione 2: rsync + database clone manuale
rsync -a /var/www/produzione/ /var/www/staging/
mysqldump prod_db | mysql staging_db
# Aggiorna wp-config.php dello staging con il DB corretto

Nello staging: applica l’aggiornamento e testa le funzionalità chiave (form, checkout, pagine principali, area admin).

Step 3: Aggiorna (1 minuto per plugin)

# Singolo plugin
wp plugin update plugin-name

# Tutti i plugin con aggiornamenti disponibili
wp plugin update --all

# Core WordPress (minor)
wp core update --minor

# Core WordPress (major, solo dopo staging test)
wp core update

Per agenzie con 30 siti, WP-CLI via SSH è l’unico modo scalabile. Un webhook può notificarti il risultato automaticamente.

Step 4: Verifica post-aggiornamento (5 minuti)

Checklist rapida dopo ogni aggiornamento:

  • ✅ Homepage carica correttamente
  • ✅ wp-admin accessibile
  • ✅ Nessun errore PHP nel debug.log
  • ✅ Form principale funziona (invia un test)
  • ✅ Se e-commerce: aggiungi al carrello + checkout test funziona
  • ✅ Se ha cache: svuota la cache e verifica
# Verifica rapida da CLI
wp eval 'echo "WP OK: " . get_bloginfo("version");'

# Controlla errori PHP
tail -20 wp-content/debug.log 2>/dev/null || echo "No debug log"

# Test HTTP della homepage
curl -s -o /dev/null -w "HTTP %{http_code} | %{time_total}s\n" https://tuosito.com

Step 5: Rollback (se necessario)

# Ripristina il database
wp db import /tmp/backup-pre-update-*.sql

# Ripristina i file
tar -xzf /tmp/wp-content-backup-*.tar.gz -C /var/www/html/

# Svuota la cache
wp cache flush

Il rollback deve essere possibile in meno di 5 minuti. Se richiede più tempo, la procedura di backup è inadeguata.

Automazione per Agenzie

Script per aggiornamento batch di tutti i siti

#!/bin/bash
# update-all-sites.sh

SITES=(
    "/var/www/site1"
    "/var/www/site2"
    "/var/www/site3"
)

LOG="/var/log/wp-updates-$(date +%Y%m%d).log"

for site in "${SITES[@]}"; do
    name=$(basename "$site")
    echo "=== $name ===" >> "$LOG"
    
    cd "$site"
    
    # 1. Backup DB
    wp db export "/tmp/backup-${name}-$(date +%Y%m%d).sql" 2>> "$LOG"
    
    # 2. Aggiorna plugin (solo patch e minor)
    wp plugin update --all 2>> "$LOG"
    
    # 3. Aggiorna core minor
    wp core update --minor 2>> "$LOG"
    
    # 4. Verifica
    status=$(curl -s -o /dev/null -w "%{http_code}" "https://${name}.com")
    if [ "$status" != "200" ]; then
        echo "⚠️ $name: HTTP $status dopo update!" >> "$LOG"
        # Rollback automatico
        wp db import "/tmp/backup-${name}-$(date +%Y%m%d).sql" 2>> "$LOG"
        echo "Rollback eseguito per $name" >> "$LOG"
    else
        echo "✅ $name: OK (HTTP $status)" >> "$LOG"
    fi
    
    echo "" >> "$LOG"
done

# Invia report
mail -s "WordPress Update Report $(date +%Y-%m-%d)" admin@agenzia.com < "$LOG"

Questo script: fa backup, aggiorna, verifica, e se qualcosa va storto fa rollback automatico. Lo scheduliamo con cron il martedì mattina alle 6:00 (fuori orario business, ma durante la settimana per poter intervenire).

Quando NON Aggiornare

  • Venerdì pomeriggio: mai aggiornare prima del weekend. Se qualcosa si rompe, devi intervenire nel weekend
  • Durante un lancio o campagna: se il cliente ha una campagna marketing attiva, l'aggiornamento può aspettare 1-2 giorni
  • Senza backup verificato: se il backup è fallito o non verificato, sistema prima il backup
  • Plugin con 0 test su nuova versione: se un plugin major è uscito oggi, aspetta 3-5 giorni per vedere se emergono bug. Le prime 48 ore sono le più rischiose

Eccezione: security patch critiche. Se WPScan segnala una vulnerabilità attivamente sfruttata, aggiorna subito, indipendentemente dal giorno.

FAQ

Posso abilitare gli auto-update per tutti i plugin?

Per plugin piccoli e non critici, sì. Per plugin critici (WooCommerce, page builder, SEO plugin), no. Un aggiornamento automatico di WooCommerce che rompe il checkout alle 3 di notte è il tipo di incidente che vuoi evitare. La schedulazione con cron reale ti dà più controllo.

Ogni quanto aggiornare?

Plugin: settimanalmente. Core minor: appena disponibile (automatico). Core major: entro 2 settimane dal rilascio (dopo test in staging). PHP: durante una finestra di manutenzione pianificata, con test completo.

Come gestire plugin premium senza auto-update?

I plugin premium (Elementor Pro, ACF Pro, Gravity Forms) non hanno auto-update dal repository WordPress. Opzioni: 1) Configura la licenza nel plugin per ricevere gli aggiornamenti dalla dashboard. 2) Usa WP-CLI con il token del vendor. 3) Script che scarica l'ultima versione dalla API del vendor e la installa.

Gestisci i siti WordPress dei tuoi clienti?

AgencyPilot ti dà report AI, uptime monitoring, backup e portale clienti in un’unica dashboard. Gratis per 3 siti.

Prova gratis
Leggi anche
Tutti gli articoli
Tutti gli articoli