Lên lịch xử lí sự kiện trong WordPress không sử dụng Plugin

Nếu bạn muốn tự động hóa một tác vụ nào đó trong WordPress – như cập nhật dữ liệu, gửi email, dọn dẹp database… – bạn có thể sử dụng hệ thống Cron tích hợp sẵn mà không cần cài thêm plugin. Bài viết này sẽ hướng dẫn bạn cách thiết lập lịch chạy sự kiện tùy chỉnh (Custom Cron Schedule) đơn giản bằng mã nguồn.

Lên lịch xử lí sự kiện trong WordPress không sử dụng Plugin

Cách hoạt động của WordPress Cron

WordPress Cron không giống với Cron Job truyền thống trên máy chủ. Nó phụ thuộc vào lượt truy cập của người dùng để “kích hoạt” việc kiểm tra và thực thi các tác vụ đã lên lịch.

Nếu website của bạn có ít traffic, các tác vụ cron có thể bị chậm hoặc không chạy đúng giờ.

Lên lịch

Ví dụ sau xử lí một sự kiện mỗi 3 tiếng một lần.

/**
 * Thêm lịch chạy cron mỗi 3 tiếng
 */
add_filter( 'cron_schedules', function( $schedules ) {
    $schedules['every_three_hours'] = array(
        'interval' => 3 * HOUR_IN_SECONDS,
        'display'  => __( 'Mỗi 3 tiếng', 'textdomain' ),
    );
    return $schedules;
});

/**
 * Lên lịch cron job nếu chưa tồn tại
 */
add_action( 'init', function() {
    if ( ! wp_next_scheduled( 'do_every_three_hours' ) ) {
        wp_schedule_event( current_time( 'timestamp' ), 'every_three_hours', 'do_every_three_hours' );
    }
});

/**
 * Hàm xử lý khi cron chạy
 */
add_action( 'do_every_three_hours', 'every_three_hours_event_func' );
function every_three_hours_event_func() {
    // Thực hiện công việc định kỳ tại đây
}

Quản lí sự kiện

Để quản lí sự kiện, các bạn có thể sử dụng plugin WP Crontrol.

Tải về

Sau khi kích hoạt, các bạn vào Công cụCron Events để quản lí sự kiện.

cron-events

Một số ví dụ khác

Lên lịch sự kiện mỗi 30 phút

/**
 * Đăng ký lịch cron chạy mỗi 30 phút
 */
add_filter( 'cron_schedules', function( $schedules ) {
    $schedules['every_30_minutes'] = array(
        'interval' => 30 * MINUTE_IN_SECONDS,
        'display'  => __( 'Mỗi 30 phút', 'textdomain' ),
    );
    return $schedules;
});

/**
 * Lên lịch nếu chưa tồn tại
 */
add_action( 'init', function() {
    if ( ! wp_next_scheduled( 'do_every_30_minutes' ) ) {
        wp_schedule_event( current_time( 'timestamp' ), 'every_30_minutes', 'do_every_30_minutes' );
    }
});

/**
 * Thực thi tác vụ mỗi 30 phút
 */
add_action( 'do_every_30_minutes', 'do_every_30_minutes_func' );
function do_every_30_minutes_func() {
    // Thực hiện công việc định kỳ ở đây
}

Hàng ngày

/**
 * Lên lịch cron hằng ngày
 */
add_action( 'init', function() {
    if ( ! wp_next_scheduled( 'reset_data_everyday' ) ) {
        wp_schedule_event( current_time( 'timestamp' ), 'daily', 'reset_data_everyday' );
    }
});

/**
 * Thực thi công việc hằng ngày
 */
add_action( 'reset_data_everyday', function() {
    // Làm gì đó mỗi ngày
});

Hàng tuần

/**
 * Lên lịch cron hàng tuần
 */
add_action( 'init', function() {
    if ( ! wp_next_scheduled( 'update_data_every_week' ) ) {
        wp_schedule_event( current_time( 'timestamp' ), 'weekly', 'update_data_every_week' );
    }
});

/**
 * Thực thi công việc hàng tuần
 */
add_action( 'update_data_every_week', function() {
    // Làm gì đó mỗi tuần
});

Các sự kiện hàng giờ (hourly), 2 lần một ngày (twicedaily), hàng ngày (daily), hàng tuần (weekly) được WordPress tích hợp sẵn, bạn không cần khai báo lại.

Tổng kết

Hệ thống Cron nội bộ của WordPress rất mạnh và dễ dùng. Việc tự viết mã giúp bạn kiểm soát chính xác những gì cần thực hiện và khi nào thực hiện, đồng thời không phụ thuộc vào plugin bên ngoài.

Nếu bạn vận hành website có traffic ổn định và cần thực hiện tác vụ định kỳ, thì cron WordPress là một giải pháp đơn giản và hiệu quả.

Chúc các bạn thành công!

Bình luận


  • Không có bình luận.

Init Toolbox

Nhấn Ctrl + \ trên máy tính, hoặc vuốt sang trái ở bất kỳ đâu trên mobile.

Đăng nhập





Đang tải...