How to Disable wp-cron in WordPress and Set Up Proper Cron Jobs
Are you having problems with scheduled actions not working in WordPress?
WordPress has a scheduling system called wp-cron, but it sometimes misses a scheduled task like publishing scheduled posts, sending triggered emails, etc. Proper cron jobs run by your server’s operating system are often more reliable.
In this article, we’ll show you how to disable wp-cron in WordPress, and cover two ways you can set up proper cron jobs.
Why Disable wp-cron?
Your WordPress website has a built-in scheduling system called wp-cron. It performs time-sensitive tasks such as checking for updates, publishing scheduled posts, automatically creating regular backups, sending triggered emails, etc.
You can learn more in our guide on how to view and control WordPress cron jobs.
The problem is that WordPress is only prompted to check for scheduled jobs when someone visits your website. This works well enough for most sites, but sometimes it can cause problems for smaller ones.
For example, if your site has low traffic, then your scheduled posts may not be published on time. And if your website gets a lot of traffic, then wp-cron will be checked frequently, which may impact your website’s performance.
Now if you just want to fix the missing scheduled posts error, then you can use the free plugin Missed Scheduled Publisher, but if you want to solve all scheduled action issues, then you need a real cron job.
A real cron job is run by your web hosting server’s operating system, not by WordPress. You can set it up to check for scheduled tasks more reliably. By default, WordPress doesn’t have access to set this up on the server level, but you can easily do it by following our tutorial.
With that being said, let’s take a look at how to disable wp-cron and set up a proper cron job. Here’s what we’ll cover in this tutorial:
- Disabling wp-cron in WordPress
- Setting Up a Proper Cron Job on Your WordPress Host
- Setting Up a Proper Cron Job Using a Third Party Service
Disabling wp-cron in WordPress
To disable wp-cron, you need to edit wp-config.php, which is a core WordPress configuration file. It’s located in your WordPress site’s root folder, and you will need to use an FTP client or the file manager in your web hosting control panel.
This file contains a lot of sensitive information, and making the wrong changes can break your WordPress site. We recommended making a backup of the file first, just in case. You can learn how by following our guide on how to edit wp-config.php in WordPress.
You’ll need to paste the following code into the wp-config.php file just before the line that says ‘That’s all, stop editing! Happy blogging.’
define('DISABLE_WP_CRON', true);
After that, you need to save the file and upload it back to your website.
WordPress will no longer trigger wp-cron when someone visits your website.
Setting Up a Proper Cron Job on Your WordPress Host
Now you’ll need to set up a proper cron job to run your scheduled tasks. The way you do this will vary depending on the tools provided by your WordPress hosting provider.
The easiest way to set up cron jobs is using cPanel, a popular website control panel included with many web hosting plans, including Bluehost. We’ll use the Bluehost cPanel in this tutorial.
Note: Some web hosts don’t use cPanel and some may not even allow you to create cron jobs. If in doubt, you should contact your hosting provider or consult their support documentation. You can always use a third party cron service (below).
Once you log into your hosting account and navigate to cPanel, you should scroll down until you find ‘Cron Jobs’ and then click on it.
You may find it in the ‘Advanced’ section, but this can vary depending on your hosting provider.
This will take you to a new page where you can create new cron jobs.
Don’t worry about the warning you’ll see about needing a good knowledge of Linux commands. Only one command is necessary, and we’ll show you exactly what it is below.
If you need to, you can change the email address where cron job notifications will be sent. The default address is the one you used when you signed up for your web hosting, and this will work fine on most websites.
Now, let’s scroll down to the ‘Add New Cron Job’ section and set up a cron job.
First, you need to decide how often the cron job will be run. This can be anything you like, but we recommend 30 minutes interval.
You will need to click the ‘Common Settings’ button and select a time interval from the dropdown. ’Twice Per Hour’ is a good choice for most sites if you’re not sure.
Now you can enter the command that will ask WordPress to run its scheduled tasks. You need to paste the following code into the ‘Command’ field:
wget -q -O - https://example.com/wp-cron.php?doing_wp_cron >/dev/null 2>&1
Make sure you replace ‘example.com’ with your own website’s URL.
Once you’ve done that, make sure you click the ‘Add New Cron Job’ button, and you will see the new cron job added to the list below.
WordPress will now check for and run scheduled tasks every 30 minutes instead of when someone visits your website.
Setting Up a Proper Cron Job Using a Third Party Service
If your hosting plan doesn’t offer proper cron jobs, or they are difficult to set up, then you can use a third party cron service instead.
These are dedicated services that allow you to set up cron jobs using a simple interface. Here are a few of the better ones:
- EasyCron has a free plan that requires monthly renewal
- cron-job.org is a free service
- Cronitor is free if you just need one cron job
- SetCronJob offers paid plans starting at $10/year
For this tutorial, we’ll use EasyCron because it is easy to use, and the free plan is suitable for most beginner use cases.
Once you create a free account, you can create a new cron job by clicking the ‘+ Cron Job’ button on the left.
This will pop up the ‘Create Cron Job’ screen. First, you need to paste the following URL into the ‘URL to call’ field.
https://example.com/wp-cron.php?doing_wp_cron
Make sure you replace ‘example.com’ with your own site’s URL.
After that, you should choose ‘Every 30 minutes’ from the ‘When to execute’ drop down. When you’re finished, don’t forget to click the ‘Create Cron Job’ button to store your settings.
The new cron job will be added to the list, and run wp-cron on your website every 30 minutes.
We hope this tutorial helped you learn how to disable wp-cron in WordPress and set up proper cron jobs. You may also want to see our step by step guide to WordPress SEO, or check out our list of common WordPress errors and how to fix them.
If you liked this article, then please subscribe to our YouTube Channel for WordPress video tutorials. You can also find us on Twitter and Facebook.