Xóa ảnh đính kèm khi xóa bài viết trong WordPress (no test)

571

Mặc định, khi bạn xóa một bài viết trong WordPress thì tất cả những ảnh đính kèm với bài viết đó vẫn được giữ nguyên trên máy chủ (hosting) dẫn đến dung lượng sử dụng gần như không giảm đi mấy – như vậy thật lãng phí tài nguyên vì trên thực tế bạn sẽ rất hiếm khi sử dụng lại những hình ảnh minh họa cho các bài viết mà bạn đã xóa.

Vậy làm thế nào để xóa ảnh đính kèm với một bài viết khi bài viết đó đã bị xóa ?

Cách 1:

Chỉnh sửa file functions.php trong thư mục themes của bạn (nằm trong thư mục wp-content/themes/[tên-theme-bạn-đang-sử-dụng]) và thêm vào đoạn code sau đây:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
function delete_post_attachments($post_id) {
global $wpdb;
$sql = "SELECT ID FROM {$wpdb->posts} ";
$sql .= " WHERE post_parent = $post_id ";
$sql .= " AND post_type = 'attachment'";
$ids = $wpdb->get_col($sql);
foreach ( $ids as $id ) {
wp_delete_attachment($id);
}
}
add_action('delete_post', 'delete_post_attachments');

Kể từ đó, mỗi khi bạn xóa 1 bài viết bất kỳ thì hệ thống sẽ tự động xóa cả những ảnh đính kèm với bài viết đó.

Lưu ý: Bạn nên cân nhắc và suy nghĩ thật kỹ trước khi sử dụng cách này bởi vì nếu bạn sử dụng 1 hình ảnh đính kèm cho nhiều bài viết thì sau khi bạn xóa 1 bài viết có đính kèm hình ảnh đó, các bài viết còn lại sẽ bị mất ảnh đính kèm.

Cách 2:

Sau khi xóa bài viết, bạn vào phần Media để quản lý các hình ảnh, files đính kèm (phần Media nằm ngay trên Menu bên trái, phía dưới Post).

Bạn sẽ nhìn thấy bộ lọc ngay dưới Media Library, chọn Unattached rồi ấn Filter để xem tất cả những hình ảnh, files không được đính kèm với bất kỳ bài viết nào.

Xem-unattached-images

Tại đây, bạn có thể xóa tất cả những hình ảnh, files không được đính kèm. So với cách thứ nhất, mặc dù bạn sẽ hơi mất công hơn một chút (vì phải làm thủ công) nhưng bù lại bạn sẽ không sợ xóa nhầm ảnh đính kèm của một bài viết khác.