Como publicar automaticamente no WordPress pela API REST

2026-07-31 · 3 min

Publicar no WordPress por API parece simples até a primeira integração real. O caminho feliz tem quatro passos; o que faz a integração ser confiável são as armadilhas que aparecem depois — e que falham em silêncio, que é o pior tipo de falha.

O caminho básico

1. Credencial. No WordPress do destino: Usuários → Perfil → Senhas de aplicação. Gere uma senha por integração. Autenticação é Basic, com usuario:senha-de-aplicacao em base64 no cabeçalho Authorization.

2. Descobrir onde a REST responde. O padrão é https://site.com/wp-json/. Mas em instalação com permalink simples esse caminho não existe e a API responde em https://site.com/?rest_route=/.

3. Enviar a capa antes do post. POST /wp/v2/media com o binário da imagem e Content-Disposition: attachment; filename="capa.webp". A resposta traz um id.

4. Criar o post. POST /wp/v2/posts com título, conteúdo, status, categorias e featured_media apontando para o id do passo anterior.

As três armadilhas

Redirect transforma sucesso em fracasso silencioso

Se o site redireciona — http para https, ou domínio sem www para com www — e o seu cliente HTTP segue redirect automaticamente, acontece o seguinte: num 301, o método POST vira GET e o cabeçalho Authorization é descartado por segurança.

O WordPress recebe um GET sem autenticação em /wp-json/wp/v2/posts, e responde 200 com a lista de posts existentes. Se o seu código checa apenas o status HTTP, ele conclui que deu certo. O painel fica verde, a matéria é marcada como entregue, e o WordPress do cliente permanece vazio.

Como evitar: resolva a URL canônica uma vez, seguindo os redirects manualmente. Depois disso, escreva com maxRedirects: 0 — depois de canonicalizar, redirect em escrita é erro, não algo a seguir. E confirme sucesso pela presença de um id de post na resposta, nunca pelo status.

401 que não é culpa da senha

Hospedagem que roda PHP como CGI ou FastCGI frequentemente descarta o cabeçalho Authorization antes de entregar ao PHP. A credencial está correta e o WordPress nunca a recebe.

Sintoma típico: funciona no seu computador, falha no servidor do cliente. Solução do lado dele, no .htaccess:

SetEnvIf Authorization "(.*)" HTTP_AUTHORIZATION=$1

Plugin de segurança bloqueando a REST API produz o mesmo sintoma e exige liberar a rota na configuração do plugin.

Reenvio duplicando matéria

Toda integração vai reenviar em algum momento — retry após falha de rede, correção de texto, reprocessamento. Sem controle de identidade, cada reenvio vira um post novo.

Como evitar: guarde o id do post retornado pelo WordPress e associe à sua matéria. No reenvio, se já existe id, faça POST /wp/v2/posts/{id} para atualizar em vez de criar. Assim reprocessar é seguro, e retry deixa de ser risco.

Rascunho ou publicado?

O campo status aceita draft, pending e publish. A escolha não é técnica, é editorial — e vale conversar antes de decidir por padrão.

Publicação automática direta significa conteúdo indo ao ar sem revisão humana, no nome do portal. Erro de curadoria vira erro público. A recomendação para quem está começando é entregar como draft e acompanhar alguns dias antes de mudar: o custo de revisar é baixo, e o de publicar errado, não.

O que separa protótipo de integração confiável

O caminho feliz cabe em vinte linhas. O que dá trabalho é o resto:

  • Resolver a URL real, tratando redirect e permalink simples
  • Confirmar sucesso pelo id do post, não pelo status HTTP
  • Guardar o id para que reenvio atualize em vez de duplicar
  • Traduzir erro HTTP em recado acionável — "credenciais recusadas, confira a senha de aplicação" resolve; "erro 401" não
  • Retry com backoff, porque falha de rede é normal e não deve custar a matéria

Nenhum desses itens aparece na primeira versão. Todos aparecem no primeiro cliente real.

Perguntas frequentes

Como autenticar na API REST do WordPress?

O caminho recomendado é Application Password, criado em Usuários → Perfil → Senhas de aplicação. A autenticação é Basic, com usuário e a senha gerada. Não use a senha normal da conta, e crie uma senha de aplicação por integração — assim revogar uma não derruba as outras.

Por que a API REST do WordPress responde 401 mesmo com a senha correta?

A causa mais comum é a hospedagem rodando PHP como CGI ou FastCGI, que descarta o cabeçalho Authorization antes de chegar no WordPress. Também pode ser plugin de segurança bloqueando a REST API. Nos dois casos a credencial está certa e o problema é de servidor.

Onde fica o endpoint da API REST se o site não usa permalink bonito?

Em instalações com permalink simples, /wp-json/ não existe. A REST responde em /?rest_route=/. Uma integração robusta precisa testar os dois formatos, porque instalação nova de WordPress frequentemente cai no segundo.

Como enviar a imagem de capa junto com o post?

A capa precisa ser enviada antes, para a biblioteca de mídia, via POST em /wp/v2/media com o binário e o cabeçalho Content-Disposition. A resposta traz um id, que você usa no campo featured_media ao criar o post. Colocar a imagem só no corpo do texto não define capa.

Pronto pra abastecer o seu portal?

Comece grátis em minutos. Sem cartão, sem instalar nada.

Começar grátis