Xóa bài viết sẽ tự động xóa luôn ảnh đính kèm – Attached Media
Trong WordPress mặc định khi bạn xóa 1 bài viết nào đó hình ảnh được chèn (Attached Media) vào trong bài viết (page, post, custom post type…) sẽ không bị xóa đi.
Trường hợp này có 2 câu hỏi được đông đảo người dùng đặt ra:
Áp dụng cho cả post page và product
Chúc các bạn thành công.
- Nếu xóa các ảnh được đính kèm vào bài đấy nhỡ ảnh bị xóa đấy có dùng ở các nơi khác thì sao?
- Xóa bài thì xóa luôn ảnh cho nhẹ web, đỡ ảnh thừa
Cập nhật mới 2023: Sau 1 thời gian khách hàng sử dụng và có feedback cho Vũ Trụ Số thì rút ra kết luận bạn nên sử dụng plugin DX Delete Attached Media để xóa bài viết sẽ tự động xóa luôn ảnh đính kèm – Attached Media nhé, DX Delete Attached Media hoạt động rất ok
I. 1. Delete Post with Attachments
Đây là một plugin vô cùng thông minh sẽ giúp bạn xóa các hình ảnh được chèn vào bài viết, Delete Post with Attachments giải quyết được 2 câu hỏi được nên ra ở đầu bài là khi bạn xóa bài đăng thì ảnh đính kèm (Attached Media) vào bài viết sẽ được xóa đi, tuy nhiên trước khi xóa plugin sẽ check xem hình ảnh đấy có được sử dụng ở một nơi nào khác hay không thì mới xóa (tuyệt vời) Bạn có thể tìm hiểu thêm về plugin và tải về Delete Post with Attachments tại đâyII. 2. DX Delete Attached Media
DX Delete Attached Media có nhiều lượt tải hơn so với Delete Post with Attachments DX Delete Attached Media sẽ không hỗ trợ check ảnh sử dụng nơi khác hay không mà xóa luôn ảnh đính kèm vào bài viết. Có thể nhiều người chưa biết đến Delete Post with Attachments hay chăng? (Tới đây bạn cũng hiểu là nên chọn plugin nào rồi nhé) Bạn có thể tìm hiểu thêm về DX Delete Attached Media tại đây Hy vọng plugin trên sẽ giúp ích cho nhiều cho chủ website loại bỏ đi các ảnh thừa khỏi website, ngoài ra nếu bạn muốn xóa ảnh thừa trên website cũng có thể tham khảo qua plugin Media Cleaner. Function dưới đây chỉ áp dụng với Post, áp dụng cho page hay product thì bạn thay chỗ post thành định dạng bài post cần nhé
1 2 3 4 5 6 7 8 9 10 11 12 13 14 |
add_action('before_delete_post', 'ngoinhaweb_delete_attached_media'); function ngoinhaweb_delete_attached_media($post_id) { // Kiểm tra xem post có phải là loại bài viết mà bạn muốn xóa ảnh đính kèm (ví dụ: post, page, etc.) if (get_post_type($post_id) == 'post') { // Lấy tất cả các đính kèm của bài viết $attachments = get_attached_media('', $post_id); // Lặp qua từng đính kèm và xóa chúng foreach ($attachments as $attachment) { wp_delete_attachment($attachment->ID, true); // Tham số thứ hai là "true" để xóa luôn file ảnh từ thư mục } } } |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 |
add_action('before_delete_post', 'ngoinhaweb_delete_attached_media'); function ngoinhaweb_delete_attached_media($post_id) { // Lấy loại bài viết của post hoặc page hoặc product $post_type = get_post_type($post_id); // Kiểm tra xem post_type có thuộc danh sách các loại bài viết cần xóa ảnh đính kèm hay không (ví dụ: post, page, product, ...) if (in_array($post_type, array('post', 'page', 'product'))) { // Lấy tất cả các đính kèm của bài viết $attachments = get_attached_media('', $post_id); // Lặp qua từng đính kèm và xóa chúng foreach ($attachments as $attachment) { wp_delete_attachment($attachment->ID, true); // Tham số thứ hai là "true" để xóa luôn file ảnh từ thư mục } } } |