fbpx

Cómo desactivar el responsive automático de imágenes de WordPress • Ayuda WordPress

Cómo desactivar el responsive automático de imágenes de WordPress • Ayuda WordPress

Nos encanta recomendar el mejor contenido, por eso no te pierdas el siguiente artículo de Fernando Tellado y no dejes de visitar su página!
Ver Original:

add_filter( ‘wp_calculate_image_srcset’, ‘my_custom_image_srcset’, 10, 5);

function my_custom_image_srcset($sources, $size_array, $image_src, $image_meta, $attachment_id) {

  // El siguiente código es una adaptación de wp-includes/media.php:1061-1180

  $image_sizes = $image_meta[‘sizes’];

  // Obtenemos ancho y alto de la imagen.

  $image_width = (int) $size_array[0];

  $image_height = (int) $size_array[1];

  $image_basename = wp_basename( $image_meta[‘file’] );

  /*

*Para evitar errores raros en WP con los gifs animados

 */

  if ( ! isset( $image_sizes[‘thumbnail’][‘mime-type’] ) || ‘image/gif’ !== $image_sizes[‘thumbnail’][‘mime-type’] ) {

  $image_sizes[] = array(

  ‘width’  => $image_meta[‘width’],

  ‘height’ => $image_meta[‘height’],

  ‘file’  => $image_basename,

  );

  } elseif ( strpos( $image_src, $image_meta[‘file’] ) ) {

  return false;

  }

  // Recuperamos el subditectorio de subidas a partir de la imagen completa.

  $dirname = _wp_get_attachment_relative_path( $image_meta[‘file’] );

  if ( $dirname ) {

  $dirname = trailingslashit( $dirname );

  }

  $upload_dir = wp_get_upload_dir();

  $image_baseurl = trailingslashit( $upload_dir[‘baseurl’] ) . $dirname;

  /*

 * Mejor si es HTTPS

 */

  if ( is_ssl() && ‘https’ !== substr( $image_baseurl, 0, 5 ) && parse_url( $image_baseurl, PHP_URL_HOST ) === $_SERVER[‘HTTP_HOST’] ) {

  $image_baseurl = set_url_scheme( $image_baseurl, ‘https’ );

  }

  /*

 * Filtramos imágenes que sean residuos de versiones anteriores.

 */

  $image_edited = preg_match( ‘/-e[0-9]{13}/’, wp_basename( $image_src ), $image_edit_hash );

  /**

 * Filtramos el ancho máximo a incluir en el atributo srcset.

 * @since 4.4.0

 * @param int   $max_width  El ancho máximo de imagen a incluir srcset. Por defecto es ‘1600’.

 * @param array $size_array Array de valores de ancho y alto en píxeles (en ese orden).

 */

  $max_srcset_image_width = apply_filters( ‘max_srcset_image_width’, 1600, $size_array );

  // Array para mantener las URLs.

  $sources = array();

  /**

 * Prevención de errores.

 */

  $src_matched = false;

  /*

 * Loop de las imágenes disponibles. Solo usa imágenes que sean versiones redimensionadas

 */

  foreach ( $image_sizes as $identifier => $image ) {

  // Seguimos si no hace falta el identificador

  if ($identifier === ‘unwanted-identifier’) {

  continue;

  }

  $is_src = false;

  // Comprobamos que los datos meta de la imagen no estén corruptos.

  if ( ! is_array( $image ) ) {

  continue;

  }

  // Confirmamos que el nombre de archivo sea parte del src.

  if ( ! $src_matched && false !== strpos( $image_src, $dirname . $image[‘file’] ) ) {

  $src_matched = $is_src = true;

  }

  // Filtramos imágenes de anteriores modifiaciones.

  if ( $image_edited && ! strpos( $image[‘file’], $image_edit_hash[0] ) ) {

  continue;

  }

  /*

 * Filtramos imágenes del mismo ancho que ‘$max_srcset_image_width’ salvo que

 * el archivo esté en el atributo ‘src’.

 */

  if ( $max_srcset_image_width && $image[‘width’] > $max_srcset_image_width && ! $is_src ) {

  continue;

  }

  // Si las dimensiones de la imagen están dentro del tamaño esperado en más menos 1px la usamos.

  if ( wp_image_matches_ratio( $image_width, $image_height, $image[‘width’], $image[‘height’] ) ) {

  // Añadimos URL, descriptor y valor al array de orígenes a devolver.

  $source = array(

  ‘url’  => $image_baseurl . $image[‘file’],

  ‘descriptor’ => ‘w’,

  ‘value’  => $image[‘width’],

  );

  // El ‘src’ de la imagen tiene que ser el primero en el ‘srcset’ debido a un fallo en iOS8.

  if ( $is_src ) {

  $sources = array( $image[‘width’] => $source ) + $sources;

  } else {

  $sources[ $image[‘width’] ] = $source;

  }

  }

  }

  return $sources;

}

Compartir este post

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *