很多朋友肯定都有这个疑问:
明明设置好了的定时发布文章,结果等第二天登录网站后台一看,文章还是在草稿箱里。
这里就涉及到WordPress的计划任务运行逻辑。
WordPress 的 WP-Cron 是一个模拟的定时任务系统,它的运行逻辑和传统的服务器级别 cron 不同。以下是 WP-Cron 的核心运行逻辑和关键点:
WP-Cron 的运行逻辑
触发机制:
WP-Cron 并不是由操作系统定时触发,而是在有用户访问网站时触发。
每次有人访问 WordPress 网站时,wp-cron.php 会被检查是否需要执行任务。
具体流程:
用户访问 WordPress 页面时,wp-includes/load.php 会检测是否需要加载 WP-Cron。
如果满足触发条件,WordPress 会通过 HTTP 请求(loopback 请求)异步执行 wp-cron.php,不会影响页面加载速度。
WP-Cron 的常见问题
依赖用户访问:
如果网站访问量低,可能不会及时触发任务。
在高流量网站中,WP-Cron 可能被频繁触发,增加服务器负担。
任务延迟:
如果没有用户访问,任务会延迟到下一次用户访问时执行。
TL;DR
看到这里,你大概就明白为什么WordPress老是放鸽子了。
因为网站访问量过低,没人访问就没法激活计划任务,所以定时发布也就被鸽了。
推荐的解决方案:
放弃WordPress自带的计划任务功能,改用服务器级别的计划任务,更靠谱。
停用WordPress自带的wp-cron功能,可以修改wp-config.php文件,推荐使用缓存插件内置的功能,比如我用的FlyingPress,就可以禁用这个功能。
然后在服务器端开启计划任务,这里以cloudways和hostinger为例
cloudways:
比如我要让这个计划任务每5分钟执行一次,那就选择every 5 minutes,然后command这里,填写wp-cron.php,然后点击submit即可。
如果是hostinger主机,操作类似,但是输入的命令要稍微麻烦一点,需要把整个路径都带上,其他的和cloudways差不多。选完了保存即可。
以上,希望对您有所帮助。
如果这篇文章对你有用,也欢迎转发给有需要的朋友。