Wp Запланируйте мероприятие каждый день в определенное время
Я пишу следующий код для запуска своей функции каждый день в 16:20..
Но я думаю, что проблема в коде..
Не работает
Временная метка эпохи: 1427488800
3/28/2015 1:10:00 АМ
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');
}
4 answers
WP Cron запускается, когда кто-то посещает ваш веб-сайт. Таким образом, если никто не посещает, cron никогда не запускается.
Теперь есть 2 решения:
- Отключите WP Cron, используйте реальное задание cron и настройте его.
-
Используйте пользовательский интервал в
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... }
И вы можете увидеть эти туц
Http://www.nextscripts.com/tutorials/wp-cron-scheduling-tasks-in-wordpress/
Http://www.iceablethemes.com/optimize-wordpress-replace-wp_cron-real-cron-job/
Http://www.smashingmagazine.com/2013/10/16/schedule-events-using-wordpress-cron/
Пользовательский Wp cron
Http://codex.wordpress.org/Plugin_API/Filter_Reference/cron_schedules
Http://www.smashingmagazine.com/2013/10/16/schedule-events-using-wordpress-cron/
Http://www.viper007bond.com/2011/12/14/how-to-create-custom-wordpress-cron-intervals/
Http://www.sitepoint.com/mastering-wordpress-cron/
Https://tommcfarlin.com/wordpress-cron-jobs/
Http://www.paulund.co.uk/create-cron-jobs-in-wordpress
Хрон linux
Http://www.cyberciti.biz/faq/how-do-i-add-jobs-to-cron-under-linux-or-unix-oses/
Http://www.thesitewizard.com/general/set-cron-job.shtml
Http://code.tutsplus.com/tutorials/scheduling-tasks-with-cron-jobs--net-8800
Вместо time() используйте функцию strtotime(), чтобы вы могли указать время суток - она будет использовать сегодняшнюю дату с указанным вами временем. Так что в вашем случае:
strtotime('16:20:00'); // 4:20 PM
Использование в функции wp_schedule_event
будет выглядеть следующим образом:
wp_schedule_event( strtotime('16:20:00'), 'daily', 'import_into_db' );
Что ж, 1427488800 переносится на 27 марта 2015 года, так что ваше мероприятие еще даже не началось.
Кроме того, имейте в виду, что запланированные мероприятия WP будут запускаться только в том случае, если кто-то зайдет на сайт в это время.
Этот код работает для меня, я считаю, что он ближе к первоначальному вопросу. Вы хотите получить время UNIX + часовой пояс для того, когда вы хотите, чтобы он выполнялся. Как только cron выполняется и удаляется из WP, он воссоздается в указанное вами время.
В следующем примере он работает для AEST (GMT+10) в 6 утра каждое утро. Поэтому я планирую его на 20:00 по Гринвичу каждый день.
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');
}