Việc quản lý kích thước ảnh trong WordPress là yếu tố quan trọng giúp tối ưu hóa tốc độ tải trang và dung lượng lưu trữ. Trong bài viết này, chúng tôi sẽ hướng dẫn bạn cách resize hàng loạt ảnh trong thư mục uploads của WordPress bằng PHP hoặc Bash. Không chỉ giúp cải thiện hiệu suất trang web, phương pháp này còn giúp bạn tiết kiệm đáng kể không gian lưu trữ mà không cần cài thêm plugin. Cùng tìm hiểu chi tiết từng bước để triển khai hiệu quả ngay hôm nay!
Bạn có thể sử dụng PHP hoặc Bash để resize tất cả các ảnh trong thư mục /wp-content/uploads/2024/
. Dưới đây là hai cách để thực hiện:
Bạn có thể dùng thư viện GD hoặc Imagick để resize ảnh trong PHP. Dưới đây là ví dụ dùng GD:
<?php function resize_image($file, $new_width) { list($width, $height) = getimagesize($file); $new_height = ($height / $width) * $new_width; // Tính chiều cao mới giữ tỷ lệ khung hình $image = imagecreatefromjpeg($file); $new_image = imagecreatetruecolor($new_width, $new_height); imagecopyresampled($new_image, $image, 0, 0, 0, 0, $new_width, $new_height, $width, $height); imagejpeg($new_image, $file, 90); // Lưu ảnh với chất lượng 90% imagedestroy($image); imagedestroy($new_image); } $directory = __DIR__ . '/wp-content/uploads/2024/'; $images = new RecursiveIteratorIterator( new RecursiveDirectoryIterator($directory) ); foreach ($images as $image) { // Kiểm tra nếu file là ảnh .jpg if ($image->isFile() && strtolower($image->getExtension()) === 'jpg') { list($width, $height) = getimagesize($image->getPathname()); // Lấy kích thước ảnh if ($width > 800) { // Kiểm tra xem chiều rộng có lớn hơn 800 pixel không resize_image($image->getPathname(), 800); // Resize ảnh chỉ nếu chiều rộng lớn hơn 800px echo "Đã thay đổi kích thước: " . $image->getPathname() . "\n"; } else { echo "Chiều rộng của " . $image->getPathname() . " nhỏ hơn hoặc bằng 800 pixel, không thay đổi kích thước.\n"; } } } ?>
resize_image
: Không thay đổi, giữ nguyên chức năng thay đổi kích thước ảnh.RecursiveDirectoryIterator
: Dùng để duyệt qua các thư mục con. RecursiveIteratorIterator
cho phép bạn lặp qua tất cả các file trong thư mục gốc và các thư mục con của nó..jpg
trước khi thực hiện thao tác thay đổi kích thước.Bây giờ bạn có thể sử dụng đoạn mã này để thay đổi kích thước tất cả các file ảnh .jpg
trong thư mục cụ thể và cả các thư mục con của nó.
Nếu bạn có quyền truy cập SSH vào server, bạn có thể dùng lệnh ImageMagick để resize ảnh. Đầu tiên, cài đặt ImageMagick nếu chưa có:
sudo apt-get install imagemagick
Sau đó, bạn có thể chạy lệnh sau để resize tất cả các ảnh:
#!/bin/bash # Đặt đường dẫn tới thư mục ảnh directory="/path/to/wordpress/wp-content/uploads/2024" # Kiểm tra xem thư mục có tồn tại không if [ ! -d "$directory" ]; then echo "Thư mục không tồn tại: $directory" exit 1 fi # Tìm tất cả các ảnh .jpg trong thư mục và các thư mục con find "$directory" -type f -name "*.jpg" | while read -r img; do # Lấy chiều rộng của ảnh width=$(identify -format "%w" "$img") # Chỉ thay đổi kích thước nếu chiều rộng lớn hơn 800 pixel if [ "$width" -gt 800 ]; then convert "$img" -resize 800x "$img" echo "Đã thay đổi kích thước: $img" else echo "Chiều rộng của $img nhỏ hơn 800 pixel, không thay đổi kích thước." fi done
.jpg
trong thư mục /wp-content/uploads/2024/
với chiều rộng tối đa là 800px.convert
theo yêu cầu.Tạo file bash script, ví dụ resize-images.sh
.Thêm quyền thực thi:
chmod +x resize-images.sh
Chạy script:
./resize-images.sh
Cả hai cách trên đều giúp bạn resize tất cả các ảnh trong thư mục được chỉ định. Hãy chọn cách phù hợp với môi trường của bạn.