Cron là một tiện ích quan trọng trong Unix/Linux, thường được sử dụng để chạy lệnh hoặc script trên máy chủ web ở chế độ nền. Điều này giúp thực hiện các công việc định kỳ vào những thời điểm cố định, ngày hoặc khoảng thời gian. Bằng cách sử dụng cron một cách lặp lại đều đặn, bạn sẽ tiết kiệm được rất nhiều thời gian. Trong WordPress, bạn có thể dễ dàng cài đặt cron bằng plugin WP-Cron, một giải pháp mô phỏng hệ thống cron.
Hôm nay, chúng ta sẽ tìm hiểu cách tạo, chỉnh sửa và chạy một công việc định kỳ trong WordPress. Dưới đây là các phần mà chúng ta sẽ khám phá:
Contents
Thiết lập một WordPress Cron Job
WP-Cron khác biệt với hệ thống cron của Linux và nó cũng có ưu và nhược điểm riêng. Ví dụ, WP-Cron hoàn toàn dựa trên khoảng thời gian, trong khi cron của Linux dựa vào thời điểm cụ thể. WP-Cron chỉ hoạt động khi trang web được tải (trang back-end hoặc trang front-end), do đó, nó có thể không đáng tin cậy cho mọi tình huống. Khoảng thời gian mặc định được cung cấp bởi WordPress bao gồm hourly, twicedaily và daily.
Để lập kế hoạch cho sự kiện WP-Cron, chúng ta sử dụng hook tùy chỉnh. Chúng tôi khuyến nghị bạn nên tham khảo hướng dẫn chi tiết của plugin để quản lý các sự kiện cron. Nếu bạn đang tìm kiếm một cách khác để thiết lập một hệ thống cron với WordPress, bạn có thể đọc bài viết của Tom Mcfarlin về cách tạo một công việc cron trong WordPress. Đối với người dùng thông thường, chúng ta sẽ tìm hiểu cách sử dụng đơn giản WP-Cron với plugin miễn phí WP Crontrol. Plugin này cho phép bạn xem và kiểm soát các hoạt động của hệ thống WP-Cron.
WP Crontrol hiện đang có hơn 80.000 lượt cài đặt, đạt 4,9 trên 5 điểm đánh giá ấn tượng. Nhiều người trong cộng đồng WordPress thực sự yêu thích plugin này. Bạn có thể tải xuống nó từ kho WordPress hoặc truy cập vào menu “plugins > Add New”. Dưới đây là một số tính năng của plugin:
- Khả năng xem thông tin về tất cả các sự kiện cron, bao gồm cả tham số, chu kỳ và thông báo thời gian chạy.
- Chỉnh sửa, xóa và chạy ngay lập tức bất kỳ sự kiện cron nào.
- Thêm sự kiện cron mới.
- Thêm, chỉnh sửa và xóa lịch chạy cron.
Lịch trình WP-Cron
Sau khi kích hoạt plugin, bạn có thể thay đổi lịch trình cron tại cài đặt “Cron Schedules”. Plugin cung cấp cho bạn một lịch trình mặc định hàng tuần. Bạn cũng có thể thêm các khoảng thời gian tùy chỉnh khác theo ý muốn bằng cách sử dụng đoạn mã PHP, ví dụ như:
add_filter( 'cron_schedules', 'example_add_cron_interval' );
function example_add_cron_interval( $schedules ) {
$schedules['five_seconds'] = array(
'interval' => 5,
'display' => esc_html__( 'Mỗi năm lễ hội' ),
);
return $schedules;
}
Sự kiện WP-Cron
Chúng ta cũng có thể xem danh sách các công việc hiện tại đã được lên lịch. Để làm điều này, truy cập vào “Tools > Cron Events”. Nhiều sự kiện có tên giống với tên của các plugin, giúp bạn dễ dàng nhận biết khi nghiên cứu về các sự kiện liên quan đến plugin bạn đang làm việc, ví dụ như “woocoomerce_cleanup_sessions” hoặc “gravityforms_cron”.
Để chạy một sự kiện Cron ngay lập tức, chỉ cần nhấp vào “Run Now” bên cạnh tên sự kiện. Điều này rất hữu ích khi debug các vấn đề trước khi triển khai lên trang web thực tế.
Sửa sự kiện Cron
Bạn cũng có thể sửa đổi các sự kiện Cron hiện có bằng cách nhấp vào “Edit” bên cạnh tên sự kiện. Sau đó, bạn có thể thay đổi tên sự kiện, tham số, thời gian chạy và chu kỳ lặp lại theo lịch trình.
Thêm sự kiện Cron
Bạn cũng có thể thêm sự kiện Cron. Ví dụ, chúng ta sẽ thêm một công việc cho plugin Disqus. Nhiều người có thể muốn làm điều này để thay đổi tần suất đồng bộ hóa hoặc nếu họ gặp vấn đề với ý kiến đồng bộ qua lại. Trong tài liệu phát triển của plugin, nó nên cung cấp tên sự kiện cron của họ, hoặc chính xác là tên hành động. Trong trường hợp này, tên sự kiện là “dsq_sync_forum”.
Nếu bạn tạo cron từ đầu, mỗi hành động sẽ yêu cầu một hàm xử lý thông qua action hook cho hành động tương ứng trong mã của bạn, ví dụ như tập tin functions.php trong thư mục giao diện. Ví dụ:
add_action( 'my_hookname', 'my_function' );
function my_function() {
wp_mail( '[email protected]', 'WP Crontrol', 'WP Crontrol rocks!' );
}
Đối với Disqus, chúng ta sẽ thêm một lịch trình cron trong khoảng 600 giây (10 phút). Để bắt đầu, hãy nhấp vào “Add Cron Event”, nhập “dsq_sync_forum” làm tên hành động, chọn thời gian chạy và chọn chu kỳ 10 phút. Sau đó, nhấp vào “Add Cron Event” để thêm cron mới. Bây giờ cron sẽ chạy tự động sau mỗi 10 phút để đồng bộ hóa nhận xét Disqus vào cơ sở dữ liệu WordPress.
Thật dễ dàng, phải không?
WP-Cron WP-CLI
Bạn cũng có thể quản lý sự kiện WP-Cron thông qua dòng lệnh WP-CLI. Ví dụ, những lệnh sau sẽ cung cấp cho bạn danh sách các sự kiện cron hiện tại:
wp cron event list
Ngoài ra, bạn có thể tìm hiểu thêm về lệnh và các thông số đi kèm trong hướng dẫn WP-CLI cron job.
Chúc bạn thành công!