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?
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.
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.
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.
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
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
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.
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é.