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 buon numero di plugin. Viene normalmente consigliato seguire questi passaggi:
- Effettuare un back-up dei file e delle tabelle del database
- Disabilitare i plugin
- Effettuare l’aggiornamento
- Abilitare i plugin uno alla volta
- Controllare il sito
Potrebbe essere un compito noioso per un singolo sito web, ma potrebbe diventare un lavoro 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!
Indice degli Aggiornamenti Automatici
- Aggiornamenti Automatici di WordPress
- Controllo degli Aggiornamenti in Background Tramite wp-config.php
- Controllo degli Aggiornamenti in Background Tramite i Filtri dell’API
- Esito, Notifiche e Email di Debug
- Quando e Perché Disattivare gli Aggiornamenti Automatici di WordPress
- Controllo degli Aggiornamenti Automatici di WordPress Tramite Plugin
- Aggiornamenti Automatici per Plugin e Temi Premium
Aggiornamenti automatici di WordPress
Esistono quattro tipi di aggiornamenti e di aggiornamenti automatici di WordPress:
- Aggiornamenti del Core
- Aggiornamenti dei Plugin
- Aggiornamenti dei Temi
- Aggiornamenti dei file delle traduzioni
Gli aggiornamenti del Core si dividono in tre sottotipi:
- Sviluppo Core (disponibile solo per le installazioni di sviluppo)
- Aggiornamenti secondari del Core (manutenzione e sicurezza) – abilitati di default nelle installazioni stabili
- 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. I 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:
$update
: un valore booleano che stabilisce se aggiornare o meno;$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.
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.
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, Kernl, o WP Updates, che offrono una repository sicura e aggiornamenti automatici come servizio, immediatamente disponibili.
Riepilogo
Gli aggiornamenti automatici di WordPress costituiscono una eccezionale funzionalità che potrebbe farvi risparmiare molto tempo e lavoro, permettendovi di tenere il vostro sito regolarmente aggiornato. Ma pensereste di abilitare tutti i tipi di aggiornamento automatico? Fatecelo sapere nei commenti qui sotto.
Articolo molto interessante e completo per approfondire la delicata questione.
Mi resta un dubbio.
Dove è definita e come posso fare a controllare la politica di aggiornamento di una installazione standard di wordpress ultima versione?
Anche se so che wordpress è sicuro e affidabile nella documentazione ufficiale non mi piace molto l’idea di dovermi fidare ciecamente e vorrei vedere la riga di codice dove viene definito l’aggiornamento solo per le release minori.
Ciao Mauro, se ho ben capito vuoi sapere dove sono definiti i filtri che stabiliscono cosa aggiornare e in quali condizioni. La risorsa che cerchi è il file wp-admin/includes/class-wp-automatic-updater.php, che puoi trovare nel trac di WordPress all’indirizzo https://core.trac.wordpress.org/browser/tags/4.9.8/src/wp-admin/includes/class-wp-automatic-updater.php