Un cadenas absent sur un site au certificat valide, c'est du contenu mixte : la page est arrivée en https et quelque chose à l'intérieur non. Le navigateur bloque ou déclasse, et le cadenas disparaît.
Le trouver en un seul endroit
La console nomme l'URL exacte. Deviner de quelle image il s'agit coûte bien plus de temps que de l'ouvrir.
// browser console
Mixed Content: The page at 'https://...' was loaded over HTTPS,
but requested an insecure resource 'http://...'.
D'où cela vient d'habitude
- Des URL http:// absolues dans la base - écrites quand le site était en http et jamais mises à jour.
- Une URL de script ou de police écrite en dur dans un thème.
- Un contenu intégré - une carte, une vidéo, un widget - dont le fournisseur est encore en http.
Corriger la base de données
wp search-replace 'http://yourdomain.com' 'https://yourdomain.com' --all-tables --precise
Rattraper le reste
<meta http-equiv="Content-Security-Policy" content="upgrade-insecure-requests">
Cela dit au navigateur d'aller chercher les sous-ressources http en https à la place. C'est un filet pour ce que vous ne maîtrisez pas, pas un substitut à la correction de vos propres URL : si l'autre bout n'a pas d'https, la ressource échoue.
Préférer le protocole implicite ? Non
//example.com/x.js était la vieille réponse et est aujourd'hui déconseillé : sur une page ouverte localement en file:// cela casse, et cela cache quel protocole est voulu. Écrivez https:// explicitement.