web-dev-qa-db-fra.com

Prévenir/désactiver la vérification de la mise à jour automatique

WordPress recherche automatiquement des mises à jour pour lui-même et pour tous les thèmes et plug-ins installés. Cela ajoute un délai extrêmement long au chargement des pages WordPress ( any ). Cela ne se produit qu'une fois par jour et les chargements de page suivants ne le font pas, mais c'est tellement long que ça me fait réfléchir à deux fois s'il vaut la peine d'ouvrir cette première page (surtout si je n'ai qu'à faire un rapide. plutôt que de passer toute la journée dans WordPress).

Je ne mets à jour que de temps en temps de toute façon, et préférerais de toute façon effectuer les mises à jour manuellement de toute façon, alors j’ai créé un plugin pour supprimer le bouton Updates de la barre d’administrateur. Je pensais que cela ferait l'affaire, mais apparemment, il ne supprime que le bouton et la vérification proprement dite est toujours effectuée en arrière-plan.

Tous les autres programmes du monde vous permettent de désactiver les mises à jour automatiques. Je suppose donc qu'il devrait exister un moyen de faire de même pour WordPress, mais s'il existe, il est un peu trop bien - caché.

Lorsque j'ai essayé de trouver une solution, toutes les questions qui se posaient étaient opposées, à savoir comment trouver un moyen de forcer l'application des mises à jour automatiques (pas seulement la recherche automatique de mises à jour).

Comment désactiver les vérifications automatiques des mises à jour dans WordPress?

5
Synetech

Comment désactiver les mises à jour automatiques principales mais activer les mises à jour automatiques des plugins et des thèmes

Si vous souhaitez arrêter les mises à jour automatiques du noyau WordPress, mais pour les activer pour vos plugins et/ou vos thèmes, vous pouvez ajouter ces lignes dans le fichier wp-config.php: Arrêtez les mises à jour automatiques principales:

define( 'WP_AUTO_UPDATE_CORE', false );

Puis activez les plugins/thèmes:

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

Comment désactiver complètement les mises à jour automatiques de WordPress

Si vous souhaitez désactiver complètement les mises à jour automatiques de WordPress, ouvrez le fichier wp-config.php et ajoutez-y cette ligne:

define( 'AUTOMATIC_UPDATER_DISABLED', true );
3
ravi patel

Cela a fonctionné pour moi de le désactiver sur localhost - ce qui était très gênant car il se trouve derrière un pare-feu et que le délai d'attente était énorme.

define( 'WP_HTTP_BLOCK_EXTERNAL', true );
define( 'AUTOMATIC_UPDATER_DISABLED', true );
define( 'WP_AUTO_UPDATE_CORE', false );

Notez que je ne suis pas sûr si la désactivation de WP_HTTP_BLOCK_EXTERNAL est nécessaire. Je ne vous recommande pas de le désactiver sur un serveur nécessitant une communication avec d'autres serveurs.

1
Maciej Krawczyk

OK, voici une solution qui supprime les mises à jour disponibles et empêche également la vérification des mises à jour.

Cette solution suppose que PHP> 5.3 (puisqu'il utilise des fonctions anonymes)

Partie 1) Efface toutes les mises à jour existantes:

add_filter( 'site_transient_update_plugins',
    function ( $oUpdatesResult ) {
        if ( ! is_object( $oUpdatesResult ) ) {
            $oUpdatesResult = new stdClass();
        }
        $oUpdatesResult->response = array();
        return $oUpdatesResult;
    },
    PHP_INT_MAX
);

Partie 2) Empêche la requête HTTP sortante qui exécute la vérification proprement dite:

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
);

Points à noter:

  • WordPress ne vérifie les mises à jour que lorsque vous chargez certaines pages côté administrateur, telles que la page des plugins et la page de mise à jour, de sorte que vous n'obtenez aucune performance.
  • Ceci est seulement pour les plugins. Pour gérer les thèmes, répétez ce que vous voyez ici, sauf où vous voyez "plug-in" à remplacer par "thème". C'est à dire. dans le nom du filtre et l'URL.
  • vous pouvez le mettre dans la function.php de votre thème
0
Paul G.

Mark Jarquith a déjà publié un article à ce sujet sur son blog il y a quelque temps. Fondamentalement, il ne fait que transférer les demandes au dépôt SVN public sur wp dot org via les filtres WP HTTP API.

Pour les plugins (doivent être placés dans le 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;
}

Pour les thèmes (doit être placé dans functions.php du thème et ne fonctionne que pour le thème actuellement actif):

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 écrit un plugin pour désactiver les mises à jour de thèmes .

0
kaiser