usando la imagen de carga con media_handle_upload .. pero!

3

Estoy intentando subir una imagen en wordpress usando alguna función ...

Encontré la forma de cargar imágenes pero hay un problema ...

cuando el usuario carga su imagen, wordpress crea más de una imagen en diferentes tamaños, esto es un problema porque solo quiero una imagen ...

esta es la carpeta wp-conent / uploads / 2010/10 .. mira la imagen (esta es una imagen pero wordpress crea la misma imagen pero diferentes tamaños).

enlace

este es mi código

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

¿Cómo puedo hacer que sea una foto?

Deseo que me entiendas ^ * porque mi idioma > <

    
pregunta AboSami 20.12.2010 - 16:25

4 respuestas

6

Use wp_handle_upload () para manejar las cargas usted mismo, sin crear archivos adjuntos ni cambiar el tamaño.

La función media_handle_upload () crea realmente una publicación adjunta, y el proceso de cambio de tamaño ocurre cuando se llama a wp_generate_attachment_metadata. Si no lo llamas, no se produce cambio de tamaño.

    
respondido por el Otto 29.03.2011 - 23:16
5

Marca 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);
  }
?>

Cargando la imagen:

<?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;
}
?>
    
respondido por el Arvind07 29.03.2011 - 14:13
3

Si está utilizando WordPress 3.x, vaya a Admin > Configuraciones > Medios de comunicación.

En "Tamaños de imagen", configure todos los valores a cero (0) y desmarque la casilla "Recortar la miniatura a las dimensiones exactas".

Haz clic en "guardar cambios" y WP ya no creará miniaturas.

    
respondido por el MathSmath 20.12.2010 - 19:22
3

Para evitar que WordPress cree múltiples imágenes para miniaturas mientras subo, estoy usando este código:

add_filter('intermediate_image_sizes_advanced', 'no_image_resizing');
    function no_image_resizing($size) {
        $ret = array();
        return $ret;
    }
    
respondido por el fad.lee 24.05.2011 - 05:18

Lea otras preguntas en las etiquetas