Guide to Setting up WordPress Cron Job

WP Cron is a powerful built-in feature in WordPress that allows you to automate and schedule tasks on your website. This guide will walk you through the process of setting up and managing WP Cron to optimize your site’s functionality.

An Overview of WP Cron

WP Cron is WordPress’s version of a task scheduler, similar to Unix cron but with its unique characteristics. It handles scheduled tasks such as publishing posts, checking for theme or plugin updates, sending email notifications, and more. It’s essential to note that unlike typical system cron that runs based on system time, WP Cron triggers by site visits. This setup implies WP Cron tasks only execute when your site gets a visitor.

How to Configure WP Cron

Step 1: Getting to Know WP Cron Functions

Working with WP Cron involves understanding four primary functions:

  1. wp_schedule_event($timestamp, $recurrence, $hook, $args): Schedules a recurring event.
  2. wp_unschedule_event($timestamp, $hook, $args): Removes a scheduled event.
  3. wp_next_scheduled($hook, $args): Determines the next time a particular event is scheduled.
  4. wp_clear_scheduled_hook($hook, $args): Unschedules all events tied to a specific hook.

Step 2: Scheduling a WP Cron Event

You can create a WP Cron event within your theme’s functions.php file or a custom plugin. Here’s an example of how to schedule a daily event:

if (!wp_next_scheduled('my_daily_event')) {
    wp_schedule_event(time(), 'daily', 'my_daily_event');
}
add_action('my_daily_event', 'do_this_daily');

function do_this_daily() {
    // The action to perform daily
}

In this code, my_daily_event is the hook where our event is registered, and do_this_daily is the function that WP Cron calls when this event fires.

Step 3: Ensuring WP Cron Executes Regularly

WP Cron relies on site visits to trigger events. If your site doesn’t have regular traffic, or if there’s a long gap between visits, scheduled events may not run on time.

To circumvent this, you can disable WP Cron and substitute it with a real cron job through your hosting control panel. This replacement ensures the regular execution of tasks, regardless of site visits.

Add this line to your wp-config.php file to disable the default WP Cron:

define('DISABLE_WP_CRON', true);

Then, establish a system cron job by adding this command in your hosting control panel’s Cron Job section:

*/5 * * * * wget -q -O - http://yourwebsite.com/wp-cron.php?doing_wp_cron >/dev/null 2>&1

Don’t forget to replace http://yourwebsite.com with your actual website URL.


WP Cron is a robust tool that can automate many tasks on your WordPress website. Whether you’re scheduling regular content updates, initiating database clean-ups, or dispatching email notifications, WP Cron has got you covered. Gaining an understanding of how to configure and manage it is an invaluable skill for any WordPress website owner or developer.