web-dev-qa-db-fra.com

Comment désactiver les images sensibles dans WP 4,4?

J'ai converti avec succès mon installation 4.3.1 en tout 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 une meilleure solution, je souhaite désactiver la définition de l'attribut srcset afin que toutes les images ne possèdent qu'un attribut src. Comment je fais ça?

38
brokkr

Vous pouvez essayer de supprimer le support d’image sensible dans 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 ceci quick-fix :

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 url à https. Une autre approche serait de l’avoir sans schéma //.

Consultez le Codex pour d’autres set_url_scheme() options:

$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 de trouver la cause fondamentale.

Mettre à 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 en utilisant les filtres wp_calculate_image_srcset ou max_srcset_image_width.

Également mis à jour selon ticket # 41895 , pour retourner un tableau vide au lieu de false/null.

44
birgire

La manière 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 constitue 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 Core Blog

13
Trevor

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 correspondant sur le système de suivi des problèmes de WordPress: https://core.trac.wordpress.org/ticket/34945

7
joemcgill

Cela 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. Pourtant, cela fonctionne si vous avez besoin d'une solution rapide.

5
Otto

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

Voir http://wptavern.com/how-to-fix-images-not-loading-in-wordpress-4-4-while-using-ssl

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 confirmé que la suggestion de Cree était correcte. URL dans Paramètres> Général pour qu'ils utilisent le schéma HTTPS ", a-t-il déclaré.

2
user2969141