Disabling wp-cron.php in WordPress

WordPress uses a file called wp-cron.php as a virtual cron job, or scheduled task in order to automate things like publishing scheduled posts, checking for plugin or theme updates, sending email notifications and more.

By default WordPress is setup to call wp-cron.php everytime someone visits your WordPress website when a scheduled task is present, to basically ask "is it time to do anything yet?".

On low traffic sites this is perfectly fine, but when visitors roll in, checking multiple times for scheduled tasks can be very inefficient and lead to resource usage problems for your server, plus make your website load slower.

Disable default wp-cron.php behavior

We can easily tell WordPress to let us handle the execution of wp-cron.php with the wp-config.php file.

  1. Open your wp-config.php file with the cPanel File Manager Code Editor
  2. Go to the bottom of the database settings in wp-config.php typically around line 37.

    Add the code below highlighted in red:

    /** The Database Collate type. Don't change this if in doubt. */
    define('DB_COLLATE', '');
    
    define('DISABLE_WP_CRON', 'true');
    
  3. Click Save

Now WordPress will not automatically run the wp-cron.php script each time your site gets a new visitor.

Setup manual cron job for wp-cron.php

We don't want to leave WordPress without any ability to automate tasks it might need to do. But at least now that it's not running for every single visitor, we can have way more control over when these tasks take place.

For most WordPress users having the wp-cron.php script run every 6 hours is perfectly fine. That would be just 4 executions in a day, compared to possibly hundreds, or even thousands if you had a lot of website traffic that day.

  1. Log into cPanel
  2. Under the Advanced section, click on Cron Jobs.
  3. Select Once per hour from the Common Settings drop-down.
  4. Now select Every Sixth hours from the Hour drop-down.
  5. Finally fill in the code to run our cron job and click Add New Cron Job.
    cd /home/username/public_html; php -q wp-cron.php
    

    Where username is your cPanel user name.

    Keep in mind that the /home/username/public_html path would be for a primary domain, if you're using an addon domain, or have WordPress installed in a sub-directory you'll want to be sure to update your path.

  6. You should see that your new cron job was added successfully.



  • 0 Users Found This Useful
Was this answer helpful?

Related Articles

Adjusting the file upload or post size

If you are using a PHP script and want to increase the "post size" or the "size of a file I can...

How to use sendmail with PHP

Here is the magical line of code which tells PHP to send an email through your mail server....

403 Forbidden or No Permission to Access

The top reasons for this error are permissions or .htaccess error. Permissions The 403...

404 error page

404 means the file is not found. If you already uploaded the file, then either the name is...

How to find the correct spelling and path for your files, missing images

When you get a 404 error, check the URL in your browser. This tells you the path and file name...