今天我试着写一个Wordpress Cronjob。出于测试目的,我编写了一个函数,每小时向我发送一封电子邮件,但它不起作用。我有一个名为“核心控制”的插件,它向我显示了所有现有的Cronjobs,我的也在这里列出。还有一个按钮“立即运行”。如果我按下它,我会收到测试邮件,因此函数本身是正确的。
下面是Cronjob的代码,它位于函数中。我的主题的php。
if( !wp_next_scheduled( \'check_cron\' ) ) {
wp_schedule_event( time(), \'hourly\', \'check_cron\' );
}
add_action( \'check_cron\', \'sendit\' );
function sendit() {
$address = "[email protected]";
$sender = "Cron_Test";
$sendermail = "[email protected]";
$subject = "It works!";
$text = "Yay, it is working!";
mail($address, $subject, $text, "From: $sender <$sendermail>");
}
动作钩肯定有问题,但我不知道怎么了。还是需要将代码放在其他文件中?
更多信息:我现在mail();
不能在localhost上工作,这就是为什么我在线创建了一个测试博客。文件夹通过受保护。htaccess和密码,这可能是个问题吗?
我还检查了我的wp配置。php允许Cronjobs。
现在,我还需要访问站点才能运行Cronjob。
最合适的回答,由SO网友:Stephen Harris 整理而成
不幸的是,WordPress cron作业仅在您的站点被访问时触发(请参阅Codex):
如果超过预定时间,当有人访问您的WordPress站点时,将触发该操作。
我相信这是为了回避这样一个事实,即共享主机上的许多人通常不允许设置cron作业(至少,在没有先联系主机的情况下是不允许的)。