Disattivare i controlli automatici degli aggiornamenti in WordPress
WordPress controlla automaticamente la disponibilità di aggiornamenti per se stesso, i temi e i plugin installati. Questo aggiunge un fastidioso ritardo al caricamento di qualsiasi pagina di WordPress. Succede solo una volta al giorno e i caricamenti successivi non lo fanno, ma è così lungo che mi fa pensare due volte se vale la pena aprire quella prima pagina (specialmente se devo fare solo una cosa veloce piuttosto che passare tutta la giornata in WordPress).
Comunque aggiorno solo occasionalmente, e preferirei eseguire gli aggiornamenti manualmente, quindi ho creato un plugin per rimuovere il pulsante Aggiornamenti dalla barra di amministrazione. Pensavo che avrebbe risolto il problema, ma a quanto pare rimuove solo il pulsante mentre il controllo effettivo viene ancora eseguito in background.
Ogni altro programma al mondo ti permette di disattivare gli aggiornamenti automatici, quindi mi aspetto che ci dovrebbe essere un modo per fare lo stesso con WordPress, ma se c'è, è un po' troppo ben nascosto.
Quando ho cercato una soluzione, tutte le domande che ho trovato erano l'opposto, riguardanti come forzare l'applicazione automatica degli aggiornamenti (non solo il controllo automatico della disponibilità).
Come si possono disattivare i controlli automatici degli aggiornamenti in WordPress?

Questo ha funzionato per me per disabilitarlo su localhost - cosa che era molto fastidiosa dato che è dietro un firewall e il tempo di attesa per il timeout era enorme.
define( 'WP_HTTP_BLOCK_EXTERNAL', true );
define( 'AUTOMATIC_UPDATER_DISABLED', true );
define( 'WP_AUTO_UPDATE_CORE', false );
Nota che non sono sicuro se disabilitare WP_HTTP_BLOCK_EXTERNAL sia necessario. Non consiglio di disabilitarlo su un server che richiede comunicazione con altri server.

Come disabilitare gli aggiornamenti automatici del core ma abilitarli per plugin e temi
Se vuoi fermare gli aggiornamenti automatici del core di WordPress, ma abilitarli per i tuoi Plugin e/o Temi, puoi aggiungere queste righe nel file wp-config.php: Ferma gli aggiornamenti automatici del core:
define( 'WP_AUTO_UPDATE_CORE', false );
Poi Abilita gli aggiornamenti per plugin/temi:
add_filter( 'auto_update_plugin', '__return_true' );
add_filter( 'auto_update_theme', '__return_true' );
Come disabilitare completamente gli aggiornamenti automatici di WordPress
Se vuoi disabilitare completamente gli aggiornamenti automatici di WordPress, apri il file wp-config.php e aggiungi questa riga:
define( 'AUTOMATIC_UPDATER_DISABLED', true );

Il seguente codice disabiliterà il controllo automatico degli aggiornamenti nella dashboard di WordPress.
Puoi aggiungerlo al file functions.php
del tuo tema.
remove_action('admin_init', '_maybe_update_core');
remove_action('admin_init', '_maybe_update_plugins');
remove_action('admin_init', '_maybe_update_themes');

Ecco una soluzione che rimuove gli aggiornamenti disponibili e previene anche il controllo degli aggiornamenti.
Questa soluzione presuppone PHP > 5.3 (poiché utilizza funzioni anonime)
Parte 1) Cancella eventuali aggiornamenti esistenti:
add_filter( 'site_transient_update_plugins',
function ( $oUpdatesResult ) {
if ( ! is_object( $oUpdatesResult ) {
$oUpdatesResult = new stdClass();
}
$oUpdatesResult->response = array();
return $oUpdatesResult;
},
PHP_INT_MAX
);
Parte 2) Previene la richiesta HTTP in uscita che esegue il controllo effettivo:
add_filter( 'pre_http_request',
function ( $bFalse, $aReqParams, $sUrl ) {
if ( strpos( $sUrl, '//api.wordpress.org/plugins/update-check/1.1/' ) ) {
$bFalse = null;
}
return $bFalse;
},
PHP_INT_MAX,
3
);
Punti da notare:
- WordPress controlla gli aggiornamenti solo quando carichi determinate pagine nell'area di amministrazione, come la pagina dei plugin e la pagina degli aggiornamenti, quindi non stai realmente guadagnando in prestazioni.
- Questo vale solo per i plugin. Per gestire i temi, ripeti quanto vedi qui sostituendo "plugin" con "theme". Ad esempio nel nome del filtro e nell'URL.
- Puoi inserire questo codice nel file functions.php del tuo tema

Mark Jarquith ha già pubblicato un post su questo argomento nel suo blog qualche tempo fa. In sostanza, interrompe le richieste ai repository pubblici SVN su wp.org tramite i filtri dell'API HTTP di WordPress.
Per i plugin (deve essere inserito all'interno del plugin):
add_filter( 'http_request_args', 'wpse_102554_deny_plugin_updates', 5, 2 );
function wpse_102554_deny_plugin_updates( $r, $url )
{
if ( 0 !== strpos( $url, 'http://api.wordpress.org/plugins/update-check' ) )
return $r;
$plugins = unserialize( $r['body']['plugins'] );
unset(
$plugins->plugins[ plugin_basename( __FILE__ ) ],
$plugins->active[ array_search( plugin_basename( __FILE__ ), $plugins->active ) ]
);
$r['body']['plugins'] = serialize( $plugins );
return $r;
}
Per i temi (deve essere inserito nel file functions.php
del tema e funziona solo per il tema attualmente attivo):
add_filter( 'http_request_args', 'wpse_102554_deny_theme_updates', 5, 2 );
function wpse_102554_deny_theme_updates( $r, $url )
{
if ( 0 !== strpos( $url, 'http://api.wordpress.org/themes/update-check' ) )
return $r;
$themes = unserialize( $r['body']['themes'] );
unset(
$themes[ get_option( 'template' ) ],
$themes[ get_option( 'stylesheet' ) ]
);
$r['body']['themes'] = serialize( $themes );
return $r;
}
John Blackburn ha scritto un plugin per disabilitare gli aggiornamenti dei temi.

Penso che gli snippet non funzioneranno. Da WordPress 3.7 l'API lavora con una stringa JSON. La funzione serialize
non può funzionare con JSON, usa come alternativa json_decode
e json_encode
. Segui questo gist per il codice sorgente completo - https://gist.github.com/bueltge/5a3545ada7e68d367424
