¿Cómo deshabilito las imágenes sensibles en WP 4.4?

38

Convertí con éxito mi instalación 4.3.1 a todos los https. Después de actualizar a 4.4. Tengo un problema con el nuevo atributo srcset . Mientras que el atributo src para las imágenes se establece mediante https, el atributo srcset es http. Esto hace que los navegadores no muestren ninguna imagen.

Mientras espero una mejor solución, deseo deshabilitar la configuración del atributo srcset para que todas las imágenes solo tengan un atributo src . ¿Cómo hago eso?

    
pregunta brokkr 10.12.2015 - 11:15

5 respuestas

43

Aquí hay algunas cosas que podría intentar eliminar el soporte de imagen sensible en 4.4:

/**
 * Disable responsive image support (test!)
 */

// Clean the up the image from wp_get_attachment_image()
add_filter( 'wp_get_attachment_image_attributes', function( $attr )
{
    if( isset( $attr['sizes'] ) )
        unset( $attr['sizes'] );

    if( isset( $attr['srcset'] ) )
        unset( $attr['srcset'] );

    return $attr;

 }, PHP_INT_MAX );

// Override the calculated image sizes
add_filter( 'wp_calculate_image_sizes', '__return_empty_array',  PHP_INT_MAX );

// Override the calculated image sources
add_filter( 'wp_calculate_image_srcset', '__return_empty_array', PHP_INT_MAX );

// Remove the reponsive stuff from the content
remove_filter( 'the_content', 'wp_make_content_images_responsive' );

pero como lo menciona @cybmeta, el problema puede estar en otra parte.

Forzar https en srcset

Puedes hacer un poco de depuración con el filtro wp_calculate_image_srcset e incluso probar esta solución rápida :

add_filter( 'wp_calculate_image_srcset', function( $sources )
{
    foreach( $sources as &$source )
    {
        if( isset( $source['url'] ) )
            $source['url'] = set_url_scheme( $source['url'], 'https' );
    }
    return $sources;

}, PHP_INT_MAX );

para establecer el esquema de url en https . Otro enfoque sería tenerlo sin esquemas // .

Consulte el Codex para otras opciones de set_url_scheme() :

$source['url'] = set_url_scheme( $source['url'], null );        
$source['url'] = set_url_scheme( $source['url'], 'relative' );

Pero debes intentar profundizar y encontrar la causa raíz.

Actualización:

Podríamos rescatar antes de la función wp_calculate_image_srcset() con:

add_filter( 'wp_calculate_image_srcset_meta', '__return_empty_array' );

luego usa los filtros wp_calculate_image_srcset o max_srcset_image_width .

También se actualiza de acuerdo con el ticket # 41895 , para devolver una matriz vacía en lugar de false / null.

    
respondido por el birgire 10.12.2015 - 11:59
12

La forma más sencilla y limpia de hacer esto es simplemente esta:

add_filter( 'wp_calculate_image_srcset', '__return_false' );

Para repetir lo que la mayoría de la gente está diciendo, srcset es una buena idea y es el futuro (la mejor práctica ahora), pero si necesita una solución rápida para mantener su sitio en funcionamiento, el fragmento de código anterior hace el trabajo sin ningún tipo de piratería. .

fuente: WP Core Blog

    
respondido por el Trevor 16.12.2015 - 02:17
7

Lo más probable es que la razón por la que las URL en sus atributos srcset muestren incorrectamente HTTPS es porque las URL para todas las imágenes se crean utilizando el valor de la opción siteurl en su tabla wp_options. Si está sirviendo a su front-end a través de HTTPS, también debe cambiar esos valores (a través de Configuración > General).

Aquí está el ticket relacionado con el sistema de seguimiento de problemas de WordPress: enlace

    
respondido por el joemcgill 10.12.2015 - 17:13
5

Esto deshabilitará el código srcset al eliminar cualquier imagen que tenga más de 1 píxel.

add_filter( 'max_srcset_image_width', create_function( '', 'return 1;' ) );

A largo plazo, deberías intentar solucionar el problema real. Sin embargo, esto funciona si necesita una solución rápida.

    
respondido por el Otto 11.12.2015 - 01:41
2

En Configuración / General, asegúrese de que su Dirección de WordPress (URL) y Dirección del sitio (URL) estén configuradas en enlace

Consulte enlace

  

Joe McGill, quien ayudó a liderar el esfuerzo para obtener imágenes receptivas en   WordPress, también respondió en el hilo del foro y confirma la   la sugerencia es correcta: "Si está ejecutando HTTPS en el extremo frontal,   debe cambiar la URL de su URL de inicio y sitio en Configuración >   General, por lo que utilizan el esquema HTTPS ", dijo.

    
respondido por el user2969141 16.12.2015 - 16:18

Lea otras preguntas en las etiquetas