Trusted WordPress tutorials, when you need them most.
Beginner’s Guide to WordPress
WPB Cup
25 Million+
Websites using our plugins
16+
Years of WordPress experience
3000+
WordPress tutorials
by experts

How to Disable wp-cron in WordPress and Set Up Proper Cron Jobs

Editorial Note: We earn a commission from partner links on WPBeginner. Commissions do not affect our editors' opinions or evaluations. Learn more about Editorial Process.

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, and so on. Proper cron jobs run by your server’s operating system are often more reliable.

In this article, we will show you how to easily disable wp-cron in WordPress and cover two ways you can set up proper cron jobs.

How to Disable wp-cron in WordPress and 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, and more.

You can learn more in our guide on how to view and control WordPress cron jobs.

Viewing Scheduled Tasks in WordPress

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. 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.

That being said, let’s take a look at how to easily disable wp-cron and set up a proper cron job. Here’s what we will cover in this tutorial:

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);

This is what it should look like.

Pasting Code into wp-config

After that, save the file and upload it back to your website.

WordPress will no longer trigger wp-cron when someone visits your website.

Method 1: 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 will 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 (check method 2).

Once you log into your hosting account and navigate to cPanel, switch to the ‘Advanced’ tab from the top.

Here, scroll down to the ‘Cron Jobs’ section and click the ‘Manage’ button next to it. Keep in mind that the position of this section can vary depending on your hosting provider.

Click the Manage button in the Cron Jobs section

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 will 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.

You can change the cron email and click Update

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-minute intervals.

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.

Creating a New Cron Job in cPanel

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, click the ‘Add New Cron Job’ button, and you will see the new cron job added to the list below.

Viewing the List of Cron Jobs in cPanel

WordPress will now check for and run scheduled tasks every 30 minutes instead of when someone visits your website.

Method 2: 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:

For this tutorial, we will 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.

Creating a New Cron Job in EasyCron

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.

Creating a New Cron Job in EasyCron

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.

Viewing the List of Cron Jobs in EasyCron

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.

Disclosure: Our content is reader-supported. This means if you click on some of our links, then we may earn a commission. See how WPBeginner is funded, why it matters, and how you can support us. Here's our editorial process.

Editorial Staff

Editorial Staff at WPBeginner is a team of WordPress experts led by Syed Balkhi with over 16 years of experience in WordPress, Web Hosting, eCommerce, SEO, and Marketing. Started in 2009, WPBeginner is now the largest free WordPress resource site in the industry and is often referred to as the Wikipedia for WordPress.

The Ultimate WordPress Toolkit

Get FREE access to our toolkit - a collection of WordPress related products and resources that every professional should have!

Reader Interactions

7 CommentsLeave a Reply

  1. Syed Balkhi says

    Hey WPBeginner readers,
    Did you know you can win exciting prizes by commenting on WPBeginner?
    Every month, our top blog commenters will win HUGE rewards, including premium WordPress plugin licenses and cash prizes.
    You can get more details about the contest from here.
    Start sharing your thoughts below to stand a chance to win!

  2. Anita Richards says

    I am confused.

    Woocommerce recommends setting the command as without the “?doing_wp_cron” part.

    What is the difference?

    • WPBeginner Support says

      Unless we hear otherwise, the ?doing_wp_cron allows for some background processing that without would not be able to do.

      Admin

      • Anita Richards says

        Ok, that makes some sense. I guess that it must be the difference between the WP and Woo processes being run?

        I ended up creating two corn jobs in cPanel one with and one without. Is that going to cause problems?

        • WPBeginner Support says

          It should be a slightly different method to achieve the same result.

          It would depend on your site’s size for how multiple cron jobs would affect your hosting site, as your site becomes larger it may become an issue

Leave a Reply to Anita Richards Cancel reply

Thanks for choosing to leave a comment. Please keep in mind that all comments are moderated according to our comment policy, and your email address will NOT be published. Please Do NOT use keywords in the name field. Let's have a personal and meaningful conversation.