Modifier la fréquence à laquelle les plug-ins de mise à jour automatique de WordPress

17

D'après ma compréhension de la façon dont WordPress met à jour le noyau et les plugins, il s'éteint toutes les 12 heures et recherche des mises à jour. Quand ce temps est-il réglé? 12 heures après l'installation initiale? Je pose cette question car en utilisant le filtre de mise à jour automatique des plugins, add_filter( 'auto_update_plugin' );vous ne pouvez théoriquement autoriser les plugins à se mettre à jour qu'entre certaines heures, mais si cette certaine 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 qui est: Comment modifier la fréquence de recherche des mises à jour par WordPress ou comment spécifier un moment précis pour la mise à jour automatique?

Pour ceux qui sont intéressés, voici le filtre avec lequel j'ai joué, vérifie si SI c'est du lundi au 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' );

Modifier En tant que sidenote soigné, il semble que ce filtre soit exécuté chaque fois qu'un plug-in est mis à jour, plusieurs mises à jour de plug-in, plusieurs exécutions du filtre

Howdy_McGee
la source

Réponses:

10

Vous avez raison, Wordpress vérifie les mises à jour du noyau et des plugins toutes les 12 heures, mais une meilleure façon de le formuler serait: il vérifie les mises à jour si la dernière mise à jour remonte à plus de 12 heures.

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

Les dernières dates mises à jour sont stockées dans le wp_optionstableau et les options sont:

_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 se sont écoulées), vous ne manquerez pas la mise à jour.

LevanK
la source
Ok, donc en réunissant votre réponse et @Rarst, chaque fois qu'une condition est remplie (cela ressemble à chaque fois qu'une page ou une page est consultée) déclenche un test pour voir quand les mises à jour ont été vérifiées en dernier, si la vérification était> = 12 heures alors exécutez la mise à jour automatique. Donc, en utilisant le filtre, il n'y a pas vraiment de fenêtre d'opportunité.
Howdy_McGee
5

Les fonctions pertinentes wp_update_plugins()et wp_maybe_auto_update()sont accrochés aux événements wp-Cron du même nom, en cours d' exécution dans les délais prévus deux fois par jour.

Logiquement, le programme initial commencera à cocher à partir de la première exécution. En raison de l'implémentation de wp-cron (n'étant pas un véritable cron et déclenché par des visites sur site plutôt que par l'horloge du serveur), il "dérivera" également chaque fois que wp-cron se déclenchera après l'heure prévue.

Les vérifications de mise à jour des plugins sont également déclenchées plus souvent dans certaines zones d'administration, comme la liste des plugins (de sorte que vous êtes moins susceptible de consulter des informations périmées).

Sur ma tête, je ne vois pas de façon élégante de le mettre dans un couloir temporel spécifique. Changer les horaires est assez facile, tenir compte de la dérive n'est pas tout à fait.

S'il s'agit d'une exigence critique en matière de mésaventure, il serait préférable de la gérer avec un véritable cron de serveur et un outil externe pour la mise à jour réelle, comme la fonctionnalité de mise à jour wp-cli ou la gestion des plugins via Composer.

Rarst
la source
Il n'est pas essentiel à la mission, mais wp-cronne déclenche-t-il que certaines vues de page d'administration ou également des pages normales? Merci!
Howdy_McGee
1
@Howdy_McGee wp-cron est déclenché par à peu près n'importe quoi ( inittir au crochet)
Rarst