WordPressでバックグラウンド処理

WordPressで重たい処理をさせようとすると、表示に時間がかかってよろしくありません。

そこで、バックグラウンドで処理させたいときは、wp_schedule_single_eventを使います。

https://wpdocs.osdn.jp/関数リファレンス/wp_schedule_single_event

まず、バックグラウンドで処理したいことを登録。

//バックグラウンドで処理させたいこと
    function do_background() {
      //ここにやりたいことを入れる
      file_put_contents('do_this_in_an_hour.txt' , time());
    }
    add_action('my_background_event' , 'do_background'));

これでバックグラウンド処理始動。

wp_schedule_single_event(time(), 'my_background_event');
     spawn_cron( time() );

なので、

    //コンテンツを表示するとき
    function my_the_content($the_content) {
      wp_schedule_single_event(time(), 'my_background_event');
      spawn_cron( time() );//すぐやる
      return $the_content;
    }
    add_filter('the_content' , 'my_the_content');

    //バックグラウンドで処理させたいこと
    function do_background() {
      file_put_contents('do_this_in_an_hour.txt' , time());
    }
    add_action('my_background_event' , 'do_background'));

とすることで、コンテンツを表示する度にバックグラウンドでやりたいことを動作させられる。
(ただし、spawn_cron( time() ); としても、60秒に一回しか処理しない)

nakaike