私のウェブサイトには投稿を公開できる作者がたくさんいますが、そのうちの何人かは1Mより大きい画像をアップロードしています、そして私は最大アップロードサイズを500 kbに減らしたいです。
wp_handle_upload()
関数 で使用されているwp_handle_upload_prefilter
フックでは、特定のサイズ(または他の理由で)のアップロードを禁止できます。
それは渡されたファイル配列を取得します、それは PHP標準スーパーグローバル$_FILES
の中の一つの項目です: PHP Manual:POST method uploads 。
関数を作成してそれをフィルタに追加するだけです。あなたのフックの中で、filesizeをチェックし、$file['error']
をあなたのエラーメッセージに設定してください。
add_filter('wp_handle_upload_prefilter', function($file) {
$size = $file['size'];
if ($size > 500 * 1024) {
$file['error'] = '"Files larger than X bytes are prevented from uploads.';
}
return $file;
});
この方法では技術的にアップロードが許可されません。つまり、サーバーはまだユーザーのブラウザからファイルのアップロードデータを受信しています。それは後で捨てられるだけです。
サーバーレベルで特定のサイズのアップロードが行われないようにするには、使用する内容に応じてサーバーを適切に設定する必要があります。