En tant que développeur web, vous connaissez probablement Node.js et WordPress. Node.js est un puissant environnement d’exécution qui permet de faire fonctionner JavaScript en dehors du navigateur, et WordPress est le principal système de gestion de contenu (CMS).

Ces plateformes peuvent sembler très éloignées l’une de l’autre : Node.js, avec sa colonne vertébrale JavaScript, et WordPress, un système de gestion de contenu (CMS) fonctionnant en PHP. Cependant, elles peuvent fonctionner en tandem, grâce à l’API REST de WordPress. Cette API permet aux applications Node.js d’interagir avec WordPress par le biais de requêtes HTTP. Elle permet d’accéder à diverses données, notamment les utilisateurs, les commentaires, les pages, les articles et d’autres éléments du site.

Mais quel est l’intérêt de combiner Node.js et WordPress ?

Imaginez que vous ayez un site WordPress et que vous souhaitiez créer un tableau de bord personnalisé. Ce tableau de bord pourrait afficher des données en temps réel de votre site, comme les articles récents, le nombre de commentaires et l’activité des utilisateurs.

C’est là que Node.js joue un rôle essentiel. Ce guide vous guide dans la mise en place de points de terminaison Node.js. Ces points de terminaison exploitent l’API REST de WordPress pour diverses tâches : mise à jour des articles, modération des commentaires, personnalisation du site et administration personnalisée du site WordPress.

Pré-requis

Pour suivre ce guide, nous supposons que vous avez :

Gérer les articles WordPress avec Node.js

Dans WordPress, les tâches fondamentales incluent la création, la mise à jour et la suppression d’articles. Cette section explique comment créer des points de terminaison spécifiques pour ces actions, ainsi que comment faire des requêtes au point de terminaison /posts pour chaque opération.

Création d’un nouvel article dans WordPress

Pour créer un nouvel article dans WordPress avec l’API REST, envoyez une requête POST au point de terminaison /posts. Dans le corps de la requête, vous devez fournir le contenu de votre article WordPress au format JSON.

Tout d’abord, ouvrez votre fichier serveur Node.js, généralement nommé App.js. Assurez-vous que Express est correctement configuré dans votre fichier serveur. Cela se fait généralement avec la ligne const app = express(), qui initialise Express.

Ensuite, implémentez une route dans votre fichier serveur pour ajouter un nouveau message. Le code de cette route ressemble à ceci :

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)        
  }
})

Ce code crée un point de terminaison /add-post dans votre application. Lorsqu’une requête est envoyée à ce point de terminaison, il extrait l’identifiant de l’article du corps de la requête et envoie une requête POST à votre site WordPress. N’oubliez pas de remplacer https://yourdomain.com par votre domaine WordPress.

Vous pouvez tester ceci en utilisant des outils comme Thunder Client dans Visual Studio Code. Assurez-vous que le corps JSON de votre requête est valide pour éviter les erreurs.

Corps JSON d'une requête POST vers le point de terminaison /add-post.
Corps JSON d’une requête POST vers le point de terminaison /add-post.

Cette approche permet de publier efficacement et automatiquement des articles sur votre site WordPress à partir de votre application.

Mise à jour d’un article existant dans WordPress

Pour mettre à jour un article avec l’API WordPress, faites une requête PUT au point de terminaison /posts dans votre API WordPress. Vous devez également fournir le contenu mis à jour de votre article WordPress au format JSON.

La procédure de mise à jour d’un article existant dans WordPress est la suivante :

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)        
  }
})

Par exemple, vous pouvez mettre à jour un article avec un ID de 3 dans WordPress avec la requête suivante dans Thunder Client :

Corps JSON d'une requête PUT au point de terminaison /update-post.
Corps JSON d’une requête PUT au point de terminaison /update-post.

Suppression d’un article dans WordPress

Pour supprimer un article dans WordPress, faites une requête DELETE au point de terminaison /posts en utilisant l’identifiant unique de l’article que vous voulez supprimer.

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)        
    }
})

Le résultat devrait ressembler à ceci :

Corps JSON d'une requête DELETE au point de terminaison /delete-post.
Corps JSON d’une requête DELETE au point de terminaison /delete-post.

Modérer les commentaires WordPress avec Node.js

L’API Commentaires vous permet d’accéder et de manipuler les commentaires sur votre site WordPress depuis une application. Au sein de cette API se trouve un point de terminaison pour créer, lister, lire, mettre à jour et supprimer des commentaires sur un site WordPress.

Supposons que vous ne souhaitiez pas que votre site WordPress publie des commentaires contenant la phrase « follow me » Dans cet exemple, vous pouvez utiliser une expression regex pour vérifier la présence de cette phrase dans chaque commentaire avant de le publier.

Pour cela, utilisez le code suivant :

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)
        
    }
})

Avec cette route, seuls les commentaires qui ne contiennent pas la phrase « follow me » sont publiés sur le site web, tandis que les commentaires comme celui ci-dessous ne sont pas publiés :

Corps JSON d'une requête POST au point de terminaison /add-comment excluant les commentaires avec Follow me.
Corps JSON d’une requête POST au point de terminaison /add-comment excluant les commentaires avec Follow me.

Personnalisation des sites pour les utilisateurs

En enregistrant les préférences des utilisateurs et en déterminant leur pays, vous pouvez personnaliser vos pages WordPress pour chaque utilisateur.

Dans Node.js, vous pouvez stocker les données de l’utilisateur dans des cookies à partir de la route de connexion ou d’inscription de votre application dorsale et placer le cookie dans leur navigateur web, comme suit :

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.")
})

Lors de l’inscription, vous récupérez la langue préférée de l’utilisateur et l’envoyez au navigateur sous forme de cookies avec le site cookie_id.

Maintenant, avec la langue stockée dans le navigateur, vous pouvez l’utiliser pour récupérer les articles WordPress dans la langue de l’utilisateur. Pour cela, vous devez d’abord traduire vos articles dans WordPress. Un moyen facile de le faire est d’intégrer WPML et Yoast SEO dans votre site WordPress.

Une fois intégrés, différents sous-dossiers sont créés pour les autres langues :

  • mydomain.com/en/
  • mydomain.com/es/
  • mydomain.com/fr/

Lorsque vous récupérez des articles WordPress, vous pouvez obtenir la liste des articles dans la langue préférée de l’utilisateur, celle-ci étant stockée dans les 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)        
    }
})

Vous obtenez ainsi la liste des articles en fonction de la langue spécifiée par l’utilisateur lors de son inscription.

Utilisation de l’administration personnalisée

En étendant le point de terminaison de l’utilisateur, vous pouvez construire un panneau d’administration personnalisé pour contrôler les utilisateurs, les rôles et les autorisations de WordPress. L’API Users vous permet d’accéder et de manipuler les informations sur les utilisateurs de votre site WordPress à partir d’une application qui fonctionne comme l’API Comment.

Par exemple, si vous souhaitez mettre à jour le rôle d’un utilisateur en le transformant en « Administrateur », voici la procédure à suivre :

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)        
   }
})

Dans la requête, passez un objet contenant l’ID de l’utilisateur dont vous souhaitez mettre à jour l’enregistrement, ainsi que les nouveaux détails.

Corps JSON d'une requête PUT au point de terminaison /update-user.
Corps JSON d’une requête PUT au point de terminaison /update-user.

Lorsque vous avez terminé le développement de votre serveur Node.js. Vous pouvez toujours l’héberger facilement sur l’hébergement d’application de Kinsta.

Résumé

L’intégration de Node.js à votre site WordPress ouvre la voie à de plus grandes fonctionnalités. Vous pouvez mettre à jour les articles, modérer les commentaires, définir les rôles des utilisateurs et ajouter des personnalisations en fonction du pays de l’utilisateur.

Outre les fonctionnalités que nous avons déjà abordées, vous pouvez ajouter la recherche avancée, la manipulation de thèmes et la révision d’articles. N’hésitez pas à consulter le manuel de l’API REST et à commencer à l’explorer.

Que pensez-vous de l’API REST de WordPress ? L’avez-vous utilisée pour certains de vos projets ? Dites-le-nous dans la section des commentaires ci-dessous !

Jeremy Holcombe Kinsta

Rédacteur en chef du contenu et du marketing chez Kinsta, développeur web WordPress et rédacteur de contenu. En dehors de WordPress, j'aime la plage, le golf et le cinéma. J'ai aussi des problèmes avec les personnes de grande taille ;).