WordPress cron là hệ thống lập lịch nội bộ giúp kích hoạt các tác vụ định kỳ như kiểm tra cập nhật plugin, đăng bài tự động, gửi email thông báo hay xóa bình luận spam. Khi wordpress cron không chạy, các chức năng này ngừng hoạt động, gây ảnh hưởng nghiêm trọng đến hiệu suất và trải nghiệm người dùng. Hàng nghìn quản trị viên đang gặp phải tình trạng lịch trình bị trì hoãn hàng giờ thậm chí hàng ngày. Bài viết này phân tích từ gốc rễ nguyên nhân, cung cấp hướng dẫn kiểm tra và giải pháp toàn diện giúp bạn khắc phục triệt để vấn đề cron WordPress không chạy.
WordPress Cron Là Gì? Bản Chất và Cơ Chế Hoạt Động

WordPress cron thực chất là một “giả cron” (pseudo-cron) chạy dựa trên lượt truy cập vào website. Mỗi khi có người dùng ghé thăm, WordPress kiểm tra danh sách các tác vụ đã lên lịch và thực thi những tác vụ đến hạn. Khác với cron thực trên server Unix (cron job) chạy theo các mốc thời gian cố định, WP-Cron chỉ kích hoạt khi có traffic. Chính cơ chế này làm phát sinh vấn đề wordpress cron không chạy khi website ít khách truy cập.
Hệ thống cron WordPress gồm ba thành phần chính: hook (tên tác vụ), timestamp (thời điểm thực thi) và schedule (tần suất). Khi bạn cài plugin tự động đăng bài hoặc plugin SEO, chúng đăng ký các hook vào cron. Mỗi lần tải trang, WordPress gọi hàm wp-cron.php để xử lý danh sách. Nếu quá trình này bị gián đoạn, wordpress cron không chạy đúng giờ.
Phân Biệt WP-Cron và Cron Thực Trên Server
| Tiêu chí | WP-Cron (giả cron) | Server Cron (Unix cron) |
|---|---|---|
| Kích hoạt | Dựa vào lượt truy cập website | Dựa vào thời gian cố định (phút, giờ, ngày) |
| Độ tin cậy | Không ổn định nếu site ít traffic | Rất ổn định, chạy đúng lịch |
| Tài nguyên | Ngốn tài nguyên khi có request | Tiêu tốn CPU tối thiểu |
| Cấu hình | Mặc định, không cần cài đặt | Cần chỉnh sửa crontab hoặc CPanel |
Sự nhầm lẫn thường gặp là nghĩ rằng WP-Cron giống cron thực. Điều này dẫn đến việc đổ lỗi cho hosting khi wordpress cron không chạy, trong khi thực tế cơ chế mặc định của WordPress phụ thuộc hoàn toàn vào traffic.
Nguyên Nhân Khiến WordPress Cron Không Chạy
Có bảy nhóm nguyên nhân chính khiến wordpress cron không chạy hoặc chạy chậm. Sau đây là phân tích từng nhóm kèm dấu hiệu nhận biết.
1. Thiếu Lượt Truy Cập (Low Traffic)
Đây là nguyên nhân phổ biến nhất. Nếu website của bạn có ít hơn 10-20 lượt truy cập mỗi giờ, WP-Cron chỉ được kích hoạt vài lần trong ngày. Tác vụ cần chạy mỗi giờ có thể bị trễ 6-12 tiếng. Các site mới, site dạng landing page hay blog mới ra mắt thường gặp tình trạng này.
2. Bộ Nhớ PHP Hết Hạn (Memory Exhaustion)
Khi PHP memory limit quá thấp (ví dụ 32MB hoặc 64MB), quá trình xử lý cron dễ bị kill giữa chừng. Plugin xử lý hàng loạt dữ liệu (ví dụ RSS aggregator, email queue) đặc biệt nhạy cảm với lỗi này. Bạn sẽ thấy cron schedule trống hoặc tác vụ bị reset mà không lý do.
3. Xung Đột Plugin hoặc Theme
Một số plugin lập lịch hoặc plugin tối ưu cache có thể ghi đè lên cron schedule. Ví dụ, plugin cache thường làm chậm hoặc chặn wp-cron.php vì nó không ưu tiên các tác vụ nền. Theme kém chất lượng cũng có thể chứa các hook cron lỗi thời, gây xung đột.
4. Lỗi Hosting (Server Config)
Một số nhà cung cấp hosting chia sẻ (shared hosting) giới hạn thời gian thực thi của script hoặc tắt hoàn toàn wp-cron.php bằng.htaccess. Một số host chạy Web Application Firewall (WAF) chặn request tới wp-cron.php vì coi đó là hành vi đáng ngờ. Hậu quả là cron không bao giờ được kích hoạt.
5. Cập Nhật WordPress Bị Lỗi
Đôi khi quá trình cập nhật core không hoàn tất làm hỏng bảng wp_options, nơi lưu trữ danh sách cron. Các tác vụ cũ vẫn tồn tại nhưng timestamp sai lệch, dẫn đến wordpress cron không chạy vì WordPress cho rằng tác vụ chưa đến hạn.
6. Tùy Chỉnh wp-config.php Không Đúng
Một số hướng dẫn khuyên vô hiệu hóa WP-Cron bằng hằng số DISABLE_WP_CRON nhưng không thiết lập cron thực để thay thế. Kết quả là hệ thống không còn giả cron, cron thực cũng không có, dẫn đến mọi tác vụ bị treo vĩnh viễn.
7. Thời Gian Múi Giờ Server Lệch
Mặc dù hiếm, nhưng nếu múi giờ trên server và trong cài đặt WordPress khác nhau vài giờ, các tác vụ có thể bị tính toán sai thời điểm, khiến cron không kích hoạt vào đúng thời điểm mong muốn.
Dấu Hiệu Nhận Biết WordPress Cron Gặp Vấn Đề

Trước khi đi vào khắc phục, bạn cần chắc chắn rằng wordpress cron không chạy thực sự.
- Email không được gửi: Thông báo đặt mật khẩu, xác nhận đơn hàng WooCommerce không đến người dùng.
- Plugin không cập nhật: Dashboard báo có bản cập nhật nhưng plugin không tự động cài.
- Backup không chạy: Plugin backup dạng scheduled bỏ lỡ lịch hẹn.
- Cron Schedule trống: Khi kiểm tra trong database, bảng
wp_optionskhông có optioncronhoặc option đó rỗng. - Thời gian cron stalled: Dùng plugin WP Crontrol thấy timestamp của các tác vụ đã quá hạn hàng ngày nhưng không được thực thi.
Hướng Dẫn Kiểm Tra Cron WordPress Chạy Hay Không
Để xác minh wordpress cron không chạy, doing_wp_cron=1. Nếu nhận được trang trắng hoặc lỗi 500, nghĩa là script bị chặn hoặc lỗi PHP. Nếu thấy mã HTML thông thường, cron đã được kích hoạt thành công.
Kiểm Tra Server Log
Yêu cầu nhà cung cấp hosting cấp quyền xem error log. Tìm lỗi liên quan đến wp-cron.php, PHP timeout, hoặc memory limit. Các lỗi phổ biến: “Maximum execution time of 30 seconds exceeded” hoặc “Allowed memory size exhausted”.
Cách Khắc Phục WordPress Cron Không Chạy Từ Cơ Bản Đến Nâng Cao

Tùy theo nguyên nhân, doing_wp_cron=1 hoặc curl -s http://yourdomain.com/wp-cron.php > /dev/null.
Lưu ý: Nếu site có SSL, dùng HTTPS thay vì HTTP. Một số host yêu cầu đường dẫn tuyệt đối thay vì URL – hãy hỏi support nếu gặp lỗi.
Giải Pháp 3: Sử Dụng Dịch Vụ Cron Bên Thứ Ba
Nếu không có quyền truy cập server, dùng dịch vụ cron miễn phí như cron-job.org hoặc EasyCron. Đăng ký tài khoản, tạo job với URL https://yourdomain.com/wp-cron.php?doing_wp_cron=1, đặt tần suất. Kết hợp với việc thêm define('DISABLE_WP_CRON', true); để tránh cron kép.
Giải Pháp 4: Tăng Giới Hạn PHP Memory và Thời Gian Thực Thi
Thêm vào file wp-config.php trước dòng kết thúc:
define('WP_MEMORY_LIMIT', '256M');
define('WP_MAX_MEMORY_LIMIT', '512M');
set_time_limit(300);
Nếu không hiệu quả, yêu cầu host tăng PHP values trực tiếp trên php.ini hoặc qua CPanel.
Giải Pháp 5: Xóa Xung Đột Plugin
Tạm thời vô hiệu hóa tất cả plugin, ngoại trừ WP Crontrol. Kiểm tra xem cron có chạy lại không. Nếu có, kích hoạt lần lượt từng plugin để tìm plugin gây lỗi. Đặc biệt chú ý các plugin cache, security, backup và SEO.
Giải Pháp 6: Sửa Bảng wp_options
Nếu cron option bị hỏng, kết nối phpMyAdmin hoặc dùng plugin Better Search Replace. Xóa option cron trong bảng wp_options. Chạy tác vụ bất kỳ (ví dụ vào Dashboard) để WordPress tạo lại option cron mới. Lưu ý: thao tác này làm mất tất cả tác vụ chưa thực thi, có thể cần chạy lại thủ công các tác vụ quan trọng.
So Sánh Các Giải Pháp Cho WordPress Cron Không Chạy
| Giải pháp | Độ khó | Hiệu quả | Phụ thuộc |
|---|---|---|---|
| Dùng plugin thay thế | Thấp | Trung bình | Plugin phải tương thích |
| Server cron job | Trung bình | Cao (tối ưu nhất) | Quyền truy cập server |
| Dịch vụ cron bên thứ ba | Thấp | Cao | Kết nối Internet của service |
| Tăng PHP memory/timeout | Thấp | Trung bình | Giới hạn hosting |
| Xóa xung đột plugin | Trung bình | Cao (đúng nguyên nhân) | Thời gian debug |
Sai Lầm Thường Gặp Khi Xử Lý Cron Không Chạy

- Đổ lỗi ngay cho hosting: Trước khi liên hệ host, hãy kiểm tra cơ chế WP-Cron và traffic. Rất nhiều trường hợp lỗi đến từ cấu hình hoặc plugin.
- Vô hiệu hóa WP-Cron mà không thay thế: Hậu quả là cron hoàn toàn tê liệt. Luôn đảm bảo có cron thực hoặc service thay thế song song.
- Cài quá nhiều plugin cron: Mỗi plugin thêm hook cron sẽ làm tăng thời gian xử lý. Giới hạn số plugin backup, SEO, analytics để giảm gánh nặng.
- Không kiểm tra log sau khi fix: Log là công cụ duy nhất cho bạn biết cron có thực sự hoạt động hay không. Bỏ qua log đồng nghĩa với việc mò mẫm.
- Sử dụng wp-cron.php sai URL: Nếu site có CDN, firewall hoặc chuyển hướng (redirect), URL bạn ping có thể không tới được file thật. Dùng URL trực tiếp không qua bất kỳ lớp cache nào.
Lưu Ý Quan Trọng Khi Sửa Lỗi Cron WordPress
Kiểm tra phiên bản WordPress và tất cả plugin: các bản cũ có thể có lỗi cron riêng. Nâng cấp lên bản mới nhất trước khi thực hiện bất kỳ thay đổi nào.
Không bao giờ chạy wp-cron.php trên trình duyệt thường xuyên – điều đó làm tăng tải server và có thể kích hoạt các tác vụ nhiều lần. Chỉ dùng để kiểm tra một lần.
Nếu trang của bạn dùng Load Balancer, hãy đảm bảo chỉ có một server duy nhất thực thi cron. Các server khác phải được cấu hình bỏ qua cron trừ khi bạn dùng cron job trên mỗi server.
Sử dụng plugin WP CLI để quản lý cron nếu bạn có quyền SSH: lệnh wp cron event run --all giúp chạy toàn bộ tác vụ ngay lập tức.
Câu Hỏi Thường Gặp Về WordPress Cron Không Chạy

Tại sao wp-cron.php bị chặn trên hosting của tôi?
Một số host chạy mod_security hoặc WAF (Web Application Firewall) coi request đến wp-cron.php là hành vi bất thường. Liên hệ support để whitelist file này. Bạn cũng có thể đổi tên file wp-cron.php sau khi đã cấu hình cron job với tên mới, nhưng không khuyến khích nếu không rõ kỹ thuật.
Làm sao để biết cron đã chạy thành công?
Dùng plugin WP Crontrol xem cột “Last Run”. Nếu thời gian đó gần với thời điểm hiện tại (sai lệch vài phút), cron đang hoạt động. Kiểm tra thêm log server để chắc chắn không có lỗi PHP.
WordPress cron có thể chạy quá nhiều lần một ngày không?
Có. Mỗi lần có request, WP-Cron kiểm tra và thực thi tác vụ quá hạn. Nếu site có lưu lượng lớn, cron có thể chạy hàng trăm lần mỗi giờ, gây hao tài nguyên. Khi đó nên chuyển sang server cron với tần suất hợp lý (ví dụ 5-15 phút) để kiểm soát.
Có thể dùng plugin nào để debug cron tốt nhất?
WP Crontrol là plugin hàng đầu với hơn 200.000 lượt kích hoạt, cho phép xem, thêm, sửa, xóa và chạy thủ công cron events. Advanced Cron Manager cũng tốt nhưng nặng hơn. Debug Bar with Cron Extension là lựa chọn cho developer.
Nếu đã dùng server cron nhưng cron vẫn không chạy thì sao?
Kiểm tra lỗi trong crontab: dùng lệnh crontab -l trên SSH, bảo đảm đường dẫn URL chính xác. Thử đổi lệnh từ wget sang curl hoặc ngược lại. Xem log cron của server (thường ở /var/log/cron) để biết trạng thái thực thi.
Kết Luận
WordPress cron không chạy là vấn đề kỹ thuật phổ biến nhưng hoàn toàn có thể khắc phục nếu bạn hiểu rõ cơ chế giả cron của WordPress. Nguyên nhân chính thường đến từ thiếu traffic, xung đột plugin, hoặc thiết lập hosting hạn chế. Giải pháp server cron job hoặc dịch vụ cron bên thứ ba là lựa chọn tối ưu cho đa số trường hợp, đặc biệt với các site có lưu lượng thấp và yêu cầu độ tin cậy cao.
Hãy bắt đầu bằng việc kiểm tra dấu hiệu, xác nhận cron đã thực sự dừng, sau đó áp dụng các bước từ đơn giản đến phức tạp. Đừng quên backup dữ liệu trước mỗi can thiệp và kiểm tra log sau khi sửa. Với hướng dẫn chi tiết trong bài, bạn hoàn toàn có thể tự mình khắc phục tình trạng wordpress cron không chạy một cách triệt để.
- Plugin WordPress Làm Chậm Website: Danh Sách Đen Và Cách Nhận Diện
- WordPress XMLRPC Conflict: Nguyên Nhân, Hậu Quả và Cách Khắc Phục Toàn Diện
- WordPress Global Styles là gì? Hướng dẫn chi tiết từ A-Z cho người mới bắt đầu
- Theme WordPress Development Là Gì? Hướng Dẫn Toàn Diện Từ A-Z Cho Người Mới Bắt Đầu
- Cấu trúc Landing Page Elementor: Bí quyết xây dựng trang đích chuyển đổi cao từ A đến Z














