Comment puis-je désactiver les images sensibles dans WP 4.4?

38

J'ai converti avec succès mon installation 4.3.1 en https. Après la mise à jour à 4.4. J'ai un problème avec le nouvel attribut srcset . Alors que l'attribut src pour les images est défini à l'aide de https, l'attribut srcset est http. Cela fait que les navigateurs n’affiche aucune image.

En attendant de trouver une solution, je souhaite désactiver la définition de l'attribut srcset de sorte que toutes les images ne possèdent qu'un attribut src . Comment je fais ça?

    
posée brokkr 10.12.2015 - 11:15
la source

5 réponses

43

Voici quelques solutions possibles pour supprimer le support d’image sensible dans la version 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' );

mais comme mentionné par @cybmeta, le problème peut être ailleurs.

Forcer https sur srcset

Vous pouvez faire du débogage avec le filtre wp_calculate_image_srcset et même essayer cette solution rapide :

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

pour définir le schéma d'URL sur https . Une autre approche serait de l’avoir sans schéma // .

Consultez le Codex pour connaître les autres options de set_url_scheme() :

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

Mais vous devriez essayer de creuser plus profondément et trouver la cause fondamentale.

Mise à jour:

Nous pourrions sortir plus tôt de la fonction wp_calculate_image_srcset() avec:

add_filter( 'wp_calculate_image_srcset_meta', '__return_empty_array' );

puis utilisez les filtres wp_calculate_image_srcset ou max_srcset_image_width .

Également mis à jour en fonction du ticket # 41895 , afin de renvoyer un tableau vide à la place de false / null.

    
réponse donnée birgire 10.12.2015 - 11:59
la source
12

La façon la plus simple et la plus propre de procéder est la suivante:

add_filter( 'wp_calculate_image_srcset', '__return_false' );

Pour reprendre ce que la plupart des gens disent, srcset est une bonne idée et représente l'avenir (meilleure pratique à l'heure actuelle), mais si vous avez besoin d'une solution rapide pour que votre site continue de fonctionner, l'extrait ci-dessus fait le travail sans le moindre piratage. .

source: WP Blog de base

    
réponse donnée Trevor 16.12.2015 - 02:17
la source
7

Très probablement, la raison pour laquelle les URL de vos attributs srcset affichent HTTPS de manière incorrecte est due au fait que les URL de toutes les images sont générées à l'aide de la valeur de l'option siteurl dans votre table wp_options. Si vous utilisez votre serveur frontal sur HTTPS, vous devez également modifier ces valeurs (via Paramètres> Général>.

Voici le ticket associé sur le système de suivi des problèmes de WordPress: enlace

    
réponse donnée joemcgill 10.12.2015 - 17:13
la source
5

Ceci désactivera le code srcset en éliminant les images plus larges que 1 pixel.

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

À long terme, vous devriez essayer de résoudre le problème. Néanmoins, cela fonctionne si vous avez besoin d’une solution rapide.

    
réponse donnée Otto 11.12.2015 - 01:41
la source
2

Dans Paramètres / Général, assurez-vous que votre adresse WordPress (URL) et votre adresse de site (URL) sont définies sur enlace

.

Voir enlace

  

Joe McGill, qui a aidé à diriger les efforts pour obtenir des images réactives dans   WordPress, a également répondu au fil de discussion et confirme les   suggestion est correcte: «Si vous utilisez HTTPS sur le serveur frontal, vous   devrait changer les URL de votre maison et de votre site dans les paramètres >   Général, ils utilisent donc le système HTTPS ", a-t-il déclaré.

    
réponse donnée user2969141 16.12.2015 - 16:18
la source

Lire d'autres questions sur les étiquettes