web-dev-qa-db-fra.com

en utilisant upload image avec media_handle_upload .. mais!

Je suis tring pour télécharger l'image dans Wordpress en utilisant une fonction ..

J'ai trouvé le moyen de télécharger des images, mais il y a un problème ..

lorsque l’utilisateur télécharge son image, Wordpress crée plusieurs tailles d’image, c’est un problème, car je ne veux qu’une image.

c'est le dossier wp-conent/uploads/2010/10 .. regardez l'image (il s'agit d'une image mais WordPress crée la même image mais de tailles différentes).

http://i.stack.imgur.com/fn6ab.jpg

c'est mon code

<?php /*
Template Name: Uploading Page

*/?>

<?php get_header();
?><div class="container_12">
    <div id="content">
    <form id="file-form" enctype="multipart/form-data" action="<?php echo $_SERVER['REQUEST_URI']; ?>" method="POST">
    <p id="async-upload-wrap">
    <label for="async-upload">upload</label>
    <input type="file" id="async-upload" name="async-upload"> <input type="submit" value="Upload" name="html-upload">
    </p>

    <p>
    <input type="hidden" name="post_id" id="post_id" value="<?php echo '212';?>" />
    <?php wp_nonce_field('client-file-upload'); ?>
    <input type="hidden" name="redirect_to" value="<?php echo $_SERVER['REQUEST_URI']; ?>" />
    </p>

    <p>
    <input type="submit" value="Save all changes" name="save" style="display: none;">
    </p>
    </form>

<?php
if ( isset( $_POST['html-upload'] ) && !empty( $_FILES ) ) {
    require_once(ABSPATH . 'wp-admin/includes/admin.php');
    $id = media_handle_upload('async-upload', 1199); //post id of Client Files page
    unset($_FILES);
    if ( is_wp_error($id) ) {
        $errors['upload_error'] = $id;
        $id = false;
    }

    if ($errors) {
        echo "<p>There was an error uploading your file.</p>";
    } else {
        echo "<p>Your file has been uploaded.</p>";
    }
}

get_sidebar();
get_footer();?>

comment peut-on en faire une photo?

Je souhaite que vous me compreniez ^ * parce que ma langue> <

3
AboSami

Utilisez wp_handle_upload () pour gérer les téléchargements vous-même, sans créer de pièces jointes ni redimensionner.

La fonction media_handle_upload () crée en réalité une publication en pièce jointe, et le processus de redimensionnement se produit lorsque wp_generate_attachment_metadata est appelé. Si vous n'appelez pas cela, aucun redimensionnement n'est effectué.

6
Otto

Marquage HTML:

<p>
  <label for="custom-upload">Upload New Image:</label>

  <input type="file" tabindex="3" name="custom-upload" id="custom-upload" />
</p>
<?php
  /*Retrieving the image*/
  $attachment = get_post_meta($postid, 'custom_image');

  if($attachment[0]!='')
  {
   echo wp_get_attachment_link($attachment[0], 'thumbnail', false, false);
  }
?>

Téléchargement de l'image:

<?php
global $post; /*Global post object*/

$post_id = $post->ID; /*Geting current post id*/
$upload = $_FILES['upload']; /*Receive the uploaded image from form*/
add_custom_image($post_id, $upload); /*Call image uploader function*/

function add_custom_image($post_id, $upload)
{
 $uploads = wp_upload_dir(); /*Get path of upload dir of wordpress*/

 if (is_writable($uploads['path']))  /*Check if upload dir is writable*/
 {
  if ((!empty($upload['tmp_name'])))  /*Check if uploaded image is not empty*/
  {
   if ($upload['tmp_name'])   /*Check if image has been uploaded in temp directory*/
   {
    $file=handle_image_upload($upload); /*Call our custom function to ACTUALLY upload the image*/

    $attachment = array  /*Create attachment for our post*/
    (
      'post_mime_type' => $file['type'],  /*Type of attachment*/
      'post_parent' => $post_id,  /*Post id*/
    );

    $aid = wp_insert_attachment($attachment, $file['file'], $post_id);  /*Insert post attachment and return the attachment id*/
    $a = wp_generate_attachment_metadata($aid, $file['file'] );  /*Generate metadata for new attacment*/
    $prev_img = get_post_meta($post_id, 'custom_image');  /*Get previously uploaded image*/
    if(is_array($prev_img))
    {
     if($prev_img[0] != '')  /*If image exists*/
     {
      wp_delete_attachment($prev_img[0]);  /*Delete previous image*/
     }
    }
    update_post_meta($post_id, 'custom_image', $aid);  /*Save the attachment id in meta data*/

    if ( !is_wp_error($aid) ) 
    {
     wp_update_attachment_metadata($aid, wp_generate_attachment_metadata($aid, $file['file'] ) );  /*If there is no error, update the metadata of the newly uploaded image*/
    }
   }
  }
  else
  {
   echo 'Please upload the image.';
  }
 }
}

function handle_image_upload($upload)
{
 global $post;

        if (file_is_displayable_image( $upload['tmp_name'] )) /*Check if image*/
        {
    /*handle the uploaded file*/
            $overrides = array('test_form' => false);
            $file=wp_handle_upload($upload, $overrides);
        }
 return $file;
}
?>
5
Arvind07

Si vous utilisez WordPress 3.x, accédez à Admin> Paramètres> Multimédia.

Sous "Taille de l'image", définissez toutes les valeurs sur zéro (0), puis décochez la case "Rogner la vignette aux dimensions exactes".

Cliquez sur "Enregistrer les modifications" et WP ne créera plus de vignettes.

3
MathSmath

Pour empêcher WordPress de créer plusieurs images pour les vignettes lors du téléchargement, j'utilise ce code:

add_filter('intermediate_image_sizes_advanced', 'no_image_resizing');
    function no_image_resizing($size) {
        $ret = array();
        return $ret;
    }
3
fad.lee