Are your scheduled posts failing to publish, or your website feeling slow? If you answered yes, then you might be falling victim to the hidden inefficiency of WordPress’s default background task system. 

WP-Cron is a “virtual” crontab that triggers only when someone visits your site, but this traffic-dependent virtual cron job often leads to slow page loads, database bloat, and missed automated tasks.

In this guide, we will walk you through WP-cron’s drawbacks, and show you how to replace WP-cron with a high-performance manual cron job. 

What is WP-Cron in WordPress?

WP-Cron is a virtual cron job system built into WordPress that triggers time-based background tasks. This is different from a real cron (or system cron), which automatically triggers on a scheduled interval. The WordPress cron functionality only executes when a user visits your website

Limitations and Common Issues with WP-Cron

Although the built-in WordPress cron functionality is convenient for small sites, it has several major flaws:

  • Traffic Dependency: If no one visits your site, your scheduled tasks (such as publishing a post) will not run.
  • Performance Degradation: Every page load triggers a task check, adding latency and consuming server CPU.
  • Resource Spikes: During high traffic, hundreds of users may trigger the wp-cron.php file simultaneously, leading to server timeouts.
  • Reliability: Background tasks like email notifications or theme updates may hang if the PHP process times out during a heavy page request.

For these reasons, most WordPress users disable the built-in WordPress cron jobs and replace them with a system cron job.

Suggested Read: What Is WP Cron & Setting Up Server-Side Cron Jobs

When Should You Consider Disabling WP-Cron?

ScenarioWhy you should disable WP-Cron
High TrafficPrevents multiple users from triggering overlapping cron processes.
Scheduled TasksEnsures mission-critical tasks (backups, newsletters) run exactly on time.
Slow Site SpeedReduces server load by removing the check-on-load requirement.
E-commerce StoresEnsures WooCommerce inventory and order emails process reliably.

Suggested Read: How to Create and Manage Cron Jobs on Linux

How to Disable WP-Cron (wp-cron.php) in WordPress

Note: If you’re using RunCloud, you can skip this step. Jump to the section below (“Method 1: Use RunCloud Server Cron Functionality”) to see how to do it with a single click.

To stop the default behavior, you must set the DISABLE_WP_CRON constant in your WordPress configuration.

  1. Log in to your hosting provider’s dashboard and open the File Manager.
  2. Locate the wp-config.php file, right-click it, and select the Code Editor.
  3. Find the line that says /* That’s all, stop editing! Happy publishing. */.
  4. Paste the following code directly above that line: 
define( 'DISABLE_WP_CRON', true );
  1. Save your changes and close the editor.
disable wp-cron in wordpress

Suggested Read: 10 Best WordPress Management Tools To Easily Manage Multiple Websites

How to Set Up a Real Cron Job for WordPress

Once the internal cron functionality is disabled, you must replace it with a real cron job to make sure your site functions correctly.

The RunCloud dashboard provides a professional, “one-click” way to handle this without ever touching a command line or configuration file.

  1. Log in to your RunCloud dashboard and select your Web Application.
  2. Navigate to the General Settings tab in the sidebar menu.
  3. Locate the WordPress Config section on the page.
  4. Toggle the “Server Cron” switch to On.

That’s it! RunCloud automatically disables the virtual cron job and configures a system-level cron task for you.

enable WordPress cron in WordPress

Suggested Read: How To Install WordPress With RunCloud | Step-By-Step Guide

Method 2: Using the RunCloud Cron Manager

While the standard RunCloud WordPress Cron functionality is sufficient for many websites, you’re not strictly bound to it. If you have unique requirements, such as a plugin that requires specific timing or a multisite environment where standard cron runs might conflict, you can create custom jobs.

Setting up these custom jobs gives you granular control over when and how background tasks are processed. By bypassing the default system, you can define precise schedules that align with your site’s architecture, ensuring that even complex workflows run seamlessly. 

  1. In your RunCloud dashboard, go to the Cron Job tab for your server.
  2. Click the “Add New Job” button.
  3. On the next screen, you can specify the basic details for your cron job, such as:
    • Job Label: Give your task a descriptive name (e.g., “WordPress Newsletter Cron”) to help you easily identify it later in your dashboard.
    • User: Select the custom user who owns the web application. Using a specific system user (rather than root) is a security best practice that helps prevent permission issues.
    • Vendor Binary: Choose your execution environment. While /bin/bash is standard for general shell commands, you can also select php if you are running a direct script.
    • Command: Enter wp cron event run --path="/home/your-site/public_html" --due-now to trigger only tasks that are scheduled. Make sure to replace the example path in the previous command with the actual root path of your WordPress application.
    • Run In: You can choose a preset (e.g., “Every 15 minutes”) or select “Custom” to define your own timing (e.g., using a CRON expression like 0 2 * * * to run a task daily at 2:00 AM).
  4. Check the “Content of your cron job” field at the bottom; RunCloud will live-preview the final command syntax so you can verify it is correct before clicking “Save.”
Create cron jon in WordPress

Note: Make sure that the User selected for the cron job matches the owner of the files in your public_html directory; this prevents “Permission Denied” errors when the job attempts to write to logs or update databases.

Suggested Read: How to Use FTP to Upload Files to WordPress Without a Password [Step By Step]

Method 3: Using SSH

If you’re not using RunCloud yet, then another alternative is to connect to your server via SSH to configure or manage these cron jobs manually. Follow these steps below:

  1. Connect to your server using SSH with your username or root credentials.
  2. Enter the command crontab -e to open your system’s crontab editor.
  3. Add a new line at the bottom of the file using the following format: 
*/15 * * * * wp cron event run --path="/home/your-site/public_html" --due-now
  1. Save and exit the editor (press Ctrl+X, then Y, then Enter).
Edit Crontab in Linux

After saving the file, you can verify that the task was created successfully by running crontab -l to confirm your manual cron job is active and ready.

Suggested Read: The Best 5 WordPress Vulnerability Scanners in 2025 (Compared)

Wrapping Up: Who Should Disable WP-Cron in WordPress?

In this guide, we have covered several methods to optimize your WordPress background tasks, ranging from manual configuration in your File Manager to advanced SSH command-line editing. While these approaches work, they come with risks, such as syntax errors in your wp-config.php or improper file permissions that can break your site’s automation.

If you’re looking for the most reliable, efficient, and user-friendly experience, the RunCloud Cron Manager is the superior choice. It eliminates manual configuration errors and lets you manage your scheduled tasks, custom PHP scripts, and system-level commands from a single intuitive interface.

In addition to Cron management, RunCloud offers many useful features, including one-click SSL deployment, automated server security, easy staging environment creation, and real-time server monitoring. RunCloud is designed to save you hours of development time. 

Explore RunCloud and see how it can help you manage WordPress sites and servers with fewer manual steps.

Start your free 7-day trial today

FAQs on Disabling WP-Cron in WordPress

Is it safe to disable WP-Cron?

Yes, it’s perfectly safe and actually recommended to disable the default wp-cron.php trigger for most WordPress sites. By default, WordPress checks for scheduled tasks every time a visitor loads a page, which can be inefficient. Replacing this with a system-level cron job ensures your tasks run reliably without relying on incoming web traffic.

What are the risks of disabling WP-Cron?

The only primary risk is forgetting to set up a replacement server-side cron job after disabling the default one. If you disable the built-in system without creating a backup task, your scheduled events will never trigger. Fortunately, RunCloud makes this transition easier by providing a one-click WP-Cron fix that handles the configuration for you.

Do I need to set up a real cron job after disabling WP-Cron?

Yes, if you disable the default wp-cron.php trigger, you must configure a real server cron job to maintain site functionality. Without this replacement, automated tasks such as publishing posts or sending emails will stop. 

Will disabling WP-Cron affect scheduled posts or emails?

Disabling the default system will only affect scheduled posts or emails if you fail to replace it with a server-level cron job. Once you move to a system cron, your scheduled posts and emails will actually become more punctual and reliable. They will no longer depend on a random visitor loading your site to trigger the execution process.

How often should I run the real cron job?

For most standard websites, running the system cron job once every 5 to 15 minutes is the industry standard. This frequency is enough to keep your site updated without putting unnecessary strain on your server’s resources. If you have a high-traffic site or time-sensitive tasks, you can adjust this interval within your RunCloud dashboard to meet your specific needs.

What happens if I don’t replace WP-Cron with a server cron job?

If you disable the default trigger without setting up a replacement, your WordPress site will essentially “go to sleep” regarding automated background tasks. You will notice that scheduled posts remain stuck in “draft” status, and automated emails, such as password reset emails or form notifications, will stop being sent. Your site will remain functional for visitors, but all background administrative automation will stop working.

Can I re-enable WP-Cron later?

Yes, you can easily re-enable the default behavior at any time if you change your hosting environment or troubleshooting requirements. Simply revert the DISABLE_WP_CRON constant in your wp-config.php file to false or remove the line entirely. If you used the RunCloud one-click fix, you can manage these settings through the RunCloud interface just as easily as you enabled them.

Does disabling WP-Cron improve site performance?

Yes, disabling the default wp-cron.php can significantly improve performance, especially for sites with lower traffic. By preventing WordPress from checking for tasks on every page load, you reduce the CPU load and server response time for your visitors. This small tweak is an effective way to streamline your resource usage and improve the overall “snappiness” of your site.

Absolutely, disabling the default WP-Cron is a best practice for high-traffic environments to prevent resource exhaustion. On busy sites, hundreds of concurrent users could trigger the cron process simultaneously, leading to database locking and server instability. Offloading these tasks to a server cron ensures that scheduled jobs execute once, predictably, and independently of user traffic.

What’s the difference between WP-Cron and a real cron job?

WP-Cron is a “virtual” cron system that triggers only when a user visits your website, making it highly dependent on incoming traffic. A real system cron job is a true server-side task that runs at precise, pre-defined intervals regardless of whether anyone is browsing your site. By using RunCloud’s one-click WP-Cron fix, you shift your site from an unreliable, traffic-dependent model to a professional, server-side automated schedule.