Hey guys, long time WordPress user here. I wanted to give a little info about this topic.
Basically I wanted to start scheduling posts and noticed all of them were tagged with the “missed schedule” tag in red. Basically my fix and explanation is this:
The WordPress scheduler (wp-cron.php) needs access to your blog (https://www.yourblog.com). If your hosting provider isn’t setup correctly it (your ISP) will not be able to access your site. This is due to incorrectly setup DNS, or issues with their firewall such as NAT or IP-Masquerading.
Sorry for the foreign language for you none geek types. Hmmm how to explain it better. Think of it like this. Your webserver is like your computer. When you access a website such as youblog.com it resolves that into an IP address (sorta like a phone book, names – phone numbers). This is how the hardware on the internet knows where your site is located.
The problem is, wp-cron.php also needs to access your website (or as other people say, itself), but it can’t because it cant get the IP address. Its like finding a phone number in the phone book but you don’t know the persons name.
Fix (For the geeks):
I added this cron job:
*/1 * * * * /usr/bin/curl “https://www.geekmoz.cm/wp-cron.php”
And I also added a local DNS entry to my web server (yes I own the server, its Linux…). Edit the /etc/hosts file. (need root access)
127.0.0.1 https://www.yoursite.com
Now your cron job will run every minute and wp-cron.php can access your site locally.
Hope that helps some.