web-dev-qa-db-ja.com

WordPressサイトから毎日Eメールを送信する

今日の誕生日と今月の結婚記念日のリストをサイトのホームページに表示するカレンダープラグインをカスタマイズしました。そのプラグインの表示ページに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ページにアクセスせずに毎日メールを送ることができますか?これのための他の方法はありますか?

2
Zammuuz

残念ながら、WordPressのcronジョブはあなたのサイトが訪問されたときにのみ引き起こされます

これは本当です。

確実にコードを実行する唯一の方法は(訪問者があなたのサイトにアクセスしなくても)、unix cron関数を使うことです。

あなたはあなたのホームページでwgetをするunix cronジョブをセットアップすることができます。

編集

あなたは この記事 を読んでunix cronジョブをセットアップする方法を理解することができます。

通常のwp_cronをセットアップして、いつでも実行したい時刻に実行するようにスケジュールするだけです。

その後、ホームページでwgetを実行するためのunix cronジョブを設定します。これによりページビューが起動され、次にページビューがwp_cronジョブを起動します。

1
Sudar