¿WordPress elimina la imagen original después de cambiar el tamaño?

2 minutos de lectura

avatar de usuario
jonny jordan

En la biblioteca multimedia de wordpress, ¿hay alguna forma de eliminar la imagen original después de cambiar el tamaño? Parece mantener el original y siento que esto desperdicia mucho espacio.

  • wordpress.org/plugins/image-sizes

    –Luca Angioloni

    13 de enero de 2017 a las 1:52

  • Hola, @Jonny Jordan, ¿te ayudó mi respuesta?

    – Raunak Gupta

    30 de noviembre de 2017 a las 8:17

avatar de usuario
Raunak Gupta

tienes que usar wp_generate_attachment_metadata filtro para manipular la imagen de carga.

Aquí está el código:

add_filter('wp_generate_attachment_metadata', 'txt_domain_delete_fullsize_image');

function txt_domain_delete_fullsize_image($metadata)
{
    $upload_dir = wp_upload_dir();
    $full_image_path = trailingslashit($upload_dir['basedir']) . $metadata['file'];
    $deleted = unlink($full_image_path);

    return $metadata;
}

El código va en el archivo function.php de su tema secundario activo (o tema). O también en cualquier complemento de archivos php.
El código está probado y es completamente funcional.

¡Espero que esto ayude!

  • La imagen no se muestra en la imagen destacada, cuando creas la publicación.

    – ztvmark

    10 de enero de 2021 a las 4:38

  • el código elimina -scaled.jpg pero no el más grande (original)

    – Rafiozoo

    10 sep 2021 a las 10:27

No sé la respuesta directa a esto y es una buena idea mantener la imagen original para los complementos internos de wordpress.

Sin embargo, una forma de reducir el almacenamiento y reducir los costos es utilizar el complemento de AWS S3:
https://wordpress.org/plugins/amazon-s3-and-cloudfront/
Esto requerirá que primero configure un AWS S3 Bucket. Siéntase libre de hacer otra pregunta relacionada con hacer eso si no tiene sentido.

Works WordPress 5.6 Este sí muestra la imagen destacada

function replace_uploaded_image($image_data) {
      // if there is no large image : return
  if (!isset($image_data['sizes']['large'])) return $image_data;

  // paths to the uploaded image and the large image
  $upload_dir = wp_upload_dir();
  $uploaded_image_location = $upload_dir['basedir'] . "https://stackoverflow.com/" .$image_data['file'];
  // $large_image_location = $upload_dir['path'] . "https://stackoverflow.com/".$image_data['sizes']['large']['file']; // ** This only works for new image uploads - fixed for older images below.
  $current_subdir = substr($image_data['file'],0,strrpos($image_data['file'],"/"));
  $large_image_location = $upload_dir['basedir'] . "https://stackoverflow.com/".$current_subdir."https://stackoverflow.com/".$image_data['sizes']['large']['file'];

  // delete the uploaded image
  unlink($uploaded_image_location);

  // rename the large image
  rename($large_image_location,$uploaded_image_location);

  // update image metadata and return them
  $image_data['width'] = $image_data['sizes']['large']['width'];
  $image_data['height'] = $image_data['sizes']['large']['height'];
  unset($image_data['sizes']['large']);

  return $image_data;
}

add_filter('wp_generate_attachment_metadata','replace_uploaded_image');

¿Ha sido útil esta solución?

Esta web utiliza cookies propias y de terceros para su correcto funcionamiento y para fines analíticos y para mostrarte publicidad relacionada con sus preferencias en base a un perfil elaborado a partir de tus hábitos de navegación. Al hacer clic en el botón Aceptar, acepta el uso de estas tecnologías y el procesamiento de tus datos para estos propósitos. Configurar y más información
Privacidad