今日の誕生日と今月の結婚記念日のリストをサイトのホームページに表示するカレンダープラグインをカスタマイズしました。そのプラグインの表示ページにwp_mail
を使ってコードを書き、mailで送信します。しかし、これはサイトが訪問されたときにだけ起こります。私のコード:
if($dat==date('Y-m-d'))/*$dat is the date of event from DB*/
{
if($eid!=''){ /*if recipient email id is not null*/
if($se!=1) /*if email is sending first time then($se=db column 'send'value) $se=0 otherwise it is 1*/
{
$to=$eid;
$sub="Birthday Wishes";
$msg='Happy Birthday '.$ev_title[$j];
$headers= 'From:Mysite <[email protected]>' . "\r\n".'Content-type: text/html';
$attachments=array(WP_CONTENT_DIR . '/plugins/spider-event-calendar/images/happybday.gif');
$rx=wp_mail($to,$sub,$msg,$headers,$attachments);
$wpdb->update($wpdb->prefix. "spidercalendar_event",array('send'=>1),array('id'=>$ev_id[$j]));/**/
//echo "email send";
}
else{
//echo "email already sent";
}
}
}
私はwp_cron
について聞きましたが、私がこのフォーラムでWordPressでcron
を書く方法について検索したとき、私は次のような答えを見ました。
残念ながら、WordPressのcronジョブはあなたのサイトが訪問されたときにのみ引き起こされます
それが本当なら、どうすればWebページにアクセスせずに毎日メールを送ることができますか?これのための他の方法はありますか?
残念ながら、WordPressのcronジョブはあなたのサイトが訪問されたときにのみ引き起こされます
これは本当です。
確実にコードを実行する唯一の方法は(訪問者があなたのサイトにアクセスしなくても)、unix cron関数を使うことです。
あなたはあなたのホームページでwgetをするunix cronジョブをセットアップすることができます。
編集:
あなたは この記事 を読んでunix cronジョブをセットアップする方法を理解することができます。
通常のwp_cronをセットアップして、いつでも実行したい時刻に実行するようにスケジュールするだけです。
その後、ホームページでwgetを実行するためのunix cronジョブを設定します。これによりページビューが起動され、次にページビューがwp_cronジョブを起動します。