web-dev-qa-db-fra.com

Modifiez la fréquence à laquelle WordPress Auto-Updates Plugins

D'après ma compréhension de la manière dont WordPress met à jour le noyau et les plugins, toutes les 12 heures, il se met à la recherche de mises à jour. Quand est-ce que l'heure est fixée? 12 heures après l'installation initiale? Je pose la question suivante: en utilisant le filtre de mise à jour automatique du plugin add_filter( 'auto_update_plugin' ); , vous ne pouvez théoriquement autoriser que les plugins à se mettre à jour entre certains moments, mais si cette heure ne tombe pas dans cette fenêtre de 12 heures, les plugins ne seront jamais mis à jour.

Laissant ainsi la question dans mon titre, à savoir: comment modifier la fréquence à laquelle WordPress recherche des mises à jour ou comment spécifier une heure spécifique pour la mise à jour automatique?

Pour ceux qui sont intéressés, voici le filtre avec lequel je joue, vérifie si c'est lundi - vendredi de 8h à 17h:

function maybe_update_plugins(){
    date_default_timezone_set('Your Timezone Here');
    $localAssoc = localtime(time(), true);
    $update = false;

    /***
    /* tm_wday[0] = Sunday
    /* tm_wday[6] = Saturday
    ***/
    if(
      $localAssoc['tm_wday'] > 0 && $localAssoc['tm_wday'] < 6 &&
      $localAssoc['tm_hour'] > 7 && $localAssoc['tm_hour'] < 17
    ){
        $update = true;
    }

    return $update;
}
add_filter( 'auto_update_plugin', 'maybe_update_plugins' );

Edit En tant que note soignée, il semblerait que ce filtre soit exécuté chaque fois qu'un plugin est mis à jour, plusieurs mises à jour de plug-in, plusieurs exécutions du filtre

15
Howdy_McGee

Vous avez raison, Wordpress recherche les mises à jour du noyau et des plugins toutes les 12 heures, mais un meilleur moyen de le faire serait: il vérifie les mises à jour si la dernière mise à jour date de plus de 12 heures.

Le réglage de 12 heures est codé en dur dans wp-includes/update.php

Les dernières dates mises à jour sont stockées dans la table wp_options et les options sont les suivantes:

_site_transient_update_core
_site_transient_update_plugins
_site_transient_update_themes

Parce que cette vérification ne se produit pas précisément après 12 heures, mais plutôt la prochaine fois que la condition est remplie (au moins 12 heures sont passées), vous ne manquerez pas la mise à jour.

9
LevanK

Les fonctions correspondantes wp_update_plugins() et wp_maybe_auto_update() sont rattachées aux événements wp-cron du même nom, s'exécutant deux fois par jour.

Logiquement, le programme initial commencera à cocher à partir du moment de la première exécution. En raison de l’implémentation de wp-cron (qui n’est ni réel, ni lié à des visites de sites mais plutôt à une horloge de serveur), il "dérive" chaque fois que wp-cron se déclenche au-delà de l’heure prévue.

Les vérifications de mise à jour de plug-in sont également déclenchées plus souvent dans certaines zones administratives, telles que la liste des plug-ins (afin que vous ayez moins de chances de consulter des informations obsolètes).

Au-dessus de ma tête, je ne vois pas de façon élégante de le placer dans un corridor temporel spécifique. Changer les horaires est assez facile, la dérive n'est pas tout à fait.

Si cela correspond à une exigence critique, alors il pourrait être préférable de le gérer avec un serveur réel et un outil externe pour la mise à jour, tels que la fonctionnalité de mise à jour de wp-cli ou la gestion des plugins via Composer.

5
Rarst