Chào mừng đến với Huu's Blog

Đây là blog chia sẻ những kiến thức mà tôi đã học được trong quá trình học tập và làm việc.

Kho ứng dụng với nhiều phần mềm đã được crack thoải mái cho anh em lựa chọn, vào tab ứng dụng miễn phí để tải về nhé. Nhớ làm nhiệm vụ nhé. hehe
Khophanmem
Khophanmem
Mình đang hoạt động trong lĩnh vực Marketing chuyên về sàn thương mại điện tử, bạn cần giúp đỡ hoặc hợp tác trong công việc nhắn trực tiếp giúp mình nhé. Đây là zalo của mình: 0352383048
Nam Hà
Nam Hà
Chuyên môn của mình là Google Ads, ae cần liên hệ nhắn mình nhé
Nguyễn Hiền
Nguyễn Hiền
Anh em cần gì liên hệ mình nhé, có tất cả những thứ anh em cần
Nguyễn Hữu
Nguyễn Hữu
Lĩnh vực chuyên môn của mình là Google Ads, tối ưu chuyển đổi và gia tăng hiệu quả quảng cáo với ngân sách hợp lý. Mình không chỉ giúp khách hàng chạy quảng cáo ra đơn, mà còn xây dựng chiến lược từ khóa, cấu trúc chiến dịch, tối ưu mẫu quảng cáo và landing page để mỗi đồng chi phí bỏ ra đều đáng giá. Nếu bạn đang chạy quảng cáo mà vẫn chưa hiệu quả, inbox mình – mình có thể giúp bạn nhìn ra vấn đề
Thanh Hương
Thanh Hương
Mình chuyên về SEO website và Facebook Ads. Mọi người cần hỗ trợ nhắn giúp mình nhé.
Thanh Ngân
Thanh Ngân

Tự động hủy đơn hàng WooCommerce sau 1 giờ nếu không thanh toán

Code function

Bạn copy đoạn code sau đây vào file functions.php

function coderlor_cancel_failed_pending_order_event( $order_id ) {
   if ( ! wp_next_scheduled( 'coderlor_cancel_failed_pending_order_after_one_hour', array( $order_id ) ) ) {
      wp_schedule_single_event( time() + 3600, 'coderlor_cancel_failed_pending_order_after_one_hour', array( $order_id ) );
   }
}

add_action( 'coderlor_cancel_failed_pending_order_after_one_hour', 'coderlor_cancel_order' );

function coderlor_cancel_order( $order_id ) {
   $order = wc_get_order( $order_id );
   wp_clear_scheduled_hook( 'coderlor_cancel_failed_pending_order_after_one_hour', array( $order_id ) );
   if ( $order->has_status( array( 'pending' ) ) ) { 
      $order->update_status( 'cancelled', 'Tự động huỷ đơn hàng sau 1h nếu không được thanh toán' );
   }
}

Giải thích code

Khi đơn hàng có trạng thái pending (woocommerce_order_status_pending), hàm coderlor_cancel_failed_pending_order_event sẽ được kích hoạt.

Hàm coderlor_cancel_failed_pending_order_event sẽ kiểm tra xem đã có sự kiện huỷ nào được lên lịch cho đơn hàng chưa. Nếu chưa, nó sẽ tạo một sự kiện trì hoãn (delay) sau 1 giờ bằng wp_schedule_single_event.

Sau đúng 1 giờ, nếu đơn hàng vẫn chưa được thanh toán (tức vẫn ở trạng thái pending), WordPress sẽ gọi hàm coderlor_cancel_order.

Hàm coderlor_cancel_order sẽ:

  • Lấy đối tượng đơn hàng qua ID.
  • Xoá lịch trình sự kiện đã tạo cho đơn hàng này (tránh lặp lại).
  • Nếu đơn hàng vẫn còn trạng thái pending, sẽ cập nhật sang trạng thái cancelled, kèm theo lý do: “Tự động huỷ đơn hàng sau 1h nếu không được thanh toán”.

Chỉ đơn giản thế thôi. Chúc bạn thành công !

I'm here !