Mixed content surge quando uma página HTTPS ainda carrega recursos por HTTP. Segundo a MDN Web Docs (2025), navegadores bloqueiam todo script, iframe e CSS em HTTP e só fazem auto-upgrade de imagem, áudio e vídeo. O cadeado some por causa de URLs antigas no banco. A correção é trocar a origem, não o sintoma.
Mixed content é o erro em que uma página servida por HTTPS pede recursos (imagens, scripts, CSS, fontes) por HTTP, quebrando o cadeado de segurança do navegador. No WordPress, ele aparece quase sempre depois da migração para HTTPS: o certificado SSL está ativo, mas o banco de dados ainda guarda URLs http:// em posts, widgets e configurações. O navegador detecta a mistura e exibe “não seguro” na barra. Na maioria dos casos que chegam ao suporte da FULL, a origem é uma URL hardcoded esquecida, não falha no certificado. Este guia mostra como diagnosticar a fonte exata, corrigir no banco e impedir o retorno, com apoio dos guias de erros do WordPress da FULL.
Diagnóstico rápido do mixed content: Sintoma e causa
O erro de mixed content tem 3 origens dominantes no WordPress, e identificar a certa economiza horas testando hipótese errada. Na maior parte dos sites que migram para HTTPS sem reescrever o banco, o sintoma é o mesmo: cadeado quebrado em menos de 1 dia após ativar o certificado SSL válido. O navegador não reclama do certificado, reclama de um recurso interno carregado por HTTP.
A tabela abaixo cruza cada sintoma visível com a causa raiz provável e a primeira ação corretiva. Use o console do navegador (F12, aba Console) para ler exatamente qual URL http:// o Chrome ou o Firefox está apontando antes de mexer no banco.
| Sintoma observado | Causa raiz provável | Ação corretiva inicial |
|---|---|---|
| Cadeado quebrado, layout intacto | Imagem ou ícone com URL HTTP:// no conteúdo do post | Search-replace de HTTP:// por HTTPS:// no banco |
| CSS some, página sem estilo | Stylesheet do tema chamado por HTTP:// e bloqueado | Revisar siteurl e home em Configurações |
| Slider ou formulário não carrega | Script de plugin com handle HTTP:// bloqueado | Inspecionar o console e atualizar o plugin |
Legenda: o console aponta a URL HTTP:// exata, o que evita troca cega no banco de dados.
Por que o mixed content acontece depois de migrar para HTTPS
O mixed content acontece porque o certificado SSL muda o protocolo da página, mas não reescreve os links que já estavam salvos no banco de dados. Um site que viveu meses em HTTP acumula centenas de URLs http:// em posts, campos de imagem, widgets e opções de tema. O SSL cobre a entrega da página, e cada recurso interno continua sendo pedido no endereço antigo, gerando o aviso de conteúdo misto.
Segundo a MDN Web Docs (2025), que documenta o comportamento dos navegadores, o Chrome e o Firefox tratam o mixed content em duas categorias: fazem auto-upgrade de imagem, áudio e vídeo para HTTPS, mas bloqueiam por completo script, , folha de estilo e fonte web. Por isso uma imagem pode até aparecer, enquanto um slider some sem aviso. A gente vê no suporte da FULL que o desespero começa quando o CSS sai do ar, e não pela imagem.
Onde as urls de mixed content se escondem no WordPress
As URLs que geram mixed content se alojam em 4 lugares previsíveis, e conhecer cada um acelera a limpeza. O ponto que pega a maioria: o search-replace só no conteúdo dos posts resolve o texto visível, mas deixa as URLs serializadas dentro de widgets e opções de plugin intactas, e o cadeado continua quebrado em parte das páginas.
Os esconderijos são os campos siteurl e home na tabela wp_options, as URLs http:// no conteúdo de posts e páginas, os valores serializados em wp_options (theme mods, configurações de plugin) e os links absolutos hardcoded dentro do tema. Ferramentas como Better Search Replace, WP-CLI e o plugin Really Simple SSL tratam cada camada. Para a tabela wp_options, o wp-config.php também pode forçar a URL correta.
Como corrigir o mixed content no WordPress em 4 passos
Corrigir o mixed content exige uma ordem que primeiro ajusta a URL base e depois reescreve o banco, em geral em menos de 30 minutos para um site de porte médio. Pular o backup antes do search-replace é o erro que transforma um cadeado quebrado em banco corrompido sem volta.
Os passos abaixo seguem a sequência validada nos atendimentos da FULL e em qualquer processo sério de forçar HTTPS, na ordem que minimiza o risco de quebrar links serializados.
Passo 1: Faça backup completo do banco antes de tocar nas urls
Antes de rodar qualquer search-replace, gere um backup completo do banco de dados e dos arquivos. Um search-replace mal feito em campos serializados quebra a contagem de bytes do PHP e derruba widgets e configurações de plugin. Use UpdraftPlus ou o export do phpMyAdmin e guarde o arquivo fora do servidor.
Passo 2: Confirme siteurl e home em HTTPS
Vá em Configurações > Geral e confirme que “Endereço do WordPress” e “Endereço do site” começam com https://. Se os campos estiverem travados, defina WP_HOME e WP_SITEURL no wp-config.php. Esse passo sozinho já resolve o mixed content de tema e de CSS na maioria dos casos.
Passo 3: Rode o search-replace seguro no banco
Use o Better Search Replace ou o comando wp search-replace 'http://seudominio' 'https://seudominio' do WP-CLI, que respeita dados serializados. Marque a opção “dry run” primeiro para ver quantas linhas serão afetadas. O WP-CLI trata os campos serializados sem quebrar a contagem de bytes, ao contrário de um UPDATE manual no SQL.
Passo 4: Limpe o cache e valide no Console
Limpe o cache de página do plugin de cache e do CDN, abra a página em aba anônima e cheque o console (F12). Zero aviso de mixed content e cadeado fechado confirmam a correção. Recursos externos por HTTP exigem trocar a URL na origem do recurso.
Quando o mixed content vem de recurso externo, não do seu banco
Nem todo mixed content nasce no seu banco: parte dos chamados que a FULL recebe vem de um recurso de terceiro servido por HTTP. Um script de chat, um player de vídeo embutido ou uma fonte chamada por http:// produz o mesmo cadeado quebrado, mas o search-replace no seu site não resolve, porque a URL não está no seu banco.
A diferença prática aparece no console: o aviso aponta um domínio que não é o seu. Nesse caso, a saída é atualizar o embed para a versão HTTPS do provedor, trocar o serviço por um que sirva HTTPS, ou usar a diretiva upgrade-insecure-requests no cabeçalho Content-Security-Policy, que instrui o navegador a tentar HTTPS antes de bloquear. Para um diagnóstico de protocolo, o SSL Labs (2025), referência da Qualys em análise de configuração TLS, confirma se o certificado e a cadeia estão íntegros, separando problema de SSL de problema de mixed content.
Proteja seu site no plano certo: A conta do r$85 por site
Corrigir o mixed content uma vez resolve o cadeado; manter o site sempre em HTTPS com plugins atualizados exige gestão contínua. O plano PRO da FULL custa R$849,90 e inclui o bundle com os 17 plugins premium ativados em um clique, entre eles WP Rocket, All in One Security e UpdraftPlus, além do Really Simple SSL para forçar HTTPS sem atrito.
Como o PRO cobre até 10 sites, a conta fecha em cerca de R$85 por site, valor que paga sozinho na primeira migração que você não precisa contratar avulsa. A gente vê no suporte da FULL que site com plugins gerenciados raramente reabre chamado de cadeado quebrado. Conheça os planos da FULL e mantenha o mixed content longe.
Como evitar que o mixed content volte no WordPress
Evitar que o mixed content volte depende de padronizar HTTPS na origem, não de corrigir post a post. Sites que servem todo recurso por HTTPS desde o início raramente reabrem o problema, porque não há URL http:// para o navegador bloquear depois.
A rotina mínima tem 4 pilares: manter siteurl e home sempre em HTTPS; rodar um plugin como Really Simple SSL para auto-upgrade de links internos; adicionar o cabeçalho upgrade-insecure-requests via Content-Security-Policy; e revisar embeds externos para usar sempre a URL HTTPS do provedor. Vale também redirecionar HTTP para HTTPS no .htaccess ou no Nginx e checar o site após cada plugin novo instalado. A FULL atua como CNA, a única empresa brasileira autorizada pela CISA a atribuir IDs CVE oficiais desde , o que coloca o time em contato diário com falhas de configuração de protocolo. Para um plano estruturado, siga o guia de erros comuns do WordPress.
Perguntas frequentes sobre mixed content no WordPress
É possível corrigir o mixed content sem reinstalar o WordPress inteiro?
Sim, e quase nunca é preciso reinstalar. O mixed content vive em URLs HTTP:// salvas no banco de dados, não nos arquivos do core. Confirmar siteurl e home em HTTPS e rodar um search-replace seguro com Better Search Replace ou WP-CLI resolve a maioria dos casos em menos de 30 minutos. Faça backup do banco antes e valide no console do navegador depois.
Por que o cadeado fica quebrado mesmo com o certificado SSL ativo?
Porque o certificado SSL protege a entrega da página, mas não reescreve os links internos. Se um post, widget ou tema chama uma imagem ou script por http://, o navegador marca a página inteira como não segura. O certificado está válido; o problema é o recurso HTTP:// misturado. Por isso o SSL Labs aponta o certificado como íntegro mesmo com o cadeado quebrado.
Qual a diferença entre mixed content de imagem e mixed content de script?
A diferença está na resposta do navegador. Segundo a MDN, Chrome e Firefox fazem auto-upgrade de imagem, áudio e vídeo de HTTP:// para https://, então a imagem ainda aparece. Já script, iframe, CSS e fontes em HTTP:// são bloqueados por completo, sem aviso visível na página. Por isso um slider ou um CSS some, enquanto a imagem sobrevive ao mixed content.
Quanto tempo leva para resolver o mixed content depois da migração HTTPS?
Em um site de porte médio, a correção do mixed content leva de 15 a 30 minutos. O grosso do tempo é o backup do banco e o search-replace, que troca todas as URLs HTTP:// por HTTPS:// de uma vez. Recursos externos por HTTP:// exigem ajuste na origem e podem somar alguns minutos. Validar no console confirma que nenhum aviso restou.
Por que o mixed content volta mesmo depois de eu trocar as URLs?
Porque o search-replace só no conteúdo dos posts deixa URLs HTTP:// serializadas dentro de widgets e opções de plugin. Esses campos guardam a contagem de bytes do PHP, então um UPDATE manual no SQL os corrompe e o cadeado segue quebrado em parte do site. Usar WP-CLI ou Better Search Replace, que tratam dados serializados, fecha o ciclo de retorno do mixed content.
Próximos passos para manter o site em HTTPS sem mixed content
Mixed content após HTTPS no WordPress raramente é falha de certificado: é sinal de URLs http:// antigas que o SSL não reescreveu. O caminho é sempre o mesmo: leia a URL exata no console, faça backup do banco, confirme siteurl e home em HTTPS, rode um search-replace seguro com WP-CLI ou Better Search Replace e revise recursos externos. A maioria dos casos que a FULL atende some com uma única reescrita bem feita, o que torna a prevenção mais barata que a correção repetida. Para aprofundar, o FULL Academy reúne os tutoriais e guias de erros em um só lugar.
















