【问题标题】:send email daily from wordpress site每天从 wordpress 网站发送电子邮件
【发布时间】:2014-05-22 09:10:15
【问题描述】:

我定制了一个日历插件,它在网站的主页上显示今天的生日和当前月份的结婚纪念日列表。我使用 wp_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 <noreply@mysite.com>' . "\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 时,我看到了类似的答案

Unfortunately the WordPress cron jobs are only triggered when your site is visited 如果是真的那么我怎么能每天发送电子邮件,即使不访问网页。还有其他方法吗?

【问题讨论】:

  • 标准 cron 作业是最好的选择,您可以访问您的服务器命令行吗?还是有 cron 作业部分的 gui?
  • 是的,我可以通过终端访问我的服务器..

标签: php wordpress email cron


【解决方案1】:

您可以在登录后通过以下流程使用您的终端设置常规 cron 作业;

使用以下方式访问您的骗局工作列表;

crontab -e

那里可能已经有几行了。键入 o 以启用文件编辑;

您可以使用以下网站为其生成命令以发出http://www.corntab.com/pages/crontab-gui

作为我的服务器上的示例作业;

*/5 * * * * /usr/bin/php -q /var/www/www.mysite.com/cron.php >/dev/null 2>&1

此作业每 5 分钟运行一次 php 脚本,并阻止站点管理员在每次运行时收到电子邮件。这就是2&gt;&amp;1 在行尾所做的。

我实际上有点不确定/usr/bin/php -q&gt;/dev/null 做了什么,因为我只是从另一个已经以这种方式设置的工作中复制它们。我通过命令行对此相当陌生。

完成编辑作业后,按 esc 然后按 Shift + zz 退出。你应该完成了。

我建议您使用通过电子邮件发送给您自己的测试脚本,以确保它首先正常工作,然后在您知道它有效后将其更改为使用您尝试运行的脚本。

我不知道这个过程对于不同的服务器设置是否会有所不同,但可能会有所不同。这正是我必须为运行 CentOS 和 apache 的服务器做的事情。

【讨论】:

  • 但是先生,我将如何使用 cron 执行上述功能。如果我的怀疑是一个愚蠢的问题,我很抱歉。我问这个是因为我是 wordpress 的新手,也没有创建 cron 的经验。请帮助我
  • 您可以将该脚本保存为您网站上的独立页面 - 在我的示例中,我在根目录中将其命名为 cron.php。您将需要添加更多代码来实际获取用户生日以及满足您的 if 语句。该页面需要独立工作才能正常工作。
  • 所以让我告诉我到目前为止我理解的内容,如果我错了,请纠正我。 “我应该将我在问题中发布的代码写入我的站点目录中的单独文件'exampl.php',然后我需要通过终端登录到我的服务器并运行您使用'@daily /path to 发布的命令example.php'。”
  • 是的,这听起来对我来说是正确的。正如我在回答中所说,添加 cron 作业的过程可能因服务器配置而异,因此我不能保证它也适用于您。
  • 我会用谷歌搜索这个过程。感谢 Novocain88 教我.. :) 找出问题后我会告诉你的。
猜你喜欢
  • 1970-01-01
  • 2010-12-17
  • 2014-07-24
  • 2014-10-14
  • 2012-01-12
  • 2011-12-22
  • 1970-01-01
  • 2018-11-13
  • 2013-08-22
相关资源
最近更新 更多