Scheduling cron jobs

Cron jobs run tasks on a schedule — publishing posts, sending newsletters, syncing data, or backing things up. WordPress has its own scheduler, but it only fires when someone visits your site, which makes it unreliable on low-traffic sites and a performance drag on busy ones. A real system cron fixes both problems, and Kelma makes it easy to set up.

Why replace WP-Cron

  • Reliability — a system cron runs exactly on schedule, even with zero visitors.
  • Performance — WordPress no longer checks for due tasks on every page load.
  • Accuracy — scheduled posts and emails go out on time, every time.

Disable the built-in WP-Cron

First, stop WordPress from running cron on page loads by adding this line to wp-config.php (you can edit it over SFTP):

define( 'DISABLE_WP_CRON', true );

This does not disable scheduling — it just stops the visitor-triggered method so a real cron can take over.

Add a system cron job

  1. Open your server or site and go to the Cron Jobs section.
  2. Add a new job that calls WordPress is cron handler on a schedule, for example every five minutes.
  3. Use a command such as the one below, pointed at your site is path.
cd /home/your-user/yoursite.com && php wp-cron.php > /dev/null 2>&1
How often? Every 5 minutes suits most sites. Stores with time-sensitive tasks may want every minute; quiet brochure sites are fine with every 15. More frequent than you need just adds load.

Understanding the schedule

Cron schedules use five fields: minute, hour, day-of-month, month, and day-of-week. A few examples:

ScheduleMeaning
*/5 * * * *Every 5 minutes
0 * * * *Every hour, on the hour
30 2 * * *Every day at 2:30 AM
0 9 * * 1Every Monday at 9:00 AM
Tip: After setting up the cron, schedule a test post a few minutes out and confirm it publishes on time. That verifies the whole chain end to end.

What actually runs on WordPress cron

It is worth knowing what depends on this schedule, because when cron is unreliable, these are the things that quietly break:

  • Scheduled posts — articles set to publish at a future time.
  • Plugin tasks — newsletter sends, SEO sitemap pings, form follow-ups, and sync jobs.
  • Maintenance — clearing transients, checking for updates, and trashing old revisions.
  • Backups and reports that some plugins schedule internally.

With a real system cron firing on a fixed schedule, all of these run on time regardless of traffic — which is exactly why busy stores and low-traffic brochure sites alike benefit from the switch.

Frequently asked

Will disabling WP-Cron break scheduled posts?

No — as long as you add a system cron to replace it. The DISABLE_WP_CRON constant only turns off the visitor-triggered method; your system cron then runs the same scheduled tasks, more reliably.

How often should the cron run?

Every five minutes suits most sites. Increase the frequency only if you have genuinely time-sensitive tasks, since running more often than you need just adds load.

How do I know it is working?

Schedule a test post a few minutes ahead and confirm it goes live on time. If it does, your cron chain is healthy from end to end.

In short

WordPress is built-in scheduler only fires when someone visits your site, which makes it unreliable on quiet sites and a drag on busy ones. Replacing it with a real system cron fixes both: disable WP-Cron with a single line in wp-config.php, then add a system cron that runs wp-cron.php every few minutes. Scheduled posts publish on time, plugin tasks run dependably, and your pages stop carrying the overhead of checking for due jobs on every load.

Where to go next

 Image Name  - Scheduling cron jobs

Leave a Reply

Your email address will not be published. Required fields are marked *