web-dev-qa-db-ja.com

メディアのアップロードを制限しますか?

私はオンラインで検索していて、メディアアップロードのファイルサイズを 増加 ファイルサイズにする方法だけを見ています。これはphp.iniを使用する方法を知っています。

クライアントと彼の仲間は理解するのに苦労しています:あなたのサイトは永遠にロードされるので、1MBを超える画像をアップロードしないでください。

サイズが8 MBを超える画像をアップロードし続けているため、サイト全体の読み込みに30秒以上かかります。それは恐ろしいことです。

それで私は考えていました - もしテーマとプラグインをアップロードする能力に影響を与えるであろう一般的なupload_max_filesizeに影響を与えずに画像のアップロードを1 MB程度に制限することが可能なら。

これができるなら何か考えはありますか?

6
dingo_d

はい、wp_handle_upload_prefilterを使用すると、特定の条件が満たされていない場合にアップロード処理を中止できます。

あなたの場合は、このコードスニペットを試すことができます:

function limit_upload_size( $file ) {

    // Set the desired file size limit
    $file_size_limit = 1024; // 1MB in KB

    // exclude admins
    if ( ! current_user_can( 'manage_options' ) ) {

        $current_size = $file['size'];
        $current_size = $current_size / 1024; //get size in KB

        if ( $current_size > $file_size_limit ) {
            $file['error'] = sprintf( __( 'ERROR: File size limit is %d KB.' ), $file_size_limit );
        }

    }

    return $file;

}
add_filter ( 'wp_handle_upload_prefilter', 'limit_upload_size', 10, 1 );

それが役に立てば幸い!

6
Capiedge

upload_size_limitにフックして、最大ファイルサイズを設定できます。

// Change the upload size to 1MB
add_filter( 'upload_size_limit', 'wpse_228300_change_upload_size' ); 
function wpse_228300_change_upload_size()
{
    return 1000 * 1024;
}
3

私にとってこれは素晴らしい作品です!

  function my_max_image_size( $file ) {
  $size = $file['size'];
  $size = $size / 1024;
  $type = $file['type'];
  $is_image = strpos( $type, 'image' ) !== false;
  $limit = 750;
  $limit_output = '750kb';
  if ( $is_image && $size > $limit ) {
    $file['error'] = 'Image files must be smaller than ' . $limit_output;
  }
  return $file;
}
add_filter( 'wp_handle_upload_prefilter', 'my_max_image_size' );
0