Quando si parla di sicurezza, sappiamo tutti quanto sia importante aggiornare regolarmente le installazioni di WordPress (core, temi e plugin) e quanto tempo ci può portar via il processo di aggiornamento, soprattutto quando abbiamo installato un bel numero di plugin. Normalmente, si consiglia di seguire questi passaggi:

  1. Effettuare un back-up dei file e delle tabelle del database
  2. Disabilitare i plugin
  3. Eseguire l’aggiornamento
  4. Abilitare i plugin uno alla volta
  5. Controllare il sito

Sarà pure un compito noioso per un singolo sito web, ma potrebbe diventare fastidioso e complesso quando bisogna aggiornare cinque, dieci o più siti web.

Con lo scopo specifico di migliorare la sicurezza dell’installazione e semplificare l’amministrazione del sito, WordPress 3.7 ha introdotto gli aggiornamenti automatici. Di default, questa utile funzionalità è abilitata per le minor release (ovvero le versioni di manutenzione e di sicurezza) e i file delle traduzioni, ma è possibile personalizzare ogni tipo di aggiornamento. Quindi, in questo post, vedremo come automatizzare il processo di aggiornamento ogni volta che viene rilasciata una nuova versione del core, di un tema o di un plugin di WordPress. È il momento di scoprire cosa sono gli aggiornamenti automatici di WordPress!

Aggiornamenti automatici di WordPress
Aggiornamenti automatici di WordPress

Aggiornamenti automatici di WordPress

Esistono quattro tipi di aggiornamenti e di aggiornamenti automatici di WordPress:

  1. Aggiornamenti del core
  2. Aggiornamenti dei plugin
  3. Aggiornamenti dei temi
  4. Aggiornamenti dei file delle traduzioni

Gli aggiornamenti del core si dividono in tre sottotipi:

  1. Sviluppo core (disponibile solo per le installazioni di sviluppo)
  2. Aggiornamenti secondari del core (manutenzione e sicurezza) – abilitati di default nelle installazioni stabili
  3. Aggiornamenti principali del core

WordPress permette di automatizzare il processo di aggiornamento per ognuna di queste tipologie fornendo due costanti del file wp-config.php e un buon numero di filtri API.

Controllo degli aggiornamenti in background tramite wp-config.php

WordPress dispone di un paio di costanti wp-config.php che ci permettono di controllare gli aggiornamenti automatici. L’impostazione di AUTOMATIC_UPDATER_DISABLED su true disabiliterà qualsiasi tipo di aggiornamento automatico:

define( 'AUTOMATIC_UPDATER_DISABLED', true );

WP_AUTO_UPDATE_CORE permette di controllare gli aggiornamenti del core (versioni minori, principali e di sviluppo). Questa costante può essere definita come segue:

# Disables all core updates:
define( 'WP_AUTO_UPDATE_CORE', false );

# Enables all core updates, including minor and major:
define( 'WP_AUTO_UPDATE_CORE', true );

# Enables minor updates:
define( 'WP_AUTO_UPDATE_CORE', 'minor' );

Nelle installazioni di sviluppo, WP_AUTO_UPDATE_CORE è impostato di default a true. Nelle installazioni stabili, il valore predefinito è minor.

Per completezza, bisognerebbe menzionare una costante aggiuntiva che può essere definita per disabilitare gli aggiornamenti automatici. Tuttavia, impostando il suo valore a true, questa disabiliterà qualsiasi modifica di file, anche quelle effettuate durante l’installazione di temi e plugin, oltre agli aggiornamenti manuali.

define( 'DISALLOW_FILE_MODS', true );

Al suo posto potreste definire la costante DISALLOW_FILE_EDITS, che disabiliterebbe l’editor dei file, ma garantendo il funzionamento regolare dei processi di installazione e aggiornamento.

Tutorial correlato: Il file wp-config.php: uno sguardo approfondito alla configurazione di WordPress

Controllo degli aggiornamenti in background tramite i filtri dell’API

Le costanti di configurazione forniscono un modo generale per abilitare o disabilitare gli aggiornamenti automatici. Ma WordPress offre anche una serie di filtri che garantiscono un controllo più preciso su qualsiasi tipo di aggiornamento.

Nota: i filtri devono essere utilizzati all’interno dei plugin, e i plugin “must use” sono una buona opzione per gli aggiornamenti in background. Gli MU-plugin risiedono in una cartella specifica all’interno della cartella /wp-content e sono automaticamente abilitati da WordPress. Questi plugin non vengono visualizzati nella schermata dei plugin del pannello di amministrazione di WordPress, quindi non possono essere disabilitati o rimossi accidentalmente dagli amministratori del sito. Per una visione più approfondita, fate riferimento alla documentazione del Codex

Per prima cosa, restituendo true tramite il filtro automatic_updater_disabled ha lo stesso effetto della definizione della costante AUTOMATIC_UPDATER_DISABLED al valore true in wp-config.php:

add_filter( 'automatic_updater_disabled', '__return_true' );

Possiamo controllare qualsiasi tipo di aggiornamento tramite i filtri auto_update_$type che abilitano o disabilitano gli aggiornamenti in base al valore di $type ('core', 'plugin', 'theme' o 'translation').

Quindi, possiamo rendere automatici tutti gli aggiornamenti del Core restituendo true attraverso il filtro auto_update_core:

add_filter( 'auto_update_core', '__return_true' );

Nell’esempio seguente, abilitiamo gli aggiornamenti automatici per temi, plugin e traduzioni:

add_filter( 'auto_update_theme', '__return_true' );
add_filter( 'auto_update_plugin', '__return_true' );
add_filter( 'auto_update_translation', '__return_true' );

Negli esempi qui sopra abbiamo appena abilitato gli aggiornamenti automatici. Ma questi filtri ci danno un controllo ancora maggiore sugli aggiornamenti. Nel seguente esempio rendiamo automatici gli aggiornamenti di due plugin specifici:

function cb_auto_update_plugins ( $update, $item ) {
	$plugins = array ( 'hello', 'akismet' );
	if ( in_array( $item->slug, $plugins ) ) {
		// update plugin
		return true; 
	} else {
		// use default settings
		return $update; 
	}
}
add_filter( 'auto_update_plugin', 'cb_auto_update_plugins', 10, 2 );

La funzione di callback accetta due argomenti:

  1. $update: un valore booleano che stabilisce se aggiornare o meno;
  2. $item: l’oggetto dell’offerta di aggiornamento.

La funzione verifica che l’elemento da aggiornare si trovi nell’array $plugins, quindi restituisce true o false di conseguenza.

Infine, possiamo fare differenza tra aggiornamenti di sviluppo, aggiornamenti minori e aggiornamenti principali, restituendo true o false attraverso i seguenti filtri:

add_filter( 'allow_dev_auto_core_updates', '__return_false' );
add_filter( 'allow_minor_auto_core_updates', '__return_true' );
add_filter( 'allow_major_auto_core_updates', '__return_true' );

Tutti noi sappiamo che di tanto in tanto un aggiornamento può fallire. Nel peggiore dei casi, il sito web può andare giù dopo un errore di aggiornamento. Ma fortunatamente possiamo chiedere a WordPress di inviarci una notifica tramite email dopo ogni aggiornamento (o tentativo di aggiornamento).

Esito, notifiche e email di debug

A seconda del risultato del processo di aggiornamento, WordPress invia un’email diversa all’indirizzo dell’amministratore:

  • una email di esito viene inviata dopo un aggiornamento automatico del Core;
  • una email di notifica viene inviata quando WordPress non è in grado di eseguire un aggiornamento automatico;
  • una email di debug viene inviata nelle versioni di sviluppo di WordPress.

Ogni volta che un aggiornamento automatico ha esito positivo o negativo, WordPress invia un’email di esito o di notifica con uno dei seguenti oggetti:

  • Il tuo sito è stato aggiornato a WordPress XXX (case ‘success’)
  • WordPress XXX è disponibile. Per favore aggiorna! (l’aggiornamento è fallito ed è richiesto un aggiornamento manuale è richiesto: case ‘fail’)
  • URGENTE: il tuo sito potrebbe essere inattivo a causa di un aggiornamento non riuscito (l’aggiornamento non è riuscito e WordPress potrebbe essere inattivo: case ‘critical’)

Il filtro auto_core_update_send_email controlla le email di esito e di notifica. Queste email possono essere disattivate imponendo al filtro di restituire false come segue:

apply_filters( 'auto_core_update_send_email', '__return_false' );

Soprattutto se state pianificando di estendere gli aggiornamenti automatici alle versioni principali del core e/o dei temi e dei plugin, potreste pensare di lasciare attivee le email di esito e notifica, oppure personalizzarle in base al tipo di esito o di aggiornamento. Nell’esempio che segue, WordPress non invierà l’email di esito in caso di successo:

function cb_auto_core_update_send_email ( $send, $type, $core_update, $result ) {
	if ( !empty( $type ) && $type == 'success' ) {
		// don't send email
		return false; 
	}
		// use default settings
		return $send; 
	}
}
add_filter( 'auto_core_update_send_email', 'cb_auto_core_update_send_email', 10, 4 );

La funzione di callback accetta i seguenti argomenti:

  • $send è un valore booleano che determina se inviare una email di esito o di notifica;
  • $type è una stringa che imposta il tipo di email da inviare (‘success’, ‘fail’ o ‘critical’);
  • $core_update è l’oggetto dell’offerta di aggiornamento;
  • $result è l’esito dell’aggiornamento del Core (può essere un errore WP_Error).

Di default gli amministratori ricevono una notifica quando l’offerta di aggiornamento ricevuta da WordPress.org imposta un particolare flag e l’installazione non è in grado di aggiornarsi. L’email di notifica verrà inviata solo una volta per ogni versione. Il filtro send_core_update_notification_email consente una certa discrezione sul se e quando inviare questo tipo di notifiche. Applicate il filtro come segue:

apply_filters( 'send_core_update_notification_email', '__return_true' );

Infine, il filtro automatic_updates_send_debug_email controlla le email di debug, che forniscono utili informazioni di registro relative agli aggiornamenti eseguiti. Di default, queste email vengono inviate dalle installazioni di sviluppo. Restituendo false si impedirà a WordPress di inviare email di debug, mentre restituendo true si abiliteranno queste email anche in installazioni stabili:

apply_filters( 'automatic_updates_send_debug_email', '__return_true' );

Quando e perché disattivare gli aggiornamenti automatici di WordPress

L’aggiornamento automatico è una funzionalità eccezionale per molti utenti, poiché consente di risparmiare molto tempo e lavoro.
Ma, anche se sembra che gli aggiornamenti automatici siano davvero sicuri, dovremmo chiederci se sia sempre una buona idea attivarli tutti.

Di tanto in tanto, potremmo riscontrare problemi di incompatibilità su temi e plugin che potrebbero interrompere alcune funzionalità o addirittura bloccare il sito. Se questo dipende da un buon numero di plugin, potrebbe essere più sicuro eseguire aggiornamenti manuali, almeno per quanto riguarda i plugin. Il procedimento “uno alla volta” ci permette di individuare rapidamente eventuali anomalie che con gli aggiornamenti automatici potrebbero essere difficili da trovare.

Inoltre, se siete sviluppatori, dovreste fare attenzione ai nomi che assegnate ai vostri temi e plugin anche se non avete intenzione di distribuirli. Quando si eseguono gli aggiornamenti, WordPress cerca nella Directory dei Plugin le nuove versioni dei plugin e sovrascrive i file se viene trovato un plugin con lo stesso nome. Quindi, se pensate di abilitare gli aggiornamenti in background per temi e plugin, assicuratevi di assegnare nomi univoci ai vostri script.

Bene, ci sono un sacco di ottime cose per gli sviluppatori. Ma come può un utente non sviluppatore gestire gli aggiornamenti automatici?

Controllo degli aggiornamenti automatici di WordPress tramite plugin

Se non siete sviluppatori, potete controllare gli aggiornamenti automatici di WordPress utilizzando un plugin.

Easy Updates Manager permette a tutti gli utenti di controllare gli aggiornamenti di WordPress sia su sito singolo che su installazioni multisite. Il plugin consente di gestire tutte le tipologie di aggiornamenti di WordPress, e temi e plugin possono essere selezionati individualmente per gli automatici automatici. Le funzionalità aggiuntive riguardano email di notifica, blocco degli utenti e registrazione degli aggiornamenti dei plugin.

Easy Updates Manager - gestione degli aggiornamenti automatici di WordPress
Easy Updates Manager

In caso di incompatibilità, potrebbe essere necessario ripristinare una versione precedente di un tema o un plugin. WP Rollback consente di ripristinare una versione precedente di qualsiasi tema e plugin dalla pagina di amministrazione dei plugin. Basta fare clic sul link Rollback e il plugin vi mostrerà un elenco di tutte le versioni disponibili.
Sfortunatamente, WP Rollback non vi sarà di aiuto se il vostro sito web va in crash, quindi non dimenticate di eseguire il backup e leggere attentamente la documentazione online.

WP Rollback
WP Rollback

Infine, se è necessario effettuare un test di compatibilità sugli aggiornamenti automatici nella vostra installazione di WordPress, Background Update Tester vi fornirà tutte le informazioni necessarie.

Aggiornamenti automatici per plugin e temi premium

Se siete sviluppatori di plugin o temi premium di WordPress, è vostro dovere prevedere un meccanismo di aggiornamento automatico nei vostri prodotti per offrire la stessa esperienza di aggiornamento senza interruzione che gli utenti si aspettano dai prodotti di WordPress.org. Questo è diventato standard del mercato di oggi (e per una buona ragione). Potete ospitare i prodotti premium voi stessi e sviluppare un meccanismo di aggiornamento, oppure sfruttare piattaforme come Freemius, o Kernl, che offrono un repository sicuro e aggiornamenti automatici come servizio, immediatamente disponibili.

Rollback per aggiornamenti automatici

Ogni aggiornamento del core, dei plugin o dei temi presenta qualche rischio, sia esso manuale o automatico. Fortunatamente, WordPress offre una sorta di rete di sicurezza sia per gli aggiornamenti manuali che per quelli automatici. Mentre i rollback automatici per gli aggiornamenti del core risalgono a WordPress 3.7, abbiamo dovuto aspettare un po’ di più per i rollback degli aggiornamenti dei plugin.

Da WordPress 6.3, in caso di aggiornamento manuale, un plugin non viene riattivato se genera un errore fatale PHP. Questo controllo di sicurezza non è stato eseguito sugli aggiornamenti automatici dei plugin fino a WordPress 6.6.

Ora, se avete abilitato gli aggiornamenti automatici dei plugin sul vostro sito WordPress, in caso di guasto non vedrete lo schermo bianco della morte perché WordPress riporta automaticamente il plugin alla versione precedente per evitare che il sito si blocchi. Visitando la schermata dei plugin nella dashboard di WordPress, si noterà che il plugin è ancora in attesa di aggiornamento.

La schermata dei plugin di WordPress mostra un plugin in attesa di aggiornamento
Se un plugin non si aggiorna automaticamente, WordPress lo riporta alla versione precedente.

Inoltre, quando WordPress rileva un errore durante l’aggiornamento di un plugin, invia all’amministratore del sito un’e-mail con l’elenco dei plugin che non sono stati aggiornati e di quelli aggiornati.

Un'email da WordPress che avverte del fallimento del rollback automatico del plugin
Un’email da WordPress che avverte del fallimento del rollback automatico del plugin

È possibile riprovare l’aggiornamento in un ambiente di staging, aspettate una nuova versione del plugin che risolva il problema, oppure contattate lo sviluppatore per ricevere assistenza.

Aggiornamenti Automatici di Kinsta

Gli aggiornamenti di WordPress devono essere gestiti con cura e attenzione, poiché potrebbero fallire e lasciarvi con uno schermo bianco o causare problemi di compatibilità tra i plugin o con il core di WordPress.

Testare gli aggiornamenti in un ambiente di staging e eseguire un backup del sito live prima di avviarli è fondamentale per prevenire questi problemi. Questo è vero sprattutto per i siti di business ed educativi.

Sebbene si possano aver preso tutte le precauzioni necessarie per garantire che gli aggiornamenti vengano eseguiti in modo sicuro, l’aggiornamento del core, dei plugin e dei temi richiede molto tempo, soprattutto quando si gestiscono decine o centinaia di siti WordPress.

È vero che ora sono disponibili aggiornamenti automatici per il core e i plugin di WordPress e che esiste un’opzione di rollback per gli aggiornamenti automatici dei plugin non riusciti. Tuttavia, queste non sono soluzioni definitive e richiedono comunque un monitoraggio attivo.

La dashboard MyKinsta offre diverse funzionalità che consentono di ridurre al minimo o addirittura eliminare i tempi di esecuzione e i rischi associati agli aggiornamenti di WordPress, dei plugin e dei temi. Ciò è utile soprattutto per siti complessi e agenzie che gestiscono decine o centinaia di siti web.

Nella dashboard di MyKinsta è possibile:

  • Verificare quali dei plugin e dei temi installati sono interessati da vulnerabilità note.
  • Aggiornare plugin e temi singolarmente o in blocco, per un singolo ambiente o più ambienti contemporaneamente.
  • Abilitare o disabilitare plugin e temi.
  • Abilitare o disabilitare gli aggiornamenti automatici per plugin e temi, singolarmente o in blocco.
  • Abilitare gli Aggiornamenti Automatici di Kinsta.

Accedete alla vostra dashboard MyKinsta e navigate su siti WordPress. Qui, le schede Plugin e Temi elencano tutti i plugin e i temi installati sui siti WordPress. Sono inclusi i numeri di versione, gli aggiornamenti disponibili e l’ultima versione di ciascuna estensione. Un menu a tendina consente di eseguire azioni specifiche su singoli plugin/temi o in blocco.

The Plugins tab lists all the installed plugins on all your WordPress sites.
La scheda Plugin elenca tutti i plugin installati su tutti i siti WordPress.

È inoltre possibile verificare le versioni dei plugin/temi e gestire gli aggiornamenti su installazioni/ambienti specifici. Si accede alla dashboard MyKinsta e si va su Siti WordPress > nomesito > Plugin e temi. Qui si trovano le seguenti sezioni:

  • Aggiornamenti automatici
  • Plugin installati
  • Temi installati
  • Aggiornamenti Automatici di Kinsta

Sotto Automatic updates, si può verificare quale aggiornamento automatico è abilitato sul proprio sito/ambiente. Il pulsante Modifica apre un menu a tendina in cui è possibile selezionare uno dei tre tipi di aggiornamento per tutti i plugin e i temi del proprio sito:

  • Manuale: disabilita gli aggiornamenti automatici
  • Aggiornamenti automatici di WordPress: Abilita gli aggiornamenti automatici integrati di WordPress per plugin e temi
  • Aggiornamenti Automatici di Kinsta: Abilita gli Aggiornamenti Automatici di Kinsta con un test di regressione visiva.
Change Automatic Updates in MyKinsta
Modifica degli aggiornamenti automatici in MyKinsta

Le sezioni Plugin installati e Temi installati forniscono gli elenchi dei plugin e dei temi presenti nell’ambiente WordPress. Qui è possibile verificare lo stato dell’estensione (attiva o inattiva), la versione installata, l’ultima versione e lo stato degli aggiornamenti automatici. Un menu a tendina consente inoltre di aggiornare, attivare o disattivare il plugin/tema e modificare le impostazioni di aggiornamento automatico per ciascuna estensione singolarmente o in blocco.

Installed plugin in a WordPress environment in MyKinsta
Plugin installati in un ambiente WordPress in MyKinsta

Se una versione presenta vulnerabilità note, un triangolo rosso e un suggerimento informano del potenziale rischio.

A plugin version with known security vulnerabilities
Una versione di plugin con vulnerabilità di sicurezza note

Mentre le sezioni precedenti forniscono i dettagli e consentono di gestire gli Aggiornamenti automatici di WordPress, la sezione Aggiornamenti Automatici di Kinsta fornisce i dettagli sugli aggiornamenti eseguiti automaticamente da Kinsta.

Aggiornamenti Automatici di Kinsta
Aggiornamenti Automatici di Kinsta

Questi aggiornamenti non sono solo una versione più potente del sistema di aggiornamento di WordPress. Sono qualcosa di diverso e più efficiente. Mantengono aggiornati i plugin e i temi di WordPress ed eseguono test di regressione visiva sul sito prima e dopo l’aggiornamento. Se viene rilevato un errore, gli Aggiornamenti Automatici di Kinsta ripristinano le modifiche.

A screenshot of a failed update
Uno screenshot di un aggiornamento non riuscito

Gli aggiornamenti automatici di Kinsta sono altamente personalizzabili. È possibile scegliere la frequenza dei test, la finestra temporale e la sensibilità del test di regressione visiva. È inoltre possibile selezionare gli URL dei siti da testare e specificare eventuali elementi della pagina da nascondere al test. È anche possibile scegliere se abilitare o meno la modalità di manutenzione durante l’esecuzione degli aggiornamenti.

Kinsta Automatic Update settings
Impostazioni degli Aggiornamenti Automatici di Kinsta

Grazie all’add-on degli Aggiornamenti Automatici di Kinsta, il vostro team può ridurre drasticamente il tempo che solitamente impiega per aggiornare i plugin e i temi di WordPress. Se gestite decine o addirittura centinaia di siti, gli Aggiornamenti Automatici di Kinsta vi fanno risparmiare tempo e risorse, permettendovi di concentrarvi meno sulla manutenzione e più sul core business.

Per una panoramica più dettagliata degli Aggiornamenti Automatici di Kinsta, si veda la nostra documentazione sugli Aggiornamenti Automatici.

Riepilogo

Oggi WordPress dispone di una potente funzionalità di aggiornamento automatico per il core, i plugin e i temi.

Tuttavia, gli aggiornamenti automatici non sono completamente sicuri. Possono fallire per vari motivi, motivo per cui non possono essere lasciati al caso. È fondamentale disporre di un backup recente da ripristinare in caso di guasto e controllare attentamente il sito dopo ogni aggiornamento.

Inoltre, con la crescita del sito web o l’aumento della base dei clienti, l’aggiornamento della piattaforma WordPress può diventare un’operazione complessa e dispendiosa in termini di tempo, anche se si abilitano gli aggiornamenti automatici.

È qui che gli Aggiornamenti Automatici di Kinsta tornano utili. Questo potente add-on consente di impostare aggiornamenti automatici per plugin e temi di WordPress, eseguire un test di regressione visiva che confronta l’aspetto del tuo sito web prima e dopo ogni aggiornamento e, se necessario, ripristinare le modifiche. Non è più necessario preoccuparsi del successo di un aggiornamento, perché Kinsta lo esegue in sicurezza.

Cerchi un modo più intelligente per gestire gli aggiornamenti? Prova la nostra add-on premium.

Carlo Daniele Kinsta

Carlo è cultore appassionato di webdesign e front-end development. Gioca con WordPress da oltre 20 anni, anche in collaborazione con università ed enti educativi italiani ed europei. Su WordPress ha scritto centinaia di articoli e guide, pubblicati sia in siti web italiani e internazionali, che su riviste a stampa. Lo trovate su LinkedIn.