Tối ưu hóa dung lượng lưu trữ: Tự động xóa ảnh khi xóa sản phẩm trong WooCommerce
Trong quản trị website thương mại điện tử, việc xóa bỏ các sản phẩm không còn kinh doanh là thao tác thường xuyên. Tuy nhiên, một vấn đề kỹ thuật phổ biến là WooCommerce không tự động loại bỏ các tệp hình ảnh đính kèm trong thư viện Media khi sản phẩm bị xóa. Theo thời gian, lượng "dữ liệu rác" này sẽ chiếm dụng đáng kể dung lượng lưu trữ trên máy chủ, gây ảnh hưởng đến hiệu suất vận hành và tốc độ sao lưu dữ liệu.
Thay vì sử dụng các plugin bên thứ ba có thể làm nặng hệ thống, đội ngũ kỹ thuật tại STAR WAR Digital Solutions khuyến nghị giải pháp can thiệp trực tiếp vào mã nguồn. Phương pháp này đảm bảo quy trình dọn dẹp diễn ra tự động, chính xác và không gây tiêu tốn tài nguyên máy chủ.
Giải pháp kỹ thuật tối ưu
Để triển khai tính năng này, bạn cần thêm đoạn mã dưới đây vào tệp functions.php của theme đang sử dụng. Chúng tôi đặc biệt khuyến nghị bạn nên thực hiện thao tác này trên Child Theme để đảm bảo tính ổn định khi cập nhật giao diện.
/* Tự động xóa ảnh đính kèm khi xóa sản phẩm */
function delete_all_attached_media( $post_id ) {
if ( get_post_type($post_id) == "product" ) {
$attachments = get_attached_media( '', $post_id );
foreach ($attachments as $attachment) {
wp_delete_attachment( $attachment->ID, true );
}
}
}
add_action( 'before_delete_post', 'delete_all_attached_media' );
Cơ chế vận hành của mã nguồn
Đoạn script trên tận dụng các hook và hàm cốt lõi của WordPress để thực hiện quy trình dọn dẹp tự động:
- Hook
before_delete_post: Kích hoạt hàm xử lý ngay tại thời điểm lệnh xóa sản phẩm được thực thi, đảm bảo dữ liệu đính kèm được xử lý trước khi bản ghi sản phẩm biến mất. - Kiểm tra Post Type: Hàm
get_post_typegiúp giới hạn phạm vi tác vụ chỉ áp dụng cho "product", đảm bảo an toàn cho các bài viết hoặc trang nội dung khác trên website. - Truy xuất và Xóa: Sử dụng
get_attached_mediađể quét toàn bộ tệp đính kèm liên quan đến ID sản phẩm, sau đó dùngwp_delete_attachmentđể xóa vĩnh viễn tệp tin khỏi máy chủ.
Lưu ý về quản trị hệ thống
Việc xóa dữ liệu là thao tác không thể hoàn tác. Trước khi áp dụng bất kỳ thay đổi nào vào tệp functions.php, hãy đảm bảo bạn đã thực hiện sao lưu (backup) cơ sở dữ liệu và mã nguồn website để phòng ngừa các rủi ro phát sinh.
Việc duy trì một cơ sở dữ liệu tinh gọn là bước nền tảng để đảm bảo hệ thống vận hành trơn tru. Nếu doanh nghiệp của bạn đang gặp khó khăn trong việc tối ưu hóa hiệu suất website hoặc cần xây dựng hạ tầng thương mại điện tử chuyên nghiệp, hãy liên hệ với STAR WAR Digital Solutions để nhận được các giải pháp kỹ thuật tối ưu nhất.