Modifique con qué frecuencia los complementos de actualizaciones automáticas de WordPress

17

Según tengo entendido, cómo WordPress actualiza el núcleo y los complementos es que cada 12 horas se apaga y busca actualizaciones. ¿Cuándo se establece ese tiempo? ¿12 horas desde la instalación inicial? Pregunto esto porque usando el filtro de actualización automática de complementos, en add_filter( 'auto_update_plugin' );teoría, solo podría permitir que los complementos se actualicen entre ciertas horas, pero si ese cierto tiempo no cae dentro de esa ventana de 12 horas, los complementos nunca se actualizarán.

Dejando así la pregunta en mi título, ¿cuál sería la forma de modificar la frecuencia con la que WordPress busca actualizaciones o cómo especificar un momento específico para la actualización automática?

Para aquellos interesados, aquí está el filtro con el que he estado jugando, verifica si es lunes a viernes de 8 a.m. a 5 p.m.

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

Editar Como una nota al margen ordenada, parece que este filtro se ejecuta cada vez que un complemento se actualiza, múltiples actualizaciones de complementos, múltiples ejecuciones del filtro

Howdy_McGee
fuente

Respuestas:

10

Tiene razón, Wordpress busca actualizaciones para el núcleo y los complementos cada 12 horas, pero una mejor forma de redactarlo sería: comprueba las actualizaciones si la última actualización fue hace más de 12 horas.

El ajuste de 12 horas está codificado wp-includes/update.php

Las últimas fechas actualizadas se almacenan en la wp_optionstabla y las opciones son:

_site_transient_update_core
_site_transient_update_plugins
_site_transient_update_themes

Debido a que esta verificación no ocurre exactamente después de 12 horas, sino que la próxima vez que se cumpla la condición (al menos 12 horas ha pasado), no se perderá la actualización.

LevanK
fuente
Bien, entonces, al poner su respuesta y @Rarst juntas, cada vez que se cumple una condición (suena como cada vez que se ve una página o cierta página) se activa una prueba para ver cuándo se realizaron las últimas actualizaciones, si la verificación fue> = 12 horas y luego Ejecute la actualización automática. Entonces, usando el filtro, no hay realmente una ventana de oportunidad.
Howdy_McGee
5

Las funciones relevantes wp_update_plugins()y wp_maybe_auto_update()están enganchadas a los eventos wp-cron del mismo nombre, que se ejecutan dos veces al día.

Lógicamente, la programación inicial comenzará a funcionar desde el momento de la primera ejecución. Debido a la implementación de wp-cron (que no es un cron real y se ve afectado por las visitas al sitio en lugar del reloj del servidor), también "se desplazará" cada vez que se active wp-cron real más allá del tiempo previsto.

Las comprobaciones de actualización de complementos también se activan con mayor frecuencia en ciertas áreas de administración, como la lista de complementos (por lo que es menos probable que vea información obsoleta).

Encima de mi cabeza, no veo una manera elegante de ponerlo en un corredor de tiempo específico. Cambiar los horarios es bastante fácil, la cuenta de la deriva no lo es del todo.

Si esto es de alguna manera un requisito crítico para la misión, entonces podría manejarse mejor con un servidor real cron y una herramienta externa para la actualización real, como la funcionalidad de actualización wp-cli o la administración de complementos a través de Composer.

Rarst
fuente
¿No es crítico para la misión, pero wp-cronsolo se activa ciertas vistas de la página de administración o también vistas de página normales? ¡Gracias!
Howdy_McGee
1
@Howdy_McGee wp-cron se activa por casi cualquier cosa ( initdisparo de gancho)
Rarst