
重點整理
網站有多位編輯時,可以在子主題的 functions.php 加入兩段函數:只讓管理員不受限制,其他角色上傳圖片時檢查寬度與高度,小於設定值就顯示錯誤訊息並拒絕上傳。數值單位是 px,修改後請用編輯帳號實際測試。
WordPress 自訂媒體庫 有很多種形式,在本篇教學中所要分享的是使用函數來限制上傳圖片大小,目的是為了讓網站中顯示的圖片具有同樣的尺寸比例,統一圖片顯示樣式,尤其是網站具有不同的內容編輯人員時,指定媒體庫中上傳圖片的長寬限制,能有效避免非網站技術人員隨意上傳不符合標準的圖片,當然同樣也是給編輯們的提示,必須要合乎圖片尺寸規範,才能完成上傳圖片的動作。
在以下內容中鵠學苑將提供兩組 function ,只需要修改圖片長寬數值並加入到主題編輯器中,就能完成限制媒體庫上傳圖片尺寸的動作,過程非常簡單,希望能幫助到有需要的朋友。
functions 函數說明與媒體庫限制圖片尺寸功能測試
第一步:下方的 functions 分為兩個部分,在 limit_upload_small_images 中定義篩選出管理員權限,並在所有身份登入時觸發限制條件,目的是只保留網站管理員具有上傳任何尺寸圖片的能力,而其他權限(編輯、寫手等…)將受到限制。
第二部分 limit_upload 則是使用 if 條件式來做命令執行確認,首先在上傳檔案動作發生時,必須先確認檔案是否為圖片格式,如果是的話將回傳 $file 為 img ,並提取 img 尺寸的值,做為下方 $minimum 陣列中所定義的寬度與高度數值的相對比較,最後再以 if 條件是來設置當寬度與高度小於 array 設定的數值時,將返回 error 錯誤訊息,並顯示之前提取 img 的長寬值。
第二步:開啟外觀中的主題編輯器,切換到子主題後找到 functions.php 檔案,將提供的函數貼入至結尾處,請記得將 width 及 height 的值替換成你想要限制的數字,單位是以 px 計算,另外警告訊息中文字的部分也可以做修改,盡量在文字編輯器中修改完成後再貼到主題編輯器中,因為在 functions.php 中直接輸入中文容易在更新時發生錯誤,完成後點選更新檔案。

第三步:筆者新增一個權限為編輯的角色作為測試。

第四步:上傳寬度小於 640px 的圖片,將會顯示如下圖標示的錯誤訊息。

加入函數前要注意什麼?
這段程式碼會在每次上傳檔案時執行,加入前請先確認:
- 寫在子主題:放在子主題 functions.php 或程式碼片段外掛,避免主題更新時被覆蓋。
- 先備份:保留原本的 functions.php,並確認能用 FTP 或主機檔案管理員修改檔案,萬一語法錯誤才能還原。
- 只檢查圖片:函數要先判斷檔案類型,PDF、影片等非圖片檔不應被尺寸限制擋下。
- 錯誤訊息寫清楚:直接寫出最小寬高,例如「圖片寬度至少需要 1200 像素」,編輯才知道怎麼修正。
尺寸限制要設多少比較合適?
最小尺寸應依網站實際顯示的最大寬度來決定,而不是隨意設定:
- 精選圖片:先查佈景主題文章頁大圖的顯示寬度,再考慮高解析度螢幕,常見做法是設為顯示寬度的 1.5 到 2 倍。
- 社群分享圖:若精選圖片也當作分享縮圖,可參考 1200 × 630 像素這類常見分享尺寸。
- 長寬比:如果版面要求圖片比例一致,只限制最小寬高還不夠,可以再加上比例判斷,或在主題中用 CSS 統一裁切。
設定太嚴格會讓編輯一直被擋,先觀察常用的圖片尺寸再調整。
常見問題
WordPress 可以限制上傳圖片的最小尺寸嗎?
WordPress 沒有內建這個選項,但可以用 wp_handle_upload_prefilter 篩選器在上傳時檢查圖片寬高,小於設定值就回傳錯誤訊息並拒絕上傳。本文提供的函數就是這種做法,加入子主題 functions.php 即可。
為什麼要讓管理員不受尺寸限制?
因為管理員偶爾需要上傳小尺寸的檔案,例如 Logo、網站圖示或小 icon。函數先判斷登入者的角色,只有編輯、作者等角色才檢查尺寸,管理員就不會被擋。
可以改成限制圖片的最大尺寸嗎?
可以,把判斷條件從「小於」改為「大於」即可擋下過大的圖片。不過 WordPress 5.3 起會自動把超過 2560 像素的大圖另存縮小版,通常更常見的需求反而是限制檔案大小或在上傳前先壓縮。
