私は毎日16:20に私の関数を実行するために次のコードを書きます。
しかし、私はコードの問題だと思います。
働いていない
エポックタイムスタンプ: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');
}
WP Cronは、誰かがあなたのウェブサイトにアクセスしたときに実行されます。したがって、だれも訪問しないと、cronは実行されません。
今2つの解決策があります。
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クーロン
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
time() の代わりに strtotime() 関数を使用すると、時刻を指定できます。指定した時刻に今日の日付が使用されます。だからあなたの場合:
strtotime('16:20:00'); // 4:20 PM
wp_schedule_event
関数の使い方は次のようになります。
wp_schedule_event( strtotime('16:20:00'), 'daily', 'import_into_db' );
そう、1427488800は2015年3月27日に解決されるので、あなたのイベントはまだ開始するように設定されていません。
また、スケジュールされたWPイベントは、その時点で誰かがサイトにアクセスした場合にのみ発生することに注意してください。
このコードは私のために働いています、私はそれが元の質問により近いと信じています。あなたはそれを実行したい時のためにUNIX時間+タイムゾーンを取得したいです。 cronが実行されてWPから削除されると、指定した時刻に自動的に再作成されます。
次の例では、毎朝AEST(GMT + 10)@ 6AMで機能しています。だから私は毎日GMT 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');
}