web-dev-qa-db-fra.com

Comment définir une dimension d'image minimale pour le téléchargement

Je souhaite définir les dimensions d'image minimales pour un champ de saisie spécifique avec id= "job_logo" dans un formulaire de soumission au début du processus.

Selon cette réponse Comment exiger une dimension d'image minimale pour le téléchargement?

Le code suivant définit la limite pour tous les téléchargements d'images.

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

Y at-il un moyen que je peux faire cela pour un champ spécifique avec id = "job_logo" i.e

Voici la classe de gestionnaire de travaux wp utilisée pour le formulaire de soumission

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

c'est le code que j'ai utilisé pour ajouter le champ d'image de téléchargement

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

Voici la sortie HTML pour le champ image du logo de téléchargement

<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

Le tableau $file ne contient rien que vous puissiez utiliser, mais $GLOBALS contient des informations utiles. Vous pouvez supprimer la mise en commentaire de la ligne de débogage contenant $GLOBALS pour voir ce qu’elle contient.

J'ai ajouté une clause de garde en haut de la fonction tc_handle_upload_prefilter. Cela garantit que le code de vérification de la taille du fichier n'est exécuté que lorsque le fichier job_logo est en cours de téléchargement.

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