register_activation_hook(__FILE__, 'cron_post_activation');
add_action('post_event', 'cron_post');
function cron_post_activation() {
wp_schedule_event(time(), 'hourly', 'post_event');
}
function cron_post() {
//Do stuff
}
这在默认情况下不起作用 - 找到了困难的方法!
经过几个小时的调试后,我偶然发现了几个帖子,声称你需要在wp-config.php上添加下一行:
define('DISABLE_WP_CRON', true);
1)背后的逻辑是什么?禁用某些内容以使其起作用对我没有意义。
2)如何使用自己的间隔进行设置?文档说明您只能使用'每小时'每日'每日'和'每日'。
答案 0 :(得分:1)
是的,您确实需要禁用WP_CRON,但是,您还需要在WordPress之外设置自己的cron作业来触发事件。默认情况下,WP的cron功能仅在有人查看网站时启动,即使这样,也不能保证它能够准确地按时运行。如果您需要在特定时间或间隔发生某些事情,它根本没用。
假设您在* nix服务器上,我发现的最佳解释是:
http://bitswapping.com/2010/10/using-cron-to-trigger-wp-cron-php/
它的主旨是关闭WordPress触发自己的调度程序的方式,然后直接按照您在服务器上使用cron程序设置的计划访问该系统。这样做是建立一个准系统WP环境,在该环境中执行任务而不发回任何HTML。如果您将作业设置为每分钟访问一次,这可以比直接ping您的站点主页获得更好的性能。
关于“关闭它以使其工作”的观点 - 是的,这似乎违反直觉。您实际关闭的是检查是否执行cron任务的系统。通过关闭它,你基本上正在构建一个直接管道到该系统并告诉它每次做任务,无论何时告诉它。你正在从系统中取出差异。