it-swarm.com.de

So legen Sie eine minimale Bildgröße für das Hochladen fest

Ich möchte die minimalen Bildabmessungen für ein bestimmtes Eingabefeld mit id= "job_logo" in einem Übermittlungsformular am Frontend festlegen

Nach dieser Antwort Wie wird eine minimale Bildgröße für das Hochladen benötigt?

Der folgende Code legt das Limit für alle Bild-Uploads fest

add_filter('wp_handle_upload_prefilter','tc_handle_upload_prefilter');
function tc_handle_upload_prefilter($file)
{

    $img=getimagesize($file['tmp_name']);
    $minimum = array('width' => '640', 'height' => '480');
    $width= $img[0];
    $height =$img[1];

    if ($width < $minimum['width'] )
        return array("error"=>"Image dimensions are too small. Minimum width is {$minimum['width']}px. Uploaded image width is $width px");

    elseif ($height <  $minimum['height'])
        return array("error"=>"Image dimensions are too small. Minimum height is {$minimum['height']}px. Uploaded image height is $height px");
    else
        return $file; 
}

Gibt es eine Möglichkeit, dies für ein bestimmtes Feld mit id = "job_logo" zu tun, d. H

Es folgt die Klasse des WP-Job-Managers, die für das Übermittlungsformular verwendet wird

https://github.com/Automattic/WP-Job-Manager/blob/c838d6ee3a3d0fd224d666bfee55f58517e10cf6/includes/forms/class-wp-job-manager-form-submit-job.php#L206

dies ist der Code, mit dem ich das Upload-Bildfeld hinzugefügt habe

add_filter( 'submit_job_form_fields', 'my_custom_tax' );
function my_custom_tax( $fields ) {
  $fields['job']['job_logo'] = array(
          'label'       => __( 'Logo', 'wp-job-manager' ),
          'type'        => 'file',
          'required'    => false,
          'placeholder' => '',
          'priority'    => 1.15,
          'ajax'        => true,
          'multiple'    => false,
          'allowed_mime_types' => array(
            'jpg'  => 'image/jpeg',
            'jpeg' => 'image/jpeg',            
            'png'  => 'image/png'
          )
  );
  return $fields;
}

Es folgt die HTML-Ausgabe für das Feld zum Hochladen des Logobilds

<input type="file" class="input-text wp-job-manager-file-upload" data-file_types="jpg|jpeg|png" name="job_logo" id="job_logo" placeholder="">
2
aryan

Das $file-Array enthält nichts, was Sie verwenden könnten, aber $GLOBALS enthält einige hilfreiche Informationen. Sie können die Debug-Zeile, die $GLOBALS enthält, aus dem Kommentar entfernen, um zu sehen, was sie enthält.

Ich habe der Funktion tc_handle_upload_prefilter eine Schutzklausel hinzugefügt. Dadurch wird sichergestellt, dass der Code zur Überprüfung der Dateigröße nur ausgeführt wird, wenn die Datei job_logo hochgeladen wird.

add_filter('wp_handle_upload_prefilter','tc_handle_upload_prefilter');
function tc_handle_upload_prefilter($file) {
    // Debugging...
    //return array("error"=> print_r( $_POST, true ) );
    //return array("error"=> print_r( $file, true ) );

    //return array("error"=> print_r( $GLOBALS, true ) ); // This is helpful...
    //return array( "error"=> print_r( $GLOBALS['job_manager_uploading_file'], true ) ); // Now we're cooking!

    if ( ! isset( $GLOBALS['job_manager_uploading_file'] ) || ( 'job_logo' !== $GLOBALS['job_manager_uploading_file'] ) ) {
        return $file;       
    }

    $img = getimagesize( $file['tmp_name'] );
    $minimum = array( 'width' => '640', 'height' => '480' );
    $width = $img[0];
    $height = $img[1];

    if ( $width < $minimum['width'] )
        return array( "error"=>"Image dimensions are too small. Minimum width is {$minimum['width']}px. Uploaded image width is $width px");

    elseif ( $height < $minimum['height'] )
        return array("error"=>"Image dimensions are too small. Minimum height is {$minimum['height']}px. Uploaded image height is $height px");
    else
        return $file; 
}
1
Dave Romsey