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:
- Conhecimento básico do Node.js.
- Node.js e npm instalados em seu computador.
- O WordPress e a extensão Thunder Client VS Code instalados.
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.
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:
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:
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:
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.
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!
Deixe um comentário