Como corrigir Publishing failed / Updating failed (REST API)
O que é a falha ao publicar pela REST API?
A falha ao publicar pela REST API do WordPress é o erro “Publishing failed” (ou “Updating failed”) do editor de blocos. O Gutenberg não envia o post por um formulário tradicional: ele faz uma requisição AJAX para a REST API em /wp-json/wp/v2/posts. Se essa rota responde 403, 404, redireciona ou devolve HTML em vez de JSON, o editor não consegue confirmar o salvamento e mostra a falha, ainda que o texto digitado esteja certo.
Como identificar
- Mensagem “Publishing failed. The response is not a valid JSON response.” ao clicar em Publicar.
- Mensagem “Updating failed.” ao tentar atualizar um post existente.
- Ao abrir /wp-json/ no navegador, aparece um 403, um 404 ou uma página de HTML em vez de JSON.
- O Editor Clássico salva normal, mas o editor de blocos (Gutenberg) falha em todo post.
Como prevenir
- Sempre que ativar um firewall ou WAF, confirme que a rota /wp-json/ continua liberada para usuários logados
- Mantenha siteurl, home e o certificado SSL consistentes (mesmo domínio e mesmo HTTPS) para a REST API não redirecionar
- Verifique a REST API em Ferramentas > Saúde do Site após cada atualização grande de plugin de segurança ou SEO
Causa
- Plugin de segurança ou firewall (WAF) bloqueando a rota /wp-json/ da REST API.
- Regra de .htaccess ou permalink quebrado fazendo /wp-json/ retornar 404 em vez do JSON.
- Plugin de SEO ou de privacidade desativando a REST API para usuários logados.
- URL do site (siteurl/home) ou certificado SSL inconsistente, gerando redirecionamento na chamada REST.
- Erro fatal de PHP em outro plugin que injeta um aviso (warning/notice) antes do JSON, invalidando a resposta.
Como resolver
- Teste a REST API: abra https://seusite.com/wp-json/ no navegador. Se não aparecer um JSON, a rota está bloqueada ou quebrada: esse é o ponto a corrigir.
- Use a Saúde do Site: vá em Ferramentas > Saúde do Site. O WordPress avisa explicitamente quando a REST API não está acessível e mostra o código de status retornado.
- Regenere os permalinks: em Configurações > Links permanentes, clique em Salvar alterações. Isso reescreve o .htaccess e costuma destravar o /wp-json/ que retornava 404.
- Desative o firewall/segurança: via FTP, renomeie a pasta do plugin de segurança em wp-content/plugins. Se a publicação voltar, libere a rota /wp-json/ na configuração dele antes de reativar.
- Procure saída antes do JSON: ligue o WP_DEBUG_LOG e veja em wp-content/debug.log se algum plugin emite warning/notice. Esse texto sai antes do JSON e quebra a resposta da REST API.
// functions.php do tema-filho — força a REST API a usar a mesma URL/HTTPS do site
// Evita o redirecionamento que faz o Gutenberg receber HTML em vez de JSON.
add_filter( 'rest_url', function ( $url ) {
return set_url_scheme( $url, is_ssl() ? 'https' : 'http' );
} );
// Confirma que a REST API nao foi desativada por outro plugin para quem esta logado.
add_filter( 'rest_authentication_errors', function ( $result ) {
if ( true === $result || is_wp_error( $result ) ) {
return $result;
}
return $result; // mantem o comportamento padrao, sem bloquear logados
} );














