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;

}

Deja una respuesta

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


A %d blogueros les gusta esto: