WordPress 限制上傳圖片的尺寸

·

為了維護一個 WordPress 網站的品質,限制上傳圖片尺寸的大小,是一個必要的工作;圖片尺寸過大,影響網站開啟的速度,圖片尺寸過小,影響了圖片展現的品質。

當網頁設計師完成 WordPress 網站後,要交案給客戶後,爾後的文章更新的動作,都是客戶來執行的話,限制上傳圖片尺寸的大小,就是一個很重要的事情。

內容目錄:

客戶可能無法了解一張圖片尺寸寬與高的像素 (pixels) 多少才適合,可能從相機拍攝後就直接上傳到網站,沒有先在 PC 美工軟體上做適當尺寸的擷取,5400 px X 5400 px 的照片就上傳 WordPress 媒體庫,日積月累下來,/ wp-content / uploads 裡的圖檔越來越大,網站 Load time 時間就越來越久。

如何限制上傳圖片尺寸

網路上有的教法是用 php.ini 的 upload_max_filesize 設置來控制上傳圖片的檔案大小,如果客戶的網站單獨使用一台 VPS,這樣的方法是簡單可行。

如果一台 VPS 裡面有不同的客戶網站,php.ini 的配置是影響所有的網站,若 upload_max MB 設置太小,外掛都無法安裝;若 upload_max MB 設置太大,又沒有達到效果。

所以,使用 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;
}

該代碼會對用戶進行限制,如果上傳的圖片最小或最大寬度或高度達不到要求,就會限制上傳和進行提示,如下圖:

Minimum Upload Images
Mazimum Upload Images

參考資料:

How to Require a Minimum Image Dimension for Uploading

Limit image resolution on upload

hosted by kinsta

Comments

發佈留言

發佈留言必須填寫的電子郵件地址不會公開。 必填欄位標示為 *

Hey, 想嘗試 Kinsta 主機嗎?

18748

Kinsta 高效能主機

wPowered Starter 方案

馬上訂購

18749
Your Mastodon Instance