Como desenvolvedor web, você provavelmente conhece o Node.js e o WordPress. O Node.js é um ambiente runtime avançado que executa JavaScript fora do navegador, e o WordPress é o principal sistema de gerenciamento de conteúdo (CMS).

Essas plataformas distintas — Node.js, baseado em JavaScript, e WordPress, um CMS desenvolvido em PHP — podem operar juntas graças à API REST do WordPress. Essa API permite que os aplicativos do Node.js interajam com o WordPress por meio de solicitações HTTP. Ela fornece acesso a vários dados, incluindo usuários, comentários, páginas, publicações e outros elementos do site.

Mas qual é a vantagem de combinar Node.js e WordPress?

Imagine que você tenha um site WordPress e queira criar um painel personalizado. Esse painel poderia exibir dados em tempo real do seu site, como publicações recentes, contagem de comentários e atividade do usuário.

É aqui que o Node.js desempenha um papel fundamental. Este guia orienta você na configuração de endpoints do Node.js. Esses endpoints aproveitam a API REST do WordPress para várias tarefas: atualização de publicações, moderação de comentários, personalização do site e administração personalizada do site WordPress.

Pré-requisitos

Para acompanhar este guia, presumimos que você tenha:

Gerencie publicações do WordPress com o Node.js

No WordPress, as tarefas fundamentais incluem criar, atualizar e excluir publicações. Esta seção explica como criar endpoints específicos para essas ações, além de como fazer solicitações ao endpoint /posts para cada operação.

Criação de um novo artigo no WordPress

Para criar um novo artigo no WordPress com a API REST, você deve fazer uma solicitação POST para o endpoint /posts. No corpo da solicitação, você precisa fornecer o conteúdo do seu artigo WordPress no formato JSON.

Primeiro, abra o arquivo do servidor Node.js, geralmente chamado de App.js. Certifique-se de que o Express esteja configurado corretamente em seu arquivo de servidor. Normalmente, isso é feito com a linha const app = express(), que inicializa o Express.

Em seguida, implemente uma rota em seu arquivo de servidor para adicionar um novo artigo. O código para essa rota é parecido com o seguinte:

app.post("/add-post", async (req, res) => {
   try {
    const postID = req.body.id
    const resp = await axios.post(`https://yourdomain.com/wp-json/wp/v2/posts/${postID}`, req.body)
	
    if(resp.status !== 200) throw "Something went wrong"
       
  } catch (err) {        
    console.log(err)        
  }
})

Esse código cria um endpoint /add-post em seu aplicativo. Quando uma solicitação é enviada a esse endpoint, ele extrai o ID do artigo do corpo da solicitação e envia uma solicitação POST ao seu site WordPress. Lembre-se de substituir https://yourdomain.com pelo seu domínio WordPress.

Você pode testar isso usando ferramentas como o Thunder Client no Visual Studio Code. Certifique-se de que o corpo JSON da sua solicitação seja válido para evitar erros.

Corpo JSON de uma solicitação POST para o endpoint /add-post.
Corpo JSON de uma solicitação POST para o endpoint /add-post.

Essa abordagem permite que você faça publicações eficientes e automatizadas no site do WordPress a partir do seu aplicativo.

Atualização de um artigo existente no WordPress

Para atualizar um artigo com a API do WordPress, faça uma solicitação PUT para o endpoint /posts em sua API do WordPress. Você também precisa fornecer o conteúdo atualizado do seu artigo WordPress no formato JSON.

A rota para atualizar uma publicação existente no WordPress é a seguinte:

app.put("/update-post", async (req, res) => {
  try {
    const postID = req.body.id                    
      
    const resp = await axios.put(`https://yourdomain.com/wp-json/wp/v2/posts/${postID}`, req.body)
	
    if(resp.status !== 200) throw "Something went wrong"
       
  } catch (err) {        
    console.log(err)        
  }
})

Por exemplo, você pode atualizar um artigo com um ID de 3 no WordPress com a seguinte solicitação no Thunder Client:

Corpo JSON de uma solicitação PUT para o endpoint /update-post.
Corpo JSON de uma solicitação PUT para o endpoint /update-post.

Exclusão de um artigo no WordPress

Para excluir um artigo no WordPress, faça uma solicitação DELETE para o endpoint /posts usando o ID exclusivo do artigo que você deseja excluir.

app.delete("/delete-post", async (req, res) => {
  try {
    const postID = req.body.id                
        
    const resp = await axios.delete(`https://yourdomain.com/wp-json/wp/v2/posts/${postID}`)
	
    if(resp.status !== 200) throw "Something went wrong"
       
  } catch (err) {        
    console.log(err)        
    }
})

O resultado deve ser semelhante a este:

Corpo JSON de uma solicitação DELETE para o endpoint /delete-post.
Corpo JSON de uma solicitação DELETE para o endpoint /delete-post.

Como moderar comentários do WordPress com o Node.js

A API de comentários permite que você acesse e manipule comentários no seu site WordPress a partir de um aplicativo. Nessa API, há um endpoint para criar, listar, ler, atualizar e excluir comentários em um site do WordPress.

Vamos supor que você não queira que seu site WordPress publique comentários com a frase “Follow me” Neste exemplo, você pode usar uma expressão regex para verificar se há essa frase em cada comentário antes de publicá-lo.

Para fazer isso, use o código a seguir:

app.post("/add-comment", async (req, res) => {
  try {
    let regex = /follow me/i;    
    let comment = req.body.comment                
      
    if(regex.test(comment)) throw "Oops! Contains the forbidden word"  		

    const resp = await axios.post(`https://yourdomain/wp-json/wp/v2/comments`, req.body)
	
  if(resp.status !== 200) throw "Something went wrong"  		
	
  } catch (err) {      
  
  console.log(err)
        
    }
})

Com essa rota, somente os comentários que não incluírem a frase “Follow me” serão publicados no site, enquanto comentários como o abaixo não serão publicados:

Corpo JSON de uma solicitação POST para o endpoint/add-comment excluindo comentários com
Corpo JSON de uma solicitação POST para o endpoint/add-comment excluindo comentários com “Follow me”.

Personalização de sites para usuários

Ao armazenar preferências do usuário e determinar o país dele, você pode personalizar suas páginas do WordPress para cada usuário.

No Node.js, você pode armazenar os dados do usuário em cookies da rota de login ou inscrição do seu aplicativo de backend e colocar o cookie no navegador da web do usuário, da seguinte forma:

app.post("/sign-up", async (req, res) => {
  // Sign up user
    res.cookie("cookie_id", 123456)
    res.cookie("lang", req.body.language)
	
    res.status(200).json("Logged in.")
})

Ao se inscrever, você obtém o idioma preferido do usuário e o envia para o navegador como cookies, juntamente com o endereço cookie_id.

Agora, com o idioma armazenado no navegador, você pode usá-lo para buscar publicações do WordPress no idioma do usuário. Isso exige que você traduza seus artigos no WordPress primeiro. Uma maneira fácil de fazer isso é integrando o WPML e o Yoast SEO ao seu site WordPress.

Uma vez integrados, você criará subpastas diferentes para outros idiomas:

  • meudominio.com/en/
  • meudominio.com/es/
  • meudominio.com/fr/

Ao buscar publicações do WordPress, você pode obter a lista de publicações no idioma preferido do usuário, pois ele está armazenado nos cookies.

app.get("/get-posts", async (req, res) => {
  try { 
    const lang = req.cookies.lang
       
    const resp = await axios.get(`https://mydomain.com/${lang}/wp-json/wp/v1/posts`)
	
  if(resp.status !== 200) throw "Something went wrong"
       
  } catch (err) {        
    console.log(err)        
    }
})

Ao fazer isso, você obtém a lista de publicações com base no idioma que o usuário especificou durante a inscrição.

Uso da administração personalizada

Ao estender o endpoint do usuário, você pode criar um painel de controle personalizado para controlar usuários, funções e permissões do WordPress. A API de usuários permite que você acesse e manipule as informações do usuário no seu site WordPress a partir de um aplicativo que funcione como a API de comentários.

Por exemplo, se você quiser atualizar a função de um usuário para “Administrador”, aqui está a rota que você pode usar:

app.put("/update-user", async (req, res) => {
  try {
    const userID = req.body.id                
	
    const resp = await axios.put(`https://yourdomain/wp-json/wp/v2/users/${userID}`, req.body)
	
    if(resp.status !== 200) throw "Something went wrong"
       
  } catch (err) {        
    console.log(err)        
   }
})

Na solicitação, passe um objeto que contenha o ID do usuário cujo registro você deseja atualizar, bem como os novos detalhes.

Corpo JSON de uma solicitação PUT para o endpoint/update-user.
Corpo JSON de uma solicitação PUT para o endpoint/update-user.

Quando você terminar de desenvolver seu servidor Node.js. Você sempre pode hospedá-lo com facilidade na hospedagem de aplicativos da Kinsta.

Resumo

Ao integrar o Node.js ao seu site WordPress, você abre o potencial para uma maior funcionalidade. Você pode atualizar publicações, moderar comentários, definir funções de usuário e adicionar personalização com base no país do usuário.

Além das funcionalidades que já cobrimos, você pode adicionar pesquisa avançada, manipulação de temas e revisões de artigos. Não hesite em consultar o Manual da REST API e começar a explorar.

Qual é a sua opinião sobre a REST API do WordPress? Você já a utilizou em alguns de seus projetos? Compartilhe conosco na seção de comentários abaixo!

Jeremy Holcombe Kinsta

Editor de Conteúdo & Marketing na Kinsta, Desenvolvedor Web WordPress e Escritor de Conteúdo. Fora do universo WordPress, eu curto praia, golfe e filmes. Também enfrento problemas de gente alta ;).