Xóa hình ảnh (tệp) đã được tạo khi sử dụng add_image_size ()


7

Tôi đã thêm một kích thước hình ảnh bằng cách sử dụng này:

add_image_size('property-featured', 484, 393, true);

Nó hoạt động rất tốt trong năm qua và đã tạo ra khoảng 1GB hình ảnh ở kích thước đó, nhưng kích thước hình ảnh này không còn cần thiết nữa. Tôi muốn làm rõ những hình ảnh đã được tạo ra trong năm với kích thước này.

Cho đến nay tôi đã loại bỏ dòng mã đó nhưng nó không xóa sạch các hình ảnh được tạo.

Cách chính xác để loại bỏ những hình ảnh là gì?

Câu trả lời:


9

Tôi tìm thấy một plugin làm điều này cho tôi: Kích thước hình ảnh bổ sung (zui)

Khi bạn xóa một kích thước hình ảnh kích thước đó sẽ không được tạo cho tất cả các hình ảnh MỚI mà bạn tải lên. Tuy nhiên, hình ảnh được tạo cho các kích thước đã xóa vẫn tồn tại trên máy chủ cũng như siêu dữ liệu đính kèm hình ảnh cho các kích thước đó. Tính năng này sẽ xóa vật lý những hình ảnh đó khỏi máy chủ cũng như dữ liệu meta tệp đính kèm hình ảnh cho các kích thước đó. Sử dụng tính năng này có nguy cơ của riêng bạn. Không có hoàn tác.

Cập nhật

Mặc dù plugin hoạt động rất tuyệt vời và đã dọn dẹp rất nhiều nhưng nó không thể dọn sạch các tệp bị bỏ lại bởi các hình ảnh đã bị xóa khỏi WordPress trong quá khứ. Tôi đã sử dụng tập lệnh brew home này để dọn sạch một số hình ảnh còn sót lại:

<?php
$files = find_all_files("/home/****/public_html/wp-content/uploads");
$files2 = array();

foreach($files as $key => $file) {
    if(1 == preg_match("#150x\d+\.jpg$#", $file)) {
        $files2[] = $file;
        unlink($file);
    }elseif(1 == preg_match("#300x\d+\.jpg$#", $file)) {
        $files2[] = $file;
        unlink($file);
    }elseif(1 == preg_match("#\d+\x300.jpg$#", $file)) {
        $files2[] = $file;
        unlink($file);
    }elseif(1 == preg_match("#\d+\x150.jpg$#", $file)) {
        $files2[] = $file;
        unlink($file);
    }elseif(1 == preg_match("#\d+\x1024.jpg$#", $file)) {
        $files2[] = $file;
        unlink($file);
    }
}


print_r($files2);


function find_all_files($dir) 
{ 
    $root = scandir($dir); 
    foreach($root as $value) 
    { 
        if($value === '.' || $value === '..') {continue;} 
        if(is_file("$dir/$value")) {$result[]="$dir/$value";continue;} 
        foreach(find_all_files("$dir/$value") as $value) 
        { 
            $result[]=$value; 
        } 
    } 
    return $result; 
} 
?>

2

Tôi sử dụng http://wordpress.org/extend/plugins/regenerate-thumbnails/ để tạo lại hình thu nhỏ của mình, theo như tôi biết nó sẽ xóa tất cả các kích thước hình ảnh sau đó tạo lại chúng. Nó có thể chậm một lần tùy thuộc vào số lượng hình ảnh + kích thước hình ảnh được giới thiệu lại.

Một cách khác là làm điều này thông qua SSH và tìm chúng bằng một lệnh như:

find ./uploads/*  -iname '*-484x393.*' -ls

Sau đó chạy một lệnh như:

find ./uploads/*  -iname '*-484x393.*' -exec rm {} \;

Hãy chắc chắn rằng bạn sao lưu mọi thứ trước khi chạy một lệnh như vậy.


2
Lúc đầu, tôi nghĩ rằng đó là một ý tưởng tốt nhưng khi tôi xem xét dữ liệu nào được lưu trữ thì hóa ra có cả đống dữ liệu meta được lưu trữ trong DB cho mỗi hình ảnh đã thay đổi kích thước. Xóa các hình ảnh theo cách này sẽ để lại dữ liệu không phải là những gì tôi đang theo dõi trên một trang web sản xuất.
Scott

Tôi đã xem qua các bảng meta WordPress và cơ sở mã, và không thể biết bạn đang nói về dữ liệu meta nào? Bạn có thể chỉ cho tôi những gì bạn đang nhìn thấy? Tôi có thể viết một plugin vào cuối tuần cho việc này, vì đó là một ý tưởng nhỏ khá hay. :)
Cristian

1
Không cần phải tạo một plugin như đã có một vài công bằng. Một cái tôi đã đề cập. Nhưng để tìm dữ liệu meta mà tôi đang nói đến: Tìm ID tệp đính kèm hình ảnh. Sau đó nhìn vào bảng postmeta và xem tất cả các hàng được đính kèm với tệp đính kèm đó. Một trong các hàng (không thể nhớ tên) có vô số dữ liệu được tuần tự hóa trong đó. Dữ liệu đó chứa đường dẫn đến tất cả các hình ảnh đã thay đổi kích thước và kích thước kết quả của chúng.
Scott
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.