I write Following code to run my function every day at 16:20 ..
But I guess is the problem in code..
not working
Epoch timestamp: 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');
}
Answers:
Thank you for visiting the Q&A section on Magenaut. Please note that all the answers may not help you solve the issue immediately. So please treat them as advisements. If you found the post helpful (or not), leave a comment & I’ll get back to you as soon as possible.
Method 1
WP Cron runs, when somebody visits your website.
Thus if nobody visits, the cron never runs.
Now there are 2 solutions:
- Disable WP Cron, use a real cron job and customize it.
-
Use a custom interval in
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... }
and you can see these tuts
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/
custom 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
cron 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
Method 2
Instead of time(), use strtotime() function so you can specify the time of day – it will use today’s date with the time that you specify. So in your case:
strtotime('16:20:00'); // 4:20 PM
Usage in the wp_schedule_event function would look like this:
wp_schedule_event( strtotime('16:20:00'), 'daily', 'import_into_db' );
Method 3
Well, 1427488800 resolves to March 27, 2015, so your event isn’t even set to start yet.
Also, bear in mind that scheduled WP events will only fire if someone hits the site at that time.
Method 4
This code is working for me, I believe it is closer to the original question. You want to get the UNIX time + timezone for when you want it to execute. Once the cron executes and is removed from WP, it recreates itself at the time you specify.
In the following example, I have it working for AEST (GMT+10) @ 6AM each morning. So I am scheduling it for GMT 20:00 each day.
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');
}
All methods was sourced from stackoverflow.com or stackexchange.com, is licensed under cc by-sa 2.5, cc by-sa 3.0 and cc by-sa 4.0