Wp_Schedule_Event todos los días a una hora específica

8

Escribo el siguiente código para ejecutar mi función todos los días a las 16:20 ..

Pero supongo que es el problema en el código ...

no funciona

Marca de tiempo de la é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');
}
    
pregunta Mortzea 27.02.2015 - 22:24

4 respuestas

14

WP Cron se ejecuta, cuando alguien visita su sitio web. Por lo tanto, si nadie visita, el cron nunca se ejecuta.

Ahora hay 2 soluciones:

  1. Deshabilite WP Cron, use un trabajo de cron real y personalícelo.

enlace

  1. Use un intervalo personalizado en 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...
    }
    

y puedes ver estos tuts

enlace

enlace

enlace

cron wp personalizado

enlace

enlace

enlace

enlace

enlace

enlace

cron linux

enlace

enlace

enlace

    
6

En lugar de time () , use strtotime () para que pueda especificar la hora del día; utilizará la fecha de hoy con la hora que especifique. Así que en tu caso:

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

El uso en la función wp_schedule_event se vería así:

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

Bueno, 1427488800 se resuelve hasta el 27 de marzo de 2015, por lo que su evento aún no está listo para comenzar.

Además, tenga en cuenta que los eventos programados de WP solo se activarán si alguien llega al sitio en ese momento.

    
respondido por el vancoder 27.02.2015 - 23:20
0

Este código está funcionando para mí, creo que está más cerca de la pregunta original. Desea obtener la hora + zona horaria de UNIX para cuando desea que se ejecute. Una vez que el cron se ejecuta y se elimina de WP, se recrea a sí mismo en el momento que especifique.

En el siguiente ejemplo, lo tengo trabajando para AEST (GMT + 10) a las 6AM cada mañana. Así que lo estoy programando para GMT 20:00 cada día.

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');
}
    
respondido por el Rob P 05.04.2018 - 09:00

Lea otras preguntas en las etiquetas