我开发了一个WordPress网站,它禁用了标准的wp_cron并实现了一个真正的cron作业。 cron的设置如下:
“c:\Program files\php\php.exe” E:\SiteRootFolder\wpcron.php
这似乎完美无缺。但是,当cron在函数文件中触发并运行代码时,home_url
,wp_get_attachment_image_src
,get_permalink
,get_stylesheet_directory_uri
等WordPress函数不起作用(返回空)或返回奇数值(get_stylesheet_directory_uri
返回http:///wp-content/themes/theme-folder-name
而不是正确包含网址)。但是,其他功能(例如$wpdb->get_results($querystr)
和wp_get_post_terms
)似乎工作正常。
当我从WordPress管理员中运行这些功能时(我添加了一个按钮来激活这些功能,以便管理员可以按需启动作业),一切都很完美。但是当它从真正的cron作业运行时,所有这些重要的功能都会破裂。
这是什么原因?是否存在对真正的cron运行时丢失的文件的引用?
答案 0 :(得分:1)
您必须从Web服务器上下文中调用wp-cron.php
,而不是直接使用PHP可执行文件。以下是针对CentOS编写的disabling the default WP-Cron的一些详细信息页面,但您可以使用curl
for Windows获得相同的结果。
简而言之,假设您的域名为example.com
并且希望每5分钟运行一次WP-Cron,那么您的cron作业应该类似于以下内容。这将调用wp-cron.php
,其中定义了为许多WordPress函数提供预期值所需的所有正确$_SERVER
变量。
*/5 * * * * curl.exe --silent http://example.com/wp-cron.php?doing_wp_cron