2011-12-09 16 views
2

それはちょうど動作しないと私は何が間違っているのか分かりません。たぶん誰かが私を助けることができます。その後ワードプレスの疑似cron

add_action('kawabunga',function(){ 
    echo '<h1>KAWABUNGA!!!!1</h1>'; 
}); 


if (!wp_next_scheduled('kawabunga')) { 
    wp_schedule_single_event(time()+120, 'kawabunga'); 
} 

私は仕事で何が起こっているのかを見て、このコードを使用: ここに私のコードです

echo 'scheduled = ' . wp_next_scheduled('kawabunga'); 
echo '<br>time = ' . time(); 

そして、私が期待どおりに行動した:最初の両方のタイムスタンプを表示し、2分だけでもう1つは、アクションが実行され、もうスケジュールされていないため、タイムスタンプではなく「偽」を返したためです。 しかし、私の関数は実際には実行されませんでしたが、<h1>KAWABUNGA!!!!1</h1>が表示されず、IDEがブレークポイントで停止しませんでした。

私はサイトの他の部分でもアクションをテストしました:do_action('kawabunga');とうまくいきました。 cronでしか動作しません。

アイデア?

+0

があなたの代わりに無名関数の実装の「本当の」コールバック関数を使用してみましたが?多分この事件で何らかの形で失われるかもしれない。 – Aurimas

答えて

1

Aurimasが正しい場合、後でリクエストで呼び出すことができる関数を定義する必要があります。したがって、ここでは無名関数を使用することはできません。

私は、cron処理がページ出力後にトリガーされると思うので、ユーザーの経験を遅らせることはありません。 anを出力しても効果はありません。 mail()やwp_mail()の呼び出しでテストする方がよいでしょう(あるいはメールがあなたのシステムで動かない場合はファイルに書き込む)。

これらの2つの修正では、コードは良好に見えます。

0

は、これらの行の後に呼び出すwp_cron()をお試しください:

add_action('kawabunga', function(){ 
    echo '<h1>KAWABUNGA!!!!1</h1>'; 
}); 

if (!wp_next_scheduled('kawabunga')) { 
    wp_schedule_single_event(time()+120, 'kawabunga'); 
} 

wp_cron();