Alterar com que frequência os plug-ins de atualização automática do WordPress


17

Pelo meu entendimento de como o WordPress atualiza o núcleo e os plugins, é que a cada 12 horas ele sai e procura por atualizações. Quando esse horário é definido? 12 horas da instalação inicial? Eu pergunto isso porque, usando o filtro de atualização automática do plug-in, add_filter( 'auto_update_plugin' );teoricamente você só pode permitir que os plug-ins sejam atualizados entre determinados horários, mas se esse tempo não cair nessa janela de 12 horas, os plug-ins nunca serão atualizados.

Assim, deixando a pergunta no meu título, que é: Como alterar a frequência com que o WordPress procura atualizações ou como especificar um horário específico para a atualização automática?

Para os interessados, aqui está o filtro com o qual estou mexendo, verificando se é de segunda a sexta-feira, das 8h às 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' );

Editar Como uma nota lateral pura, parece que esse filtro é executado sempre que um plugin é atualizado, várias atualizações de plug-in, várias execuções do filtro

Respostas:


10

Você está correto, o Wordpress verifica se há atualizações para o núcleo e plug-ins a cada 12 horas, mas a melhor maneira de dizer isso seria: verifica as atualizações se a última atualização foi há mais de 12 horas.

A configuração de 12 horas é codificada wp-includes/update.php

As últimas datas atualizadas são armazenadas na wp_optionstabela e as opções são:

_site_transient_update_core
_site_transient_update_plugins
_site_transient_update_themes

Como essa verificação não ocorre precisamente após 12 horas, mas da próxima vez que a condição for atendida (pelo menos 12 horas se passaram), você não perderá a atualização.


Ok, então, reunindo sua resposta e o @Rarst, sempre que uma condição for atendida (soa toda vez que uma página ou determinada página é exibida) aciona um teste para verificar quando as atualizações foram verificadas pela última vez, se a verificação foi> = 12 horas depois execute a atualização automática. Portanto, usando o filtro, não há realmente uma janela de oportunidade.
Howdy_McGee

5

As funções relevantes wp_update_plugins()e wp_maybe_auto_update()são conectadas aos eventos wp-cron de mesmo nome, executando duas vezes por dia.

Logicamente, a programação inicial começará a ser contada a partir do momento da primeira execução. Devido à implementação do wp-cron (não sendo o cron real e prejudicado pelas visitas ao site, e não ao relógio do servidor), ele também será "desviado" sempre que o wp-cron real disparar após o horário previsto.

As verificações de atualização de plug-in também são acionadas com mais frequência em determinadas áreas administrativas, como a lista de plug-ins (para que você tenha menos probabilidade de procurar informações obsoletas).

No topo da minha cabeça, não vejo uma maneira elegante de colocá-lo em um corredor de tempo específico. Mudar os horários é bem fácil, mas a conta da deriva não é bem assim.

Se isso for de alguma forma um requisito crítico, é melhor lidar com o cron real do servidor e a ferramenta externa para atualização real, como a funcionalidade de atualização do wp-cli ou o gerenciamento de plug-ins pelo Composer.


Não é essencial, mas wp-cronapenas algumas visualizações de página de administrador são acionadas ou também exibições de página normais? Obrigado!
Howdy_McGee

1
@Howdy_McGee wp-cron é desencadeada por muito (nada muito initdisparo gancho)
Rarst
Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.