Cum să dezactivezi verificarea automată a actualizărilor în WordPress
WordPress verifică automat actualizări pentru sine și pentru toate pluginurile și temele instalate. Acest proces adaugă o întârziere enervant de lungă la încărcarea (oricărei) pagini WordPress. Se întâmplă doar o dată pe zi și încărcările ulterioare de pagini nu o mai fac, dar este atât de lungă, încât mă face să mă gândesc de două ori dacă merită să deschid prima pagină (mai ales dacă trebuie să fac ceva rapid și nu să petrec toată ziua în WordPress).
De obicei actualizez foarte rar și aș prefera să aplic actualizările manual, așa că am creat un plugin pentru a elimina butonul Actualizări din bara de administrare. Am crezut că asta va rezolva problema, dar se pare că doar elimină butonul, iar verificarea se face în continuare în fundal.
Aproape orice alt program din lume îți permite să dezactivezi actualizările automate, așa că mă aștept să existe o modalitate de a face același lucru și în WordPress, dar dacă există, este puțin prea bine ascunsă.
Când am încercat să găsesc o soluție, toate întrebările care au apărut erau opusul, despre cum să forțezi aplicarea automată a actualizărilor (nu doar verificarea automată).
Cum pot fi oprite verificările automate de actualizări în WordPress?

Această soluție a funcționat pentru mine pentru a dezactiva verificările pe localhost - ceea ce era foarte enervant deoarece se află în spatele unui firewall și timpul de așteptare pentru timeout era foarte mare.
define( 'WP_HTTP_BLOCK_EXTERNAL', true ); // Blochează cererile HTTP externe
define( 'AUTOMATIC_UPDATER_DISABLED', true ); // Dezactivează actualizările automate
define( 'WP_AUTO_UPDATE_CORE', false ); // Dezactivează actualizările automate pentru nucleul WordPress
Reține că nu sunt sigur dacă dezactivarea WP_HTTP_BLOCK_EXTERNAL este necesară. Nu recomand să o dezactivezi pe un server care necesită comunicarea cu alte servere.

Cum să dezactivezi actualizările automate pentru nucleu dar să activezi actualizările automate pentru pluginuri și teme
Dacă dorești să oprești actualizările automate pentru nucleul WordPress, dar să le activezi pentru Pluginuri și/sau Teme, poți adăuga aceste linii în fișierul wp-config.php: Oprește actualizările automate pentru nucleu:
define( 'WP_AUTO_UPDATE_CORE', false );
Apoi Activează actualizările pentru pluginuri/teme:
add_filter( 'auto_update_plugin', '__return_true' );
add_filter( 'auto_update_theme', '__return_true' );
Cum să dezactivezi complet actualizările automate WordPress
Dacă dorești să dezactivezi complet actualizările automate WordPress, deschide fișierul wp-config.php și adaugă această linie:
define( 'AUTOMATIC_UPDATER_DISABLED', true );

Următorul cod va dezactiva verificarea automată a actualizărilor în panoul de administrare WordPress.
Puteți adăuga acest cod în fișierul functions.php
al temei dumneavoastră.
remove_action('admin_init', '_maybe_update_core');
remove_action('admin_init', '_maybe_update_plugins');
remove_action('admin_init', '_maybe_update_themes');

Bine, iată o soluție care elimină actualizările disponibile și, de asemenea, împiedică verificarea actualizărilor.
Această soluție presupune PHP > 5.3 (deoarece utilizează funcții anonime)
Partea 1) Curăță orice actualizări existente:
add_filter( 'site_transient_update_plugins',
function ( $oUpdatesResult ) {
if ( ! is_object( $oUpdatesResult ) ) {
$oUpdatesResult = new stdClass();
}
$oUpdatesResult->response = array();
return $oUpdatesResult;
},
PHP_INT_MAX
);
Partea 2) Împiedică cererea HTTP care efectuează verificarea actuală:
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
);
Puncte de notat:
- WordPress verifică actualizările doar când încarci anumite pagini din panoul de administrare, cum ar fi pagina de plugin-uri sau pagina de Actualizări, deci nu câștigi nicio performanță.
- Aceasta este doar pentru plugin-uri. Pentru a gestiona teme, repetă ce vezi aici, dar înlocuiește "plugin" cu "theme". Adică în numele filtrului și în URL.
- poți pune acest cod în fișierul functions.php al temei tale

Mark Jarquith a scris despre acest lucru pe blogul său acum ceva timp. În esență, acest cod oprește cererile către repository-urile publice SVN de pe wp.org prin intermediul filtrelor din API-ul HTTP al WordPress.
Pentru plugin-uri (trebuie plasat în interiorul plugin-ului):
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;
}
Pentru teme (trebuie plasat în functions.php
al temei și funcționează doar pentru tema activă curent):
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 a scris un plugin pentru a dezactiva actualizările pentru teme.

Cred că fragmentele de cod nu vor funcționa. Începând cu WordPress 3.7, API-ul lucrează cu un șir JSON. Funcția serialize
nu poate lucra cu JSON, folosește ca alternativă json_decode
și json_encode
. Urmărește acest gist pentru codul sursă complet - https://gist.github.com/bueltge/5a3545ada7e68d367424
