Als Webentwickler/in bist du wahrscheinlich mit Node.js und WordPress vertraut. Node.js ist eine leistungsstarke Laufzeitumgebung, die JavaScript außerhalb des Browsers ausführt, und WordPress ist das führende Content Management System (CMS).
Auf den ersten Blick scheinen Welten zwischen diesen beiden Plattformen zu liegen – Node.js mit seinem JavaScript-Backbone und WordPress, ein PHP-gestütztes CMS. Dank der WordPress REST API können sie jedoch zusammenarbeiten. Diese API ermöglicht es Node.js-Anwendungen, über HTTP-Anfragen mit WordPress zu interagieren. Sie ermöglicht den Zugriff auf verschiedene Daten wie Benutzer, Kommentare, Seiten, Beiträge und andere Elemente der Website.
Aber welche Vorteile hat die Kombination von Node.js und WordPress?
Stell dir vor, du hast eine WordPress-Website und möchtest ein eigenes Dashboard erstellen. Dieses Dashboard könnte Echtzeitdaten von deiner Website anzeigen, z. B. die letzten Beiträge, die Anzahl der Kommentare und die Nutzeraktivitäten.
Hier spielt Node.js eine entscheidende Rolle. Dieser Leitfaden zeigt dir, wie du Node.js-Endpunkte einrichtest. Diese Endpunkte nutzen die WordPress REST API für verschiedene Aufgaben: Aktualisieren von Beiträgen, Moderieren von Kommentaren, Anpassen der Seite und maßgeschneiderte WordPress-Seitenverwaltung.
Voraussetzungen
Um diesem Leitfaden folgen zu können, setzen wir voraus, dass du Folgendes hast
- Grundlegende Kenntnisse von Node.js.
- Node.js und npm sind auf deinem Computer installiert.
- WordPress und die Thunder Client VS Code Erweiterung installiert hast.
WordPress-Beiträge mit Node.js verwalten
Zu den grundlegenden Aufgaben in WordPress gehören das Erstellen, Aktualisieren und Löschen von Beiträgen. In diesem Abschnitt wird erklärt, wie du spezielle Endpunkte für diese Aktionen erstellst und wie du für jeden Vorgang Anfragen an den Endpunkt /posts
stellst.
Einen neuen Beitrag in WordPress erstellen
Um einen neuen Beitrag in WordPress mit der REST-API zu erstellen, stellst du eine POST-Anfrage an den Endpunkt /posts
. Im Text der Anfrage musst du den Inhalt deines WordPress-Beitrags im JSON-Format angeben.
Öffne zunächst deine Node.js-Serverdatei, die normalerweise App.js heißt. Vergewissere dich, dass Express in deiner Serverdatei richtig eingerichtet ist. Dies geschieht normalerweise mit der Zeile const app = express()
, die Express initialisiert.
Als nächstes implementierst du eine Route in deiner Serverdatei, um einen neuen Beitrag hinzuzufügen. Der Code für diese Route sieht wie folgt aus:
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)
}
})
Dieser Code erstellt einen Endpunkt /add-post
in deiner Anwendung. Wenn eine Anfrage an diesen Endpunkt gesendet wird, extrahiert er die Post-ID aus dem Anfragetext und sendet eine POST-Anfrage an deine WordPress-Website. Vergiss nicht, https://yourdomain.com
durch deine WordPress-Domain zu ersetzen.
Du kannst dies mit Tools wie Thunder Client in Visual Studio Code testen. Achte darauf, dass der JSON-Body deiner Anfrage gültig ist, um Fehler zu vermeiden.
Dieser Ansatz ermöglicht ein effizientes und automatisiertes Einstellen von Beiträgen auf deiner WordPress-Seite aus deiner Anwendung heraus.
Einen bestehenden Beitrag in WordPress aktualisieren
Um einen Beitrag mit der WordPress-API zu aktualisieren, stellst du eine PUT-Anfrage an den Endpunkt /posts
in deiner WordPress-API. Du musst auch den aktualisierten Inhalt deines WordPress-Beitrags im JSON-Format bereitstellen.
Der Weg zum Aktualisieren eines bestehenden Beitrags in WordPress ist wie folgt:
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)
}
})
Zum Beispiel kannst du einen Beitrag mit der ID 3
in WordPress mit der folgenden Anfrage im Thunder Client aktualisieren:
Löschen eines Beitrags in WordPress
Um einen Beitrag in WordPress zu löschen, stellst du eine DELETE-Anfrage an den Endpunkt /posts
mit der eindeutigen ID des Beitrags, den du löschen möchtest.
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)
}
})
Das Ergebnis sollte wie folgt aussehen:
WordPress-Kommentare mit Node.js moderieren
Die Comments API ermöglicht es dir, von einer Anwendung aus auf die Kommentare auf deiner WordPress-Website zuzugreifen und sie zu bearbeiten. Innerhalb dieser API gibt es einen Endpunkt zum Erstellen, Auflisten, Lesen, Aktualisieren und Löschen von Kommentaren auf einer WordPress-Website.
Nehmen wir an, du möchtest nicht, dass deine WordPress-Seite Kommentare mit dem Satz „Folge mir“ veröffentlicht. In diesem Beispiel kannst du einen regex
Ausdruck verwenden, um jeden Kommentar auf diese Phrase zu überprüfen, bevor du ihn veröffentlichst.
Verwende dazu den folgenden Code:
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)
}
})
Auf diese Weise werden nur die Kommentare auf der Website veröffentlicht, die nicht die Phrase „Folge mir“ enthalten, während Kommentare wie der untenstehende nicht veröffentlicht werden:
Seiten für Nutzer anpassen
Indem du die Präferenzen der Nutzer/innen speicherst und ihr Land bestimmst, kannst du deine WordPress-Seiten für jede/n Nutzer/in individuell anpassen.
In Node.js kannst du Nutzerdaten in Cookies von der Anmelde- oder Registrierungsroute deiner Backend-Anwendung speichern und das Cookie in ihrem Webbrowser ablegen, etwa so:
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.")
})
Bei der Anmeldung ermittelst du die bevorzugte Sprache des Nutzers und sendest sie als Cookie zusammen mit der cookie_id
an den Browser.
Mit der im Browser gespeicherten Sprache kannst du nun die WordPress-Beiträge in der Sprache des Nutzers abrufen. Dazu musst du deine Beiträge zunächst in WordPress übersetzen. Das kannst du ganz einfach tun, indem du WPML und Yoast SEO in deine WordPress-Seite integrierst.
Sobald sie integriert sind, werden verschiedene Unterordner für andere Sprachen erstellt:
- mydomain.com/de/
- mydomain.com/es/
- mydomain.com/fr/
Wenn du WordPress-Beiträge abrufst, kannst du die Liste der Beiträge in der bevorzugten Sprache des Nutzers abrufen, da diese in den Cookies gespeichert ist.
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)
}
})
Auf diese Weise erhältst du die Liste der Beiträge in der Sprache, die der Nutzer bei der Anmeldung angegeben hat.
Benutzerdefinierte Verwaltung verwenden
Durch die Erweiterung des Benutzerendpunkts kannst du ein benutzerdefiniertes Administrationspanel erstellen, um WordPress-Benutzer, -Rollen und -Berechtigungen zu steuern. Mit der Benutzer-API kannst du von einer Anwendung aus, die wie die Kommentar-API funktioniert, auf Benutzerinformationen auf deiner WordPress-Website zugreifen und diese bearbeiten.
Wenn du zum Beispiel die Rolle eines Benutzers auf „Administrator“ ändern möchtest, kannst du folgenden Weg gehen:
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)
}
})
In der Anfrage übergibst du ein Objekt mit der ID des Benutzers, dessen Datensatz du aktualisieren möchtest, sowie die neuen Details.
Wenn du mit der Entwicklung deines Node.js-Servers fertig bist. Du kannst ihn ganz einfach auf Kinstas Anwendungs-Hosting hosten.
Zusammenfassung
Die Integration von Node.js in deine WordPress-Website eröffnet dir das Potenzial für mehr Funktionalität. Du kannst Beiträge aktualisieren, Kommentare moderieren, Benutzerrollen festlegen und Anpassungen je nach Land deiner Benutzer vornehmen.
Neben den bereits erwähnten Funktionen kannst du auch eine erweiterte Suche, die Bearbeitung von Themen und die Überarbeitung von Beiträgen einrichten. Zögere nicht, dir das REST-API-Handbuch anzusehen und mit der Erkundung zu beginnen.
Was hältst du von der WordPress REST API? Hast du sie schon für einige deiner Projekte genutzt? Sag es uns im Kommentarbereich unten!
Schreibe einen Kommentar