Wp_Schedule_Event todos os dias em horário específico

8

Eu escrevo o código a seguir para executar minha função todos os dias às 16h20.

Mas eu acho que é o problema no código ..

não funciona

Carimbo de data / hora da época: 1427488800

3/28/2015 1:10:00 AM

if( !wp_next_scheduled( 'import_into_db' ) ) {
wp_schedule_event( time('1427488800'), 'daily', 'import_into_db' );

function import_into_db(){

////My code

}
add_action('wp', 'import_into_db');
}
    
por Mortzea 27.02.2015 / 22:24

4 respostas

14

O WP Cron é executado quando alguém visita seu site. Assim, se ninguém visitar, o cron nunca será executado.

Agora existem duas soluções:

  1. Desative o WP Cron, use um cron job real e personalize-o.

enlace

  1. Use um intervalo personalizado em wp_schedule_event() :

    function myprefix_custom_cron_schedule( $schedules ) {
        $schedules['every_six_hours'] = array(
            'interval' => 21600, // Every 6 hours
            'display'  => __( 'Every 6 hours' ),
        );
        return $schedules;
    }
    add_filter( 'cron_schedules', 'myprefix_custom_cron_schedule' );
    
    //Schedule an action if it's not already scheduled
    if ( ! wp_next_scheduled( 'myprefix_cron_hook' ) ) {
        wp_schedule_event( time(), 'every_six_hours', 'myprefix_cron_hook' );
    }
    
    ///Hook into that action that'll fire every six hours
     add_action( 'myprefix_cron_hook', 'myprefix_cron_function' );
    
    //create your function, that runs on cron
    function myprefix_cron_function() {
        //your function...
    }
    

e você pode ver esses tuts

enlace

enlace

enlace

custom wp cron

enlace

enlace

enlace

enlace

enlace

enlace

cron linux

enlace

enlace

enlace

pesquisa no google

    
por amir rasabeh 28.02.2015 / 21:24
6

Em vez de time () , use função strtotime () para que você possa especificar a hora do dia - ela usará a data de hoje com a hora que você especificar. Então, no seu caso:

strtotime('16:20:00'); // 4:20 PM

O uso na função wp_schedule_event ficaria assim:

wp_schedule_event( strtotime('16:20:00'), 'daily', 'import_into_db' );
    
por Goran Jakovljevic 31.08.2015 / 11:31
2

Bem, 1427488800 é resolvido para 27 de março de 2015, então o seu evento ainda não está definido para começar.

Além disso, lembre-se de que os eventos agendados do WP só serão acionados se alguém acessar o site nesse momento.

    
por vancoder 27.02.2015 / 23:20
0

Esse código está funcionando para mim, acredito que esteja mais próximo da pergunta original. Você deseja obter o tempo + fuso horário do UNIX para quando deseja executá-lo. Depois que o cron é executado e removido do WP, ele se recria no momento especificado.

No exemplo a seguir, estou trabalhando para o AEST (GMT + 10) @ 6AM todas as manhãs. Então eu estou agendando para GMT 20:00 a cada dia.

if (!wp_next_scheduled('cron_name')) {
    $time = strtotime('today'); //returns today midnight
    $time = $time + 72000; //add an offset for the time of day you want, keeping in mind this is in GMT.
    wp_schedule_event($time, 'daily', 'cron_name');
}
    
por Rob P 05.04.2018 / 09:00

Tags