# Mixed content após HTTPS no WordPress: As 3 causas

<strong>Mixed content</strong> surge quando uma página HTTPS ainda carrega recursos por HTTP. Segundo a <a href="https://developer.mozilla.org/en-US/docs/Web/Security/Mixed_content">MDN Web Docs (2025)</a>, 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 <a href="https://full.services/erros-wordpress/">guias de erros do WordPress da FULL</a>.

---

## 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 <a href="https://full.services/glossario/https/">HTTPS</a> 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.

<table id="diagnostico-mixed-content-wordpress">
  <caption>Mixed content no WordPress: sintomas, causas e correção</caption>
  <thead>
    <tr>
      <th scope="col">Sintoma observado</th>
      <th scope="col">Causa raiz provável</th>
      <th scope="col">Ação corretiva inicial</th>
    </tr>
  </thead>
  <tbody>
    <tr>
      <th scope="row">Cadeado quebrado, layout intacto</th>
      <td>Imagem ou ícone com URL HTTP:// no conteúdo do post</td>
      <td>Search-replace de HTTP:// por HTTPS:// no banco</td>
    </tr>
    <tr>
      <th scope="row">CSS some, página sem estilo</th>
      <td>Stylesheet do tema chamado por HTTP:// e bloqueado</td>
      <td>Revisar siteurl e home em Configurações</td>
    </tr>
    <tr>
      <th scope="row">Slider ou formulário não carrega</th>
      <td>Script de plugin com handle HTTP:// bloqueado</td>
      <td>Inspecionar o console e atualizar o plugin</td>
    </tr>
  </tbody>
</table>

<p class="wp-caption-text">Legenda: o console aponta a URL HTTP:// exata, o que evita troca cega no banco de dados.</p>

---

## 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 <a href="https://developer.mozilla.org/en-US/docs/Web/Security/Mixed_content">MDN Web Docs (2025)</a>, 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, `<iframe>`, 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 <a href="https://full.services/really-simple-ssl-review/">Really Simple SSL</a> tratam cada camada. Para a tabela `wp_options`, o <a href="https://full.services/glossario/wp-config/">wp-config.php</a> 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 <a href="https://full.services/forcar-https-wordpress/">processo sério de forçar HTTPS</a>, 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 <a href="https://full.services/glossario/cache-de-pagina/">cache</a> 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 <a href="https://www.ssllabs.com/ssltest/">SSL Labs (2025)</a>, 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 <a href="https://full.services/planos">planos da FULL</a> 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 <time datetime="2022-05">maio de 2022</time>, o que coloca o time em contato diário com falhas de configuração de protocolo. Para um plano estruturado, siga o <a href="https://full.services/guias/corrigindo-erros-comuns-do-wordpress">guia de erros comuns do WordPress</a>.

<h2 id="faq">Perguntas frequentes sobre mixed content no WordPress</h2>

<details>
<summary>É possível corrigir o mixed content sem reinstalar o WordPress inteiro?</summary>
<p>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.</p>
</details>

<details>
<summary>Por que o cadeado fica quebrado mesmo com o certificado SSL ativo?</summary>
<p>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.</p>
</details>

<details>
<summary>Qual a diferença entre mixed content de imagem e mixed content de script?</summary>
<p>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.</p>
</details>

<details>
<summary>Quanto tempo leva para resolver o mixed content depois da migração HTTPS?</summary>
<p>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.</p>
</details>

<details>
<summary>Por que o mixed content volta mesmo depois de eu trocar as URLs?</summary>
<p>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.</p>
</details>

<aside aria-label="Metodologia dos Testes">
<h2 id="metodologia-dos-testes">Metodologia dos testes</h2>
<p>As causas e a ordem de correção descritas neste guia foram consolidadas a partir dos atendimentos de migração HTTPS da FULL, com referência cruzada à documentação oficial de mixed content da MDN Web Docs (Mozilla) e ao comportamento de bloqueio e auto-upgrade descrito para Chrome e Firefox. Cada esconderijo descrito (wp_options, conteúdo de posts, campos serializados e tema) corresponde a um vetor recorrente observado em sites que chegam ao suporte com o sintoma de cadeado quebrado após o SSL.</p>
<p>Os comportamentos de navegador citados foram verificados na página oficial de mixed content da MDN entre <time datetime="2025-01">janeiro de 2025</time> e <time datetime="2026-06">junho de 2026</time>. Distinguimos sempre mixed content de origem interna, resolvido por search-replace no banco, de mixed content de recurso externo, que exige ajuste na origem do provedor. Nenhum percentual interno foi estimado sem dado de origem verificável, e a proporção de sites afetados reflete observação qualitativa do suporte, não medição publicada.</p>
</aside>

## 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 <a href="https://full.services/academy/">FULL Academy</a> reúne os tutoriais e guias de erros em um só lugar.
