Will wordpress run cron if I have scheduled emails to send? Seems like if no visit (request) is made to the site, scheduled tasks won’t run and therefore emails won’t be sent eg. hourly.
According to current situation, if there is no visit to the site for few hours ( and than visit is made) than all scheduled emails will be sent at the same time
How can I prevent this, is there a plugin to add cron task?
You cannot rely on wp-cron for consistent results so you have to look to the server level. Most enterprise-level WordPress installations need some sort of consistent automation. This is how I automate WordPress in this type of situation.
You will need to add a crontab to the server itself. If you’re running Linux, you can use
crontab -e
to get to the edit screen.Then add a simple curl command to hit your site on a regular basis:
This command will run once per hour. The bits at the end send the output to null and removes the email functionality every time the cron runs.
I use this on my sites to get around wp-cron’s fickle ‘scheduling’. If you’re not positive about creating a crontab schedule, check out this handy tool for generating a crontab command. http://www.robertplank.com/cron/
If you’re on a shared host, hopefully you have cPanel which if enabled, will give you a GUI to add a cron job. If for some reason you can’t add a crontab, I would consider finding a host that gives you shell access and allows you the flexibility you need.
I’ve never used a cron hosting service, but you could check it out if your host won’t let you add a crontab. http://www.easycron.com/ is an example of a cron host. (Again, I don’t know the reliability of these services)
Hope this helps you!
Overall
The schedule functions and cron filters are not considered to be a real API in WordPress. This has several reasons, but the most important is, that such stuff must run server side on a lower level than a content management system/framework like WordPress is.
Explanation
WordPress runs on PHP, which (simply said) communicates between the server and the browser (along with other programming languages like javascript). Therefore it is meant to run on ever request (by a user – who opens the page inside her/his browser). And without this sort of interaction, you can’t run anything.
That’s it. 🙂
Solution?
As WordPress (what this Q/A site is about) can’t deliver a solution that works without user interaction, I can’t give you any other advice, than to check what your host allows you and if you don’t get around, ask them for help.