对于 wordpress 网站,我必须实现一个提醒,该提醒将在 wordpress 中创建帖子后 30 天发送。
例如:
作者创建一个帖子,在创建此帖子 30 天后,作者将在他/她在管理员个人资料仪表板中填写的电子邮件地址收到一封邮件。
邮件需要包含原始帖子的网址。
是否有任何可用的插件可以帮助我或者我应该编写自定义函数?
提前致谢。
您将遇到的问题是 PHP 在用户发出请求时运行。因此,如果没有人在正确的日期或正确的时间访问该站点,您想要的代码可能无法运行。即使他们这样做,您是否想减慢随机用户对该功能的请求。
最好查看计划任务 (windows) 或 Cron 作业 (linux)。这些实用程序可用于在特定时间或以特定间隔(每小时、每天午夜等)运行 PHP 脚本。然后,您创建一个 PHP 脚本来执行查找特定帖子和发送电子邮件的工作。
如果您的托管服务提供商不允许访问计划实用程序。您可以设置您自己的计算机或另一台具有计划任务的计算机来调用执行此工作的特定 PHP 文件。
对于临时解决方案,我执行了以下操作:
我下载了插件“crony cronjob manager”
这个插件让你在特定的时间间隔运行自定义 php。
我的自定义 php 如下所示:
<?php
$query = "SELECT * FROM wp_posts
WHERE post_type = 'catalogus'
AND post_date BETWEEN '" . date('Y-m-d', strtotime('-30 days')) . "'
AND '" . date('Y-m-d', strtotime('-29 days')) . "'";
$allposts = $wpdb->get_results($query);
if($allposts){
foreach ($allposts as $post) {
// get post name for url
echo "http://xxxxxx.xxx/product/".$post->post_name;
// get author email to send mail to.
$to = get_the_author_meta('email',$post->post_author);
$subject = "XXXXXXXXXXX";
$headers = "From: XXXXX <noreply@XXXXXXX.nl>";
$message = "Dummy message";
wp_mail( $to, $subject, $message, $headers, $attachments );
}
}
else{
echo "No posts";
}
?>
这仍然不是完美的解决方案,因为就像上面提到的 Chris,这个 cronjob 只会在访问者发出请求时运行,我的下一步是编写一个真正的 cron 作业或计划任务来执行上面的代码。