In qualità di sviluppatori web, probabilmente conoscete Node.js e WordPress. Node.js è un potente ambiente di runtime che esegue JavaScript al di fuori del browser e WordPress è il principale sistema di gestione dei contenuti (CMS).
Queste piattaforme potrebbero sembrare distanti tra loro: Node.js, con la sua struttura portante in JavaScript, e WordPress, un CMS alimentato da PHP. Tuttavia, possono lavorare in tandem grazie alla REST API di WordPress. Questa API consente alle applicazioni Node.js di interagire con WordPress tramite richieste HTTP. Fornisce l’accesso a vari dati, tra cui utenti, commenti, pagine, post e altri elementi del sito.
Ma qual è il vantaggio di combinare Node.js e WordPress?
Immaginate di avere un sito WordPress e di voler creare una dashboard personalizzata. Questa dashboard potrebbe visualizzare i dati del sito in tempo reale, come i post recenti, il numero di commenti e l’attività degli utenti.
È qui che Node.js gioca un ruolo fondamentale. Questa guida vi spiega come configurare gli endpoint Node.js. Questi endpoint sfruttano l’API REST di WordPress per varie attività: aggiornamento dei post, moderazione dei commenti, personalizzazione del sito e amministrazione personalizzata del sito WordPress.
Prerequisiti
Per seguire questa guida, è necessario avere:
- Conoscenza di base di Node.js.
- Node.js e npm installati sul computer.
- WordPress e l’estensione Thunder Client VS Code installati.
Gestire i post di WordPress con Node.js
In WordPress, le attività fondamentali sono la creazione, l’aggiornamento e la cancellazione dei post. Questa sezione spiega come creare endpoint specifici per queste azioni e come effettuare richieste all’endpoint /posts
per ogni operazione.
Creare un nuovo post in WordPress
Per creare un nuovo post in WordPress con l’API REST, effettuate una richiesta POST all’endpoint /posts
. Nel corpo della richiesta, dovrete fornire il contenuto del post di WordPress in formato JSON.
Per prima cosa, aprite il file del server Node.js, solitamente chiamato App.js. Assicuratevi che Express sia impostato correttamente nel file del server. In genere questo avviene con la riga const app = express()
, che inizializza Express.
Successivamente, implementate una route nel file server per aggiungere un nuovo post. Il codice di questa route sarà qualcosa di simile:
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)
}
})
Questo codice crea un endpoint /add-post
nell’applicazione. Quando una richiesta viene inviata a questo endpoint, estrae l’ID del post dal corpo della richiesta e invia una richiesta POST al sito WordPress. Ricordate di sostituire https://yourdomain.com
con il vostro dominio WordPress.
Potete testare questo metodo utilizzando strumenti come Thunder Client in Visual Studio Code. Assicuratevi che il corpo JSON della richiesta sia valido per evitare errori.
Questo approccio consente di pubblicare in modo efficiente e automatico i post sul sito WordPress dall’applicazione.
Aggiornare un post esistente in WordPress
Per aggiornare un post con l’API di WordPress, fate una richiesta PUT all’endpoint /posts
dell’API di WordPress. Dovete anche fornire il contenuto aggiornato del post di WordPress in formato JSON.
Il percorso per aggiornare un post esistente in WordPress è il seguente:
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)
}
})
Ad esempio, potete aggiornare un post con un ID di 3
in WordPress con la seguente richiesta in Thunder Client:
Eliminare un post in WordPress
Per eliminare un post in WordPress, effettuate una richiesta DELETE all’endpoint /posts
utilizzando l’ID univoco del post che volete eliminare.
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)
}
})
Il risultato dovrebbe essere simile a questo:
Moderare i commenti di WordPress con Node.js
L’API dei commenti permette di accedere e manipolare i commenti sul sito WordPress da un’applicazione. All’interno di questa API c’è un endpoint per creare, elencare, leggere, aggiornare e cancellare i commenti su un sito WordPress.
Supponiamo che non vogliate che il sito WordPress pubblichi commenti con la frase “Follow me”. In questo esempio, potete utilizzare un’espressione di regex
per verificare la presenza di questa frase in ogni commento prima di pubblicarlo.
Per farlo, utilizzate il seguente codice:
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)
}
})
Con questo percorso, solo i commenti che non includono la frase “Follow me” vengono pubblicati sul sito web, mentre i commenti come quello qui sotto non vengono pubblicati:
Personalizzazione dei siti per gli utenti
Memorizzando le preferenze degli utenti e determinando il loro paese, potete personalizzare le pagine di WordPress per ogni utente.
In Node.js, potete memorizzare i dati dell’utente nei cookie del percorso di login o di iscrizione dell’applicazione backend e inserire il cookie nel suo browser web, in questo modo:
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.")
})
Al momento dell’iscrizione, ottienete la lingua preferita dall’utente e la inviate al browser sotto forma di cookie insieme al sito cookie_id
.
Ora, con la lingua memorizzata nel browser, potete usarla per recuperare i post di WordPress nella lingua dell’utente. Per fare ciò, dovrete prima tradurre i post in WordPress. Un modo semplice per farlo è integrare WPML e Yoast SEO nel vostro sito WordPress.
Una volta integrati, vengono create diverse sottocartelle per le altre lingue:
- mydomain.com/en/
- mydomain.com/es/
- mydomain.com/fr/
Quando si recuperano i post di WordPress, è possibile ottenere l’elenco dei post nella lingua preferita dall’utente, poiché è memorizzata nei cookie.
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)
}
})
In questo modo otterrete l’elenco dei post in base alla lingua specificata dall’utente durante la registrazione.
Usare l’amministrazione personalizzata
Estendendo l’endpoint dell’utente, potete creare un pannello di amministrazione personalizzato per controllare gli utenti, i ruoli e i permessi di WordPress. L’API Utenti permette di accedere e manipolare le informazioni sugli utenti del sito WordPress da un’applicazione che funziona come l’API Commenti.
Ad esempio, se volete aggiornare il ruolo di un utente a “Amministratore”, ecco il percorso che potete utilizzare:
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)
}
})
Nella richiesta, passate un oggetto contenente l’ID dell’utente di cui volete aggiornare il record e i nuovi dettagli.
Una volta finito di sviluppare il server Node.js. potete sempre ospitarlo con facilità sull’Hosting di Applicazioni di Kinsta.
Riepilogo
L’integrazione di Node.js con un sito WordPress apre le porte a una maggiore funzionalità. Potete aggiornare i post, moderare i commenti, impostare i ruoli degli utenti e aggiungere personalizzazioni in base al paese dell’utente.
Oltre alle funzioni già descritte, potete aggiungere la ricerca avanzata, la manipolazione dei temi e la revisione dei post. Non esitate a consultare il Manuale delle API REST e iniziare a fare le vostre prove.
Cosa ne pensate dell’API REST di WordPress? L’avete utilizzata per alcuni dei vostri progetti? Raccontatecelo nella sezione commenti qui sotto!
Lascia un commento