WordPress Cron: When to Replace WP-Cron with Server Cron

Illustrated infographic summarizing: WordPress Cron: When to Replace WP-Cron with Server Cron

By Greg Nowak. Updated 10 September 2026.

A scheduled post should publish before the campaign email goes out. A stock import should finish before customers order. When those timings matter, WordPress scheduling deserves a place in your operations plan.

Default WP-Cron relies on requests reaching WordPress to check for due events. Quiet periods can delay execution. Server cron supplies a regular trigger while WordPress and its plugins keep managing their scheduled events.

Make the switch when unpredictable delays create customer problems or manual work. First check whether your hosting provider already supplies a scheduler: you may need to repair or monitor an existing setup.

When is server cron worth it?

Start with the cost of lateness. A small membership site can need tighter scheduling than a much busier brochure site. Ask what happens if an important task runs five minutes late, an hour late, or tomorrow.

Situation Practical choice What to check
Brochure site; housekeeping can wait Keep default WP-Cron No important workflow depends on precise timing
Scheduled publishing or regular feeds Consider server cron every five minutes The interval fits the publishing deadline
Renewals, stock updates, or customer notifications Use a monitored scheduler; assess whether one-minute triggering is needed Completion time, failures, and overdue work
Hosting already manages cron Verify the existing arrangement Frequency, coverage, logs, and ownership
Growing backlog despite regular triggering Investigate processing capacity and plugin errors Whether work arrives faster than it finishes
Suggested starting points: choose the interval from acceptable delay and measured runtime.

A five-minute trigger can leave a newly due event waiting almost five minutes before processing starts. Backlogs and slow callbacks add more delay. Server cron cannot guarantee an exact completion time or fix a failing integration.

Prepare the change around real workflows

List the important jobs in business language: publish an article, update stock, send a renewal reminder, synchronise a contact. For each, record its schedule, acceptable delay, evidence of completion, and responsible person.

Have the implementer map those workflows to plugin hooks or queues. Check the current scheduler, take a configuration backup, and agree a low-risk verification task. Avoid testing through a payment or bulk email job unless its effects are understood.

  1. Prepare the replacement schedule and confirm its user, paths, PHP environment, and logging.
  2. Test the exact command under that operating-system user.
  3. Enable the replacement and verify an automatic run.
  4. Disable the default page-request trigger and check another automatic run.

In wp-config.php, before the stop-editing comment, add or update this setting without creating a duplicate:

define( 'DISABLE_WP_CRON', true );

This follows the WordPress system scheduler guidance. The setting stops automatic spawning; it does not remove scheduled events or prevent an external trigger from running them.

Use WP-CLI when the host supports it

WP-CLI can execute due WordPress events without an HTTP request to wp-cron.php. The official command reference documents --due-now for this purpose.

For a Linux user crontab, a five-minute schedule looks like this:

*/5 * * * * /usr/local/bin/wp cron event run --due-now --path=/var/www/example.com

Replace the example paths. Confirm that cron finds the intended PHP executable and required extensions; an absolute path to wp alone does not establish the whole environment. Use the hosting account responsible for the site, rather than testing only as root.

For multisite, add the target URL:

*/5 * * * * /usr/local/bin/wp cron event run --due-now --path=/var/www/example.com --url=https://example.com

This targets one site. Plan coverage for every relevant site in the network. Keep plugins loaded so their callbacks are available.

Retain output and errors in reviewed logs. If a run can exceed the interval, have the implementer add a suitable overlap guard and monitor skipped runs. Repeatedly starting more workers can make an overloaded site worse.

Use an HTTP trigger when shell access is limited

A hosting control panel or external scheduler can request https://example.com/wp-cron.php. Where command scheduling is available, WordPress documents using wget:

*/5 * * * * /usr/bin/wget --delete-after https://example.com/wp-cron.php

Choose one trigger method. Test from the actual scheduler: authentication, redirects, caching, or firewall rules can prevent the request from reaching WordPress. An HTTP success response alone does not prove that a business task finished.

Verify completion, not just the scheduler

Use the WP-CLI event list before and after an automatic run:

wp cron event list --path=/var/www/example.com --fields=hook,next_run_gmt,next_run_relative,recurrence

Recurring events should advance; completed one-off events normally disappear. Neither observation proves that an email arrived or an external system accepted an update. Check the workflow result and relevant plugin logs too.

For a controlled manual execution:

wp cron event run --due-now --path=/var/www/example.com

This runs due work immediately, including any customer-facing actions. It is not a diagnostic dry run.

After migration, wp cron test deliberately errors when DISABLE_WP_CRON is true. It tests HTTP spawning, so use scheduler history, queue progress, and actual outcomes to assess the replacement.

Plugins using Action Scheduler also need their own queue checked. Its processing documentation explains that batch limits and loopback requests affect throughput. A healthy WordPress trigger can coexist with a delayed plugin queue; persistent backlogs may need a dedicated Action Scheduler runner.

Make the setup supportable

Document the command, interval, account, site coverage, log location, and alert owner. Monitor missed executions and the age of overdue work. For rollback, restore default spawning and withdraw the replacement schedule in a coordinated change.

If your team needs help identifying critical jobs, coordinating hosting changes, or verifying the result, talk to Greg about your WordPress operations. A useful starting point is the workflow that currently needs someone to check it manually.

Related on GrN.dk

Need help with this kind of work?

Talk to Greg about your WordPress operations Get in touch with Greg.

Sources

Seneste artikler

Sådan automatiserer danske virksomheder Gmail og Microsoft 365 med hurtig sortering, begrænsede rettigheder og menneskelig godkendelse.

Samme kunde på flere kort i HubSpot? Se, hvordan CVR-match, AI-forslag og menneskelig godkendelse kan bruges til at rydde op med styr på felter, relationer og kundehistorik.

Få en ugentlig marketingrapport fra GA4 og Google Ads med kontrollerede beregninger, tydelige dataforbehold og et kort AI-udkast, der hjælper jer på mandagsmødet.

Brug AI til webshoppens alt-tekster med en overskuelig pilot: kortlæg billederne, få danske forslag, og kontrollér resultatet i WordPress og WooCommerce.

AI-baseret ticketanalyse kan afsløre gentagne klager, produktfejl og huller i dokumentationen – uden at virksomheden behøver endnu en chatbot.

OpenSSH 10 fjerner DSA og advarer om nøgleudveksling, der ikke er post-kvantesikker. Her får du en metode til at afgrænse SFTP-oprydningen uden at svække alle SSH-forbindelser.

Botforespørgsler overstiger nu menneskelig webtrafik. Lær at auditere AI-crawlere, fastsætte regler på stiniveau, håndhæve robots.txt og måle det forretningsmæssige afkast.

Cloudflares Tunnel-opdateringer fra 2026 forbedrer kortlægning, overvågning af replikaer, logstreaming og overdragelse – men synliggør samtidig svagt ejerskab og mangelfuld praksis for failover og logging.

Sådan bruger du AI til mødenoter og opfølgning, mens faste regler beskytter CRM-data, kundematch og pipeline mod fejl og forhastede ændringer.

Drupal 10 når end of life den 9. december 2026. Brug denne praktiske kortlægning til at afgrænse arbejdet med Drupal 11-parathed, Composer-efterslæb, moduler og custom code.