it-swarm.com.de

Limit für Medien-Upload festlegen?

Ich suche online und alles, was ich sehen kann, ist, wie ich die Dateigröße für das Hochladen von Medien erhöhen, was ich mit php.ini tun kann, aber was ich tun muss, ist die Dateigröße nur für das Hochladen von Medien zu begrenzen.

Der Kunde und seine Mitarbeiter haben Probleme mit dem Verständnis: Laden Sie keine Bilder hoch, die größer als 1 MB sind, da Ihre Website für immer geladen wird.

Sie laden weiterhin Bilder mit einer Größe von über 8 MB hoch, und das Laden der gesamten Site dauert über 30 Sekunden. Es ist schrecklich.

Ich habe mir überlegt, ob es möglich ist, das Hochladen von Bildern auf 1 MB zu beschränken, ohne den allgemeinen upload_max_filesize zu beeinflussen, der die Fähigkeit zum Hochladen von Themen und Plugins beeinflusst (und ich möchte nicht, dass dies geschieht).

Irgendeine Idee, ob dies getan werden kann?

6
dingo_d

Ja, Sie können den wp_handle_upload_prefilter verwenden, mit dem Sie den Upload-Vorgang abbrechen können, wenn eine bestimmte Bedingung nicht erfüllt ist.

In Ihrem Fall könnten Sie diesen Codeausschnitt versuchen:

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 );

Ich hoffe es hilft!

6
Capiedge

Sie können sich in upload_size_limit einhängen und eine maximale Dateigröße festlegen:

// 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

Bei mir funktioniert das super!

  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