為了維護一個 WordPress 網站的品質,限制上傳圖片尺寸的大小,是一個必要的工作;圖片尺寸過大,影響網站開啟的速度,圖片尺寸過小,影響了圖片展現的品質。
當網頁設計師完成 WordPress 網站後,要交案給客戶後,爾後的文章更新的動作,都是客戶來執行的話,限制上傳圖片尺寸的大小,就是一個很重要的事情。
客戶可能無法了解一張圖片尺寸寬與高的像素 (pixels) 多少才適合,可能從相機拍攝後就直接上傳到網站,沒有先在 PC 美工軟體上做適當尺寸的擷取,5400 px X 5400 px 的照片就上傳 WordPress 媒體庫,日積月累下來,/ wp-content / uploads 裡的圖檔越來越大,網站 Load time 時間就越來越久。
網路上有的教法是用 php.ini 的 upload_max_filesize 設置來控制上傳圖片的檔案大小,如果客戶的網站單獨使用一台 VPS,這樣的方法是簡單可行。
所以,使用 WordPress 佈景的 functions.php 文件來控制圖片尺寸的大小,是比較好的做法。
為了保證網站文章的質量,需要限制其用戶上傳圖片的最小及最大寬度和高度。將下面的代碼添加到當前主題的 functions.php 最後面即可:
最小及最大寬度和高度請依網站實際需求自行調整
/** * WordPress 限制上傳圖片的最小及最大的寬度和高度 * https://yungke.me/wordpress-maximum-require-image-size/ */ add_filter('wp_handle_upload_prefilter','mdu_validate_image_size'); function mdu_validate_image_size( $file ) { $image = getimagesize($file['tmp_name']); $minimum = array( 'width' => '400', 'height' => '400' ); $maximum = array( 'width' => '1600', 'height' => '1600' ); $image_width = $image[0]; $image_height = $image[1]; $too_small = "圖片尺寸太小。 最小尺寸是 {$minimum['width']} by {$minimum['height']} pixels. 上傳的圖片尺寸是 $image_width by $image_height pixels."; $too_large = "圖片尺寸太大。 最大尺寸是 {$maximum['width']} by {$maximum['height']} pixels. 上傳的圖片尺寸是 $image_width by $image_height pixels."; if ( $image_width < $minimum['width'] || $image_height < $minimum['height'] ) { // add in the field 'error' of the $file array the message $file['error'] = $too_small; return $file; } elseif ( $image_width > $maximum['width'] || $image_height > $maximum['height'] ) { //add in the field 'error' of the $file array the message $file['error'] = $too_large; return $file; } else return $file; }
該代碼會對用戶進行限制,如果上傳的圖片最小或最大寬度或高度達不到要求,就會限制上傳和進行提示,如下圖:
參考資料:
How to Require a Minimum Image Dimension for Uploading
Limit image resolution on upload
Featured Photo by FelixMittermeier on pixabay
- WooWP 黑色星期五優惠 - 2020-11-12
- WordPress Multisite 的重定向 Redirect 規則 - 2020-11-02
- 舊 WordPress 安裝 Multisite 子目錄解決方式 - 2020-10-25