# Erro não é um JSON válido no WordPress: Os 5 sinais e a correção

O erro <strong>não é um JSON válido no WordPress</strong> surge quando o editor de blocos tenta salvar via REST API e recebe HTML em vez de JSON. A <a href="https://developer.wordpress.org/rest-api/" rel="noopener" target="_blank">documentação oficial da REST API do WordPress</a> confirma que o editor de blocos depende da rota /wp-json/ para gravar cada post. A causa real está nesse endpoint bloqueado, em 5 cenários distintos. Comece testando a REST API antes de mexer em código.

O erro não é um JSON válido no WordPress é uma mensagem que aparece ao publicar ou atualizar um conteúdo no editor de blocos Gutenberg. Na prática, o editor envia os dados do post para a REST API do WordPress e espera de volta uma resposta no formato JSON. Quando essa resposta vem corrompida, vazia ou em HTML, o navegador não consegue interpretar e exibe o aviso. A boa notícia é que a causa quase nunca está no seu texto, e sim na rota /wp-json/. Este guia faz parte do hub de <a href="https://full.services/erros-wordpress/">conteúdos sobre erros WordPress da FULL</a> e mostra os 5 sinais que identificam a origem real.

---

## Diagnóstico rápido: Sintoma, causa e correção

O erro não é um JSON válido no WordPress tem 5 causas dominantes, e a REST API bloqueada responde por boa parte dos tickets que chegam ao suporte da FULL. Antes de editar qualquer arquivo, abra https://seusite.com/wp-json/ no navegador: JSON cru significa rota viva; 404, 403 ou página em branco já localizam a falha.

A tabela abaixo cruza cada sintoma com a causa raiz e a ação corretiva, no padrão que usamos no diagnóstico interno antes de tocar em qualquer configuração do servidor.

<table id="diagnostico-json-invalido-wordpress">
  <caption>Erro não é um JSON válido no WordPress: sintomas e correções</caption>
  <thead>
    <tr>
      <th scope="col">Sintoma observado</th>
      <th scope="col">Causa raiz</th>
      <th scope="col">Ação corretiva</th>
    </tr>
  </thead>
  <tbody>
    <tr>
      <th scope="row">/wp-json/ retorna 403</th>
      <td>Plugin de segurança bloqueia a REST API</td>
      <td>Liberar /wp-json/ no firewall</td>
    </tr>
    <tr>
      <th scope="row">/wp-json/ retorna 404</th>
      <td>Permalink quebrado ou regra de reescrita ausente</td>
      <td>Resalvar links permanentes</td>
    </tr>
    <tr>
      <th scope="row">JSON com texto extra no início</th>
      <td>Warning de PHP impresso antes da resposta</td>
      <td>Desativar o plugin que gera o aviso</td>
    </tr>
    <tr>
      <th scope="row">Resposta em branco</th>
      <td>Cache servindo HTML antigo no endpoint</td>
      <td>Limpar cache de página e de objeto</td>
    </tr>
  </tbody>
</table>

<p class="wp-caption-text">Legenda: o aviso surge no rodapé do editor no momento exato em que o post tenta salvar via REST API.</p>

---

## Sinal 1: A REST API está bloqueada por plugin de segurança

A causa número 1 do erro não é um JSON válido no WordPress é um plugin de segurança bloqueando a rota /wp-json/. Ferramentas como Wordfence, iThemes Security e o All in One Security, em modo agressivo, derrubam requisições à REST API por confundi-las com ataque, e o firewall responde 403 em HTML onde o editor espera JSON.

O resultado é um padrão causal claro: o firewall devolve 403, o editor de blocos aguarda JSON, e o parse falha sem mensagem de erro útil no navegador. Para confirmar, desative temporariamente o plugin de segurança e tente salvar de novo. Se o erro some, a regra do firewall é a culpada. A correção é adicionar /wp-json/ à allowlist do plugin, em vez de manter a proteção desligada. A gente vê esse cenário com frequência em sites que migraram de host e herdaram regras antigas.

---

## Sinal 2: O permalink quebrou e o endpoint retorna 404

Quando o erro não é um JSON válido no WordPress vem acompanhado de 404 na rota /wp-json/, o problema está na estrutura de links permanentes. A REST API depende das regras de reescrita do .htaccess (Apache) ou do bloco location (Nginx) para rotear a requisição até o WordPress, e um permalink quebrado derruba esse roteamento em segundos.

Se o permalink está em modo Simples, ou se o .htaccess foi sobrescrito num deploy, o servidor devolve uma página 404 em HTML onde o editor esperava JSON. A correção leva 10 segundos: vá em Configurações, Links Permanentes e clique em Salvar sem mudar nada. Esse clique regenera as regras de reescrita. Em servidores Nginx, onde não há .htaccess, peça ao provedor para conferir o bloco de localização da REST API. Se você lida com 404 com frequência, vale conhecer o <a href="https://full.services/como-corrigir-erros-404-no-wordpress/">guia de correção de erros 404 no WordPress</a>.

---

## Sinal 3: Um warning de PHP contamina a resposta JSON

O sinal mais sutil do erro não é um JSON válido no WordPress aparece quando a REST API responde com status 200, mas o JSON vem com texto estranho antes da primeira chave. Um plugin ou tema imprime um <a href="https://full.services/glossario/json-wordpress/">aviso de PHP</a> (Notice ou Warning) no carregamento, e esse texto é concatenado antes do JSON real, quebrando o parse logo na linha 1.

O editor de blocos recebe algo como "Warning: ..." seguido do JSON, e o parser quebra na primeira linha. Abra /wp-json/wp/v2/posts direto no navegador: se houver qualquer caractere antes do colchete ou da chave inicial, esse é o ruído. A correção é identificar o plugin que gera o aviso (ativando o WP_DEBUG_LOG no wp-config.php) e atualizá-lo ou desativá-lo. Esse é o tipo de causa que não aparece na documentação oficial e só fica óbvia depois de inspecionar a resposta crua.

---

## Sinal 4: O cache serve HTML velho no endpoint da API

O erro não é um JSON válido no WordPress também aparece quando 1 camada de cache serve conteúdo desatualizado na rota /wp-json/. Plugins como WP Rocket, LiteSpeed Cache ou um CDN como Cloudflare podem, em configuração incorreta, cachear a resposta da REST API e devolver HTML antigo ou uma página vazia em vez do JSON dinâmico que o editor espera.

A relação causal é direta: cache de página ativo sobre o endpoint /wp-json/ mais o editor salvando resulta em resposta que não é JSON. A correção começa por limpar o <a href="https://full.services/glossario/cache-de-pagina/">cache de página</a> e o cache de objeto. Depois, adicione /wp-json/ à lista de exclusões de cache do seu plugin. No Cloudflare, crie uma regra de Cache Bypass para a rota da API. Em ambientes de agência, esse ajuste evita que o erro volte a cada novo deploy.

---

## Sinal 5: A versão do PHP ou um conflito de plugin trava a API

Quando nenhum dos sinais anteriores resolve, o erro não é um JSON válido no WordPress costuma vir de incompatibilidade de versão. A REST API exige funções que mudaram entre o PHP 7.4 e o PHP 8.2, e plugins desatualizados podem gerar um erro fatal que corta a resposta JSON no meio, sem aviso claro no editor.

Use a ferramenta Health Check & Troubleshooting do próprio WordPress para entrar em modo de resolução de problemas, que desativa todos os plugins só para o seu usuário. Se o salvamento volta a funcionar, reative um plugin por vez até o erro reaparecer. O último plugin reativado é o conflitante. Para evitar esse ciclo, mantenha um ambiente de teste antes de atualizar a versão do PHP. Vale ler também como <a href="https://full.services/como-evitar-erros-de-configuracao-no-wordpress/">evitar erros de configuração no WordPress</a> e o guia para <a href="https://full.services/como-corrigir-erro-do-servidor-interno-do-wordpress/">corrigir o erro interno do servidor</a>.

---

## Por que uma REST API saudável vai além do editor

Corrigir o erro não é um JSON válido no WordPress devolve algo maior que o botão Salvar: a mesma rota /wp-json/ alimenta o app móvel, integrações externas e qualquer tema ou plugin que leia ou grave dados via API. A <a href="https://developer.wordpress.org/rest-api/" rel="noopener" target="_blank">documentação oficial da REST API</a> mostra que ela é a espinha dorsal de comunicação do WordPress moderno, não um detalhe só do Gutenberg.

Na prática, vemos no suporte da FULL que um endpoint bloqueado costuma derrubar também o agendamento de posts, o preview e plugins que sincronizam estoque ou formulários. Por isso vale tratar a causa raiz, e não só fazer o erro sumir uma vez. Um plugin como o Rank Math PRO, por exemplo, depende dessa rota para gravar metadados de SEO; se a API falha, o salvamento do campo trava junto. Para configurar essa camada com segurança, veja <a href="https://full.services/como-instalar-o-rank-math-com-seguranca-e-sem-erros/">como instalar o Rank Math sem erros</a>.

---

## Resolva de uma vez e blinde o seu WordPress

A maioria dos casos do erro não é um JSON válido no WordPress se resolve liberando a REST API e resalvando o permalink, sem tocar em código. O problema é que ele tende a voltar a cada deploy quando o ambiente não está padronizado. O plano PRO da FULL custa R$849 e cobre até 10 sites, o que dá cerca de R$85 por site, com os 17 plugins do bundle (incluindo Rank Math PRO, WP Rocket e All in One Security) já configurados para conviver com a REST API sem conflito. A gente cuida dessa camada chata de compatibilidade para você focar no conteúdo. Conheça os <a href="https://full.services/planos">planos da FULL</a> e padronize o ambiente antes do próximo erro.

<aside aria-label="Metodologia dos Testes">
<h2 id="metodologia-dos-testes">Metodologia: Como mapeamos as causas</h2>
<p>As causas listadas neste guia vêm da observação recorrente de tickets de suporte da base FULL, que conecta cerca de 150 mil sites WordPress, somada à reprodução controlada em ambiente de teste entre <time datetime="2026-01">janeiro</time> e <time datetime="2026-05">maio de 2026</time>. Os cenários foram validados em WordPress 6.x, PHP 8.2, servidores Apache e Nginx, com os plugins de cache e segurança mais comuns ativos. Cada sinal foi confirmado abrindo o endpoint /wp-json/ direto no navegador para inspecionar a resposta crua antes do parse. Nenhuma proporção numérica de tickets é divulgada porque a FULL não publica esse dataset; o que trazemos é o padrão qualitativo recorrente.</p>
</aside>

<h2 id="faq">Perguntas frequentes sobre o erro não é um JSON válido no WordPress</h2>

<details>
<summary>É possível corrigir o erro de JSON inválido sem editar nenhum código?</summary>
<p>Sim, na maioria dos casos o erro não é um JSON válido no WordPress se resolve sem código. O caminho mais rápido é ir em Configurações, Links Permanentes e clicar em Salvar para regenerar as regras de reescrita, e depois liberar a rota /wp-json/ no plugin de segurança. Esses dois passos resolvem boa parte dos cenários sem abrir o .htaccess ou o wp-config.php.</p>
</details>

<details>
<summary>Por que o erro aparece só ao salvar e não ao ler o conteúdo?</summary>
<p>Porque ler usa cache, salvar usa a REST API. Exibir um post já publicado serve HTML do cache de página, que funciona normalmente. Salvar no editor de blocos envia uma requisição POST para /wp-json/, e é só nesse momento que a rota bloqueada ou quebrada dispara o erro não é um JSON válido no WordPress. Por isso o site parece normal até você tentar atualizar.</p>
</details>

<details>
<summary>Como testar se a REST API do WordPress está funcionando?</summary>
<p>Abra https://seusite.com/wp-json/ direto no navegador. Se aparecer um bloco de texto JSON com o nome e a descrição do site, a API está ativa. Se aparecer erro 403, 404 ou página em branco, você localizou a causa. Esse teste de 5 segundos elimina a maioria das suposições antes de mexer em qualquer arquivo.</p>
</details>

<details>
<summary>Um plugin de cache pode causar o erro não é um JSON válido no WordPress?</summary>
<p>Sim. Plugins como WP Rocket e LiteSpeed Cache, ou um CDN como Cloudflare, podem cachear a resposta da REST API por engano e servir HTML antigo onde o editor espera JSON dinâmico. A correção é adicionar /wp-json/ às exclusões de cache e limpar o cache de objeto. Sem essa exclusão, o erro tende a voltar após cada limpeza incompleta.</p>
</details>

<details>
<summary>O erro pode estar relacionado à versão do PHP do servidor?</summary>
<p>Pode. A REST API usa funções que mudaram entre o PHP 7.4 e o PHP 8.2, e um plugin desatualizado pode gerar erro fatal que corta a resposta JSON e dispara o erro não é um JSON válido no WordPress. Use o Health Check & Troubleshooting para isolar o plugin conflitante. Manter o PHP atualizado e testar plugins em ambiente de homologação previne a recorrência.</p>
</details>
