Cronjob.de › Guides › WordPress
Setting up a WordPress cronjob: making WP-Cron reliable
For a reliable WordPress cron job, disable WP-Cron in wp-config.php with define( 'DISABLE_WP_CRON', true ); and have https://your-domain.com/wp-cron.php called from outside every five minutes. Scheduled posts, backups and update checks then run on time, even while nobody is visiting the site. No coding required.
Updated:
Why at all
WP-Cron depends on your visitors
According to the WordPress handbook, WP-Cron checks on every page load whether a scheduled task is due, and does not run constantly like a system cron. If no visitor comes, nothing happens. The handbook gives the example itself: a task scheduled for 2 p.m. runs at 5 p.m. if that is when the next page load happens.
This affects everything WordPress and its plugins do in the background: scheduled posts, automatic updates, backups, newsletter delivery, and with WooCommerce the Action Scheduler. Behind a page cache it can take even longer, because cached pages often do not start WordPress at all.
On top of that, WP-Cron starts the work through a request from the server to itself (loopback). If password protection or a firewall blocks that request, scheduled tasks are left undone. A fixed interval from outside avoids both. You need no server of your own and no cron manager at your host, just the address of your wp-cron.php.
- URL to call
https://ihre-domain.de/wp-cron.php- Recommended interval
- every 5 minutes
- Tested with
- WordPress 5.x bis 7.x
- Sufficient Cronjob.de plan
- The free plan is enough. For WooCommerce shops the one-minute interval from Cronjob.de Plus makes sense.
Setup
Step by step
The AI does it faster
You do not have to transfer any of this by hand. Paste this guide – or the one for your own system – into the assistant, and Cronjob.de fills in address, method, schedule and headers. Where something is unclear it asks instead of guessing. At the end you see what was entered and create the job with one click.
Included in the free plan at no extra cost. You will find it after signing in under "Cronjobs" → "Create with AI".
-
Disable WP-Cron in wp-config.php
Open
wp-config.phpin the root directory of your WordPress installation and add the following line above the comment/* That’s all, stop editing! */, in any case before the linerequire_once ABSPATH . 'wp-settings.php';. With our plugin you can skip this step, see the questions below.define( 'DISABLE_WP_CRON', true );
-
Check that the address is reachable
Open
https://your-domain.com/wp-cron.phpin a browser once. A blank white page is correct. An error message or password prompt means the file is being blocked, usually by a security plugin, directory protection or a rule in .htaccess. -
Create an account at Cronjob.de
Registration takes a minute and is free. Five cronjobs stay free forever, the first 14 days run on the Unlimited plan.
Start for free 14 days of Unlimited included, no payment details
-
Create a cronjob with that address
Enter the address and choose every 5 minutes in the schedule: by clicking, as a sentence for the AI assistant or as a crontab expression. Leave the method on GET: if a POST with form data arrives,
wp-cron.phpexits immediately without processing any tasks.*/5 * * * *
You can enter this expression at Cronjob.de exactly as it is – the schedule field understands crontab notation. But you do not have to know it: simply click the schedule together instead.
-
Switch on error notifications
So that you notice when your site stops responding, enter an email address under Notifications. You will then be notified when a call fails. Failure notifications by email are included from the Plus plan, and free during the first 14 days.
What the five fields of an expression like */5 * * * * mean is explained in the crontab reference – with examples and the most common pitfalls. You can build the expression in the crontab generator. Whether you need an outside service at all is shown in the comparison of the three ways.
Verification
Is it actually running?
In the Cronjob.de call log you will see the first calls with status 200 within a few minutes. A very short runtime is normal: on many servers wp-cron.php closes the connection right away and keeps working afterwards. Inside WordPress the free WP Crontrol plugin lists all scheduled events under Tools and when they are next due. Under Tools → Site Health WordPress also reports "A scheduled event is late" or "… has failed" on its own. Scheduling a test post for the next minute is the quickest check.
FAQ
Common questions about WordPress
- Which external cron service should I use for WP-Cron?
- If your host offers a cron manager with an interval of a few minutes, that is enough. Otherwise use a service that calls wp-cron.php from outside. Look for four things: an interval of five minutes or tighter, a log of the calls, a notification when a call fails, and servers in the EU. Cronjob.de meets all four – five cronjobs at five-minute intervals are free forever, and failure notifications by email come with the Plus plan. Which services can do that and what they cost is in the comparison of cron job services.
- Is there a WordPress plugin?
- Yes, the free plugin Cronjob.de – Reliable Cron in the WordPress plugin directory. It shows the address of your wp-cron.php and opens a pre-filled cron job at Cronjob.de, you only click save. As soon as external calls arrive, it stops page views from triggering WP-Cron; if they stop, WordPress goes back to the visitor trigger by itself. You then do not need the wp-config.php line from step 1. Under Tools → Cronjob.de you see when WP-Cron last ran and how many tasks are overdue.
- Do I really have to disable WP-Cron?
- No, but it makes sense. Without disabling it both run in parallel: the call from outside plus the check on every visit. A lock inside WordPress prevents duplicate runs, but the check on every page view remains.
- What happens if a call fails once?
- Nothing is lost. WordPress remembers due tasks and catches up on the next successful call. A single missed call only delays execution.
- How often should wp-cron.php be called?
- Every five minutes is enough for most sites, and the free plan covers that. The WordPress handbook leaves the interval to you and shows examples with 15 minutes and daily. For a WooCommerce shop we recommend every minute, because the Action Scheduler there schedules background work at one-minute intervals.
- Is calling more often than once a minute worth it?
- No. While WP-Cron is running, WordPress holds a lock that lasts 60 seconds by default (
WP_CRON_LOCK_TIMEOUT). Another call within that time does not start a second run. One minute is therefore the sensible lower limit. - My call ends with error 403 or 401.
- Something is blocking access to wp-cron.php. Common causes are security plugins, directory-level password protection, or a blocking rule in .htaccess. An upstream bot protection, for example at a CDN, can also reject calls from cron services. Exempt wp-cron.php there. For directory protection, store user name and password in the cron job.
- Does this work on a site behind maintenance mode?
- Usually not, because maintenance mode intercepts every request. Many maintenance plugins let you exempt individual addresses. Add wp-cron.php there.
- I run WordPress Multisite. Is one cronjob enough?
- No. In a multisite installation every sub-site has its own scheduled events, and a call to wp-cron.php only processes those of the site whose address it comes through. Create a separate cronjob for every sub-site, for example
https://your-domain.com/subsite/wp-cron.phporhttps://subsite.your-domain.com/wp-cron.php.
Cronjob.de
in the user agent. Ask your host for an exception for it; that is more reliable than allowing IP addresses, because ours can change. Addresses and details in the FAQ.
Other errors such as 401, 404 or 500 are explained in the troubleshooting guide.
Create your cronjob now
Create an account, enter the address, click the schedule. Five cronjobs are free forever, the first 14 days run on the Unlimited plan.
Start for free See pricingMore guides
- Webspace
- Windows
- Nextcloud
- Contao
- Drupal
- Joomla
- All-Inkl (KAS)
- STRATO
- IONOS
- Matomo
- Dolibarr
- phpList
- SuperWebMailer
- Firefly III
- Host Europe
- Hetzner Webhosting
- Gambio
- Shopware
- JTL-Shop
- PrestaShop
- Moodle
- WooCommerce
- WP All Import
- Doofinder
- GitHub Actions
- MySQLDumper
Official documentation of WordPress
The details about WordPress come from their own documentation, as of October 2026. Please check there whether anything has changed since. WordPress is a trademark of its respective owner. This guide comes from Cronjob.de and has no business relationship with that provider.
By Joscha Schultze, operator of Cronjob.de · Written with AI assistance, provider details checked against their official pages.