{"id":79437,"date":"2025-02-27T12:56:56","date_gmt":"2025-02-27T11:56:56","guid":{"rendered":"https:\/\/kinsta.com\/fr\/?p=79437&#038;preview=true&#038;preview_id=79437"},"modified":"2025-02-28T13:26:08","modified_gmt":"2025-02-28T12:26:08","slug":"scripts-shell-api-kinsta","status":"publish","type":"post","link":"https:\/\/kinsta.com\/fr\/blog\/scripts-shell-api-kinsta\/","title":{"rendered":"G\u00e9rer vos sites WordPress avec des scripts shell et l&rsquo;API Kinsta"},"content":{"rendered":"<p>Si vous g\u00e9rez de nombreux sites WordPress, vous \u00eates probablement toujours \u00e0 la recherche de moyens pour simplifier et acc\u00e9l\u00e9rer vos flux de travail.<\/p>\n<p>Maintenant, imaginez ceci : avec une seule commande dans votre <a href=\"https:\/\/kinsta.com\/fr\/blog\/wp-cli\/\">terminal<\/a>, vous pouvez d\u00e9clencher des sauvegardes manuelles pour tous tes sites, m\u00eame si vous en g\u00e9rez des dizaines. C&rsquo;est la puissance de la combinaison des scripts shell avec l&rsquo;<a href=\"https:\/\/kinsta.com\/fr\/docs\/api-kinsta\/\">API de Kinsta<\/a>.<\/p>\n<p>Ce guide vous apprend \u00e0 utiliser les scripts shell pour mettre en place des commandes personnalis\u00e9es qui rendent la gestion de vos sites plus efficace.<\/p>\n<div><\/div><kinsta-auto-toc heading=\"Table of Contents\" exclude=\"last\" list-style=\"arrow\" selector=\"h2\" count-number=\"-1\"><\/kinsta-auto-toc>\n<h2>Pr\u00e9-requis<\/h2>\n<p>Avant de commencer, voici ce dont vous avez besoin :<\/p>\n<ol start=\"1\">\n<li><strong>Un terminal <\/strong>: Tous les syst\u00e8mes d&rsquo;exploitation modernes sont livr\u00e9s avec un logiciel de terminal, vous pouvez donc commencer \u00e0 \u00e9crire des scripts d\u00e8s le d\u00e9but.<\/li>\n<li><strong>Un IDE ou un \u00e9diteur de texte <\/strong>: Utilisez un outil avec lequel vous \u00eates \u00e0 l&rsquo;aise, qu&rsquo;il s&rsquo;agisse de VS Code, Sublime Text, ou m\u00eame d&rsquo;un \u00e9diteur l\u00e9ger comme Nano pour des modifications rapides sur le terminal.<\/li>\n<li><strong>Une cl\u00e9 API Kinsta <\/strong>: Elle est essentielle pour interagir avec l&rsquo;<a href=\"https:\/\/api-docs.kinsta.com\/\" target=\"_blank\" rel=\"noopener noreferrer\">API de Kinsta<\/a>. Pour g\u00e9n\u00e9rer la votre :\n<ul>\n<li>Connectez-vous \u00e0 votre tableau de bord <a href=\"https:\/\/my.kinsta.com\/login\/?lang=fr\" target=\"_blank\" rel=\"noopener noreferrer\">MyKinsta<\/a>.<\/li>\n<li>Allez dans <strong>Votre nom<\/strong> &gt; <strong>R\u00e9glages de l&rsquo;entreprise<\/strong> &gt; <strong>Cl\u00e9s API<\/strong>.<\/li>\n<li>Cliquez sur <strong>Cr\u00e9er une cl\u00e9 API<\/strong> et enregistrez-la en toute s\u00e9curit\u00e9.<\/li>\n<\/ul>\n<\/li>\n<li><strong><code>curl<\/code><\/strong><strong> et <\/strong><strong><code>jq<\/code>\u00a0<\/strong>: Indispensables pour effectuer des requ\u00eates d&rsquo;API et manipuler des donn\u00e9es JSON. V\u00e9rifiez qu&rsquo;ils sont install\u00e9s, ou installez-les.<\/li>\n<li><strong>Connaissance de base de la programmation <\/strong>: Vous n&rsquo;avez pas besoin d&rsquo;\u00eatre un expert, mais comprendre les bases de la programmation et la syntaxe des scripts shell sera utile.<\/li>\n<\/ol>\n<aside role=\"note\" class=\"wp-block-kinsta-notice is-style-info\">\n            <h3>Info<\/h3>\n        <p>Si vous d\u00e9couvrez l&rsquo;API de Kinsta, vous serez \u00e9tonn\u00e9 par sa polyvalence. Au fil des ans, nous avons publi\u00e9 des guides pr\u00e9sentant d&rsquo;excellents cas d&rsquo;utilisation, comme la <a href=\"https:\/\/kinsta.com\/fr\/blog\/construire-slackbot-nodejs-api-kinsta-gesion-site\/\">construction d&rsquo;un Slackbot<\/a> ou la <a href=\"https:\/\/kinsta.com\/fr\/blog\/mise-a-jour-groupee-plugins-wordpress\/\">cr\u00e9ation d&rsquo;une interface utilisateur personnalis\u00e9e<\/a> pour automatiser des t\u00e2ches telles que la mise \u00e0 jour de plugins sur plusieurs sites. Bien que l&rsquo;API soit actuellement en version b\u00eata publique, elle offre d\u00e9j\u00e0 un large \u00e9ventail de points de terminaison. Ne manquez pas d&rsquo;explorer la <a href=\"https:\/\/kinsta.com\/fr\/docs\/api-kinsta\/\" target=\"_blank\" rel=\"noopener noreferrer\">documentation<\/a> pour voir ce qui est possible.<\/p>\n<\/aside>\n\n<h2>\u00c9crire votre premier script<\/h2>\n<p>Cr\u00e9er votre premier script shell pour interagir avec l&rsquo;API de Kinsta est plus simple que vous ne le pensez. Commen\u00e7ons par un script simple qui r\u00e9pertorie tous les sites WordPress g\u00e9r\u00e9s sous votre compte Kinsta.<\/p>\n<h3>\u00c9tape 1 : Configurer votre environnement<\/h3>\n<p>Commencez par cr\u00e9er un dossier pour votre projet et un nouveau fichier de script. L&rsquo;extension <code>.sh<\/code> est utilis\u00e9e pour les scripts shell. Par exemple, vous pouvez cr\u00e9er un dossier, y naviguer, et cr\u00e9er et ouvrir un fichier de script dans VS Code \u00e0 l&rsquo;aide de ces commandes :<\/p>\n<pre><code class=\"language-bash\">mkdir my-first-shell-scripts\ncd my-first-shell-scripts\ntouch script.sh\ncode script.sh<\/code><\/pre>\n<h3>\u00c9tape 2 : D\u00e9finir vos variables d&rsquo;environnement<\/h3>\n<p>Pour s\u00e9curiser votre cl\u00e9 API, stockez-la dans un fichier <code>.env<\/code> au lieu de la coder en dur dans le script. Cela vous permet d&rsquo;ajouter le fichier <code>.env<\/code> \u00e0 <code>.gitignore<\/code>, ce qui l&#8217;emp\u00eache d&rsquo;\u00eatre transf\u00e9r\u00e9 au contr\u00f4le de version.<\/p>\n<p>Dans votre fichier <code>.env<\/code>, ajoutez :<\/p>\n<pre><code class=\"language-bash\">API_KEY=your_kinsta_api_key<\/code><\/pre>\n<p>Ensuite, tirez la cl\u00e9 API du fichier <code>.env<\/code> vers votre script en ajoutant ce qui suit en haut de votre script :<\/p>\n<pre><code class=\"language-bash\">#!\/bin\/bash\nsource .env<\/code><\/pre>\n<p>Le shebang <code>#!\/bin\/bash<\/code> garantit que le script s&rsquo;ex\u00e9cute \u00e0 l&rsquo;aide de Bash, tandis que <code>source .env<\/code> importe les variables d&rsquo;environnement.<\/p>\n<h3>\u00c9tape 3 : R\u00e9diger la requ\u00eate API<\/h3>\n<p>Tout d&rsquo;abord, enregistrez l&rsquo;<strong>identifiant de ton entreprise<\/strong> (que vous trouverez dans MyKinsta sous <strong>R\u00e9glages de l&rsquo;entreprise <\/strong>&gt;<strong> D\u00e9tails de la facturation<\/strong>) dans une variable :<\/p>\n<pre><code class=\"language-bash\">COMPANY_ID=\"&lt;your_company_id&gt;\"<\/code><\/pre>\n<p>Ensuite, ajoutez la commande curl pour faire une requ\u00eate GET au point de terminaison <code>\/sites<\/code>, en passant l&rsquo;ID de l&rsquo;entreprise comme param\u00e8tre de requ\u00eate. Utilisez <a href=\"https:\/\/www.baeldung.com\/linux\/jq-command-json\" target=\"_blank\" rel=\"noopener noreferrer\">jq<\/a> pour formater la sortie afin qu&rsquo;elle soit lisible :<\/p>\n<pre><code class=\"language-bash\">curl -s -X GET \n  \"https:\/\/api.kinsta.com\/v2\/sites?company=$COMPANY_ID\" \n  -H \"Authorization: Bearer $API_KEY\" \n  -H \"Content-Type: application\/json\" | jq<\/code><\/pre>\n<p>Cette requ\u00eate r\u00e9cup\u00e8re les d\u00e9tails de tous les sites associ\u00e9s \u00e0 votre entreprise, y compris leurs identifiants, leurs noms et leurs \u00e9tats.<\/p>\n<h3>\u00c9tape 4 : Rendre le script ex\u00e9cutable<\/h3>\n<p>Sauvegardez le script et rendez-le ex\u00e9cutable en l&rsquo;ex\u00e9cutant :<\/p>\n<pre><code class=\"language-bash\">chmod +x script.sh<\/code><\/pre>\n<h3>\u00c9tape 5 : Ex\u00e9cuter le script<\/h3>\n<p>Ex\u00e9cutez le script pour voir une liste format\u00e9e de vos sites :<\/p>\n<pre><code class=\"language-bash\">.\/list_sites.sh<\/code><\/pre>\n<p>Lorsque vous ex\u00e9cuterez le script, vous obtiendrez une r\u00e9ponse similaire \u00e0 celle-ci :<\/p>\n<pre><code class=\"language-bash\">{\n  \"company\": {\n    \"sites\": [\n      {\n        \"id\": \"a8f39e7e-d9cf-4bb4-9006-ddeda7d8b3af\",\n        \"name\": \"bitbuckettest\",\n        \"display_name\": \"bitbucket-test\",\n        \"status\": \"live\",\n        \"site_labels\": []\n      },\n      {\n        \"id\": \"277b92f8-4014-45f7-a4d6-caba8f9f153f\",\n        \"name\": \"duketest\",\n        \"display_name\": \"zivas Signature\",\n        \"status\": \"live\",\n        \"site_labels\": []\n      }\n    ]\n  }\n}<\/code><\/pre>\n<p>Bien que cela fonctionne, am\u00e9liorons-le en mettant en place une fonction pour r\u00e9cup\u00e9rer et formater les d\u00e9tails du site pour une meilleure lisibilit\u00e9.<\/p>\n<h3>\u00c9tape 6 : Refonte avec une fonction<\/h3>\n<p>Remplacez la requ\u00eate <code>curl<\/code> par une fonction r\u00e9utilisable qui se chargera de r\u00e9cup\u00e9rer et de formater la liste des sites :<\/p>\n<pre><code class=\"language-bash\">list_sites() {\n  echo \"Fetching all sites for company ID: $COMPANY_ID...\"\n  \n  RESPONSE=$(curl -s -X GET \"https:\/\/api.kinsta.com\/v2\/sites?company=$COMPANY_ID\" \n    -H \"Authorization: Bearer $API_KEY\" \n    -H \"Content-Type: application\/json\")\n\n  # Check for errors\n  if [ -z \"$RESPONSE\" ]; then\n    echo \"Error: No response from the API.\"\n    exit 1\n  fi\n\n  echo \"Company Sites:\"\n  echo \"--------------\"\n  echo \"$RESPONSE\" | jq -r '.company.sites[] | \"(.display_name) ((.name)) - Status: (.status)\"'\n}\n\n# Run the function\nlist_sites<\/code><\/pre>\n<p>Lorsque vous ex\u00e9cuterez \u00e0 nouveau le script, vous obtiendrez une sortie bien format\u00e9e :<\/p>\n<pre><code class=\"language-bash\">Fetching all sites for company ID: b383b4c-****-****-a47f-83999c5d2...\nCompany Sites:\n--------------\nbitbucket-test (bitbuckettest) - Status: live\nzivas Signature (duketest) - Status: live<\/code><\/pre>\n<p>Avec ce script, vous avez fait un premier pas vers l&rsquo;utilisation de scripts shell et de l&rsquo;API Kinsta pour automatiser la gestion de votre site WordPress. Dans les sections suivantes, nous explorerons la cr\u00e9ation de scripts plus avanc\u00e9s pour interagir avec l&rsquo;API de mani\u00e8re puissante.<\/p>\n<h2>Cas d&rsquo;utilisation avanc\u00e9 1 : Cr\u00e9ation de sauvegardes<\/h2>\n<p>La cr\u00e9ation de sauvegardes est un aspect crucial de la gestion d&rsquo;un site web. Elles vous permettent de restaurer votre site en cas de probl\u00e8mes impr\u00e9vus. Gr\u00e2ce \u00e0 l&rsquo;API Kinsta et aux scripts shell, ce processus peut \u00eatre automatis\u00e9, ce qui permet d&rsquo;\u00e9conomiser du temps et des efforts.<\/p>\n<p>Dans cette section, nous cr\u00e9ons des sauvegardes et abordons la limite de <strong>cinq sauvegardes manuelles par environnement<\/strong> impos\u00e9e par Kinsta. Pour cela, nous mettrons en place un processus pour :<\/p>\n<ul>\n<li>V\u00e9rifier le nombre actuel de sauvegardes manuelles.<\/li>\n<li>Identifier et supprimer la sauvegarde la plus ancienne (avec la confirmation de l&rsquo;utilisateur) si la limite est atteinte.<\/li>\n<li>Proc\u00e9der \u00e0 la cr\u00e9ation d&rsquo;une nouvelle sauvegarde.<\/li>\n<\/ul>\n<p>Entrons dans les d\u00e9tails.<\/p>\n<h3>Le flux de travail des sauvegardes<\/h3>\n<p>Pour cr\u00e9er des sauvegardes \u00e0 l&rsquo;aide de l&rsquo;API Kinsta, vous utiliserez <a href=\"https:\/\/api-docs.kinsta.com\/tag\/Backups#operation\/addManualBackup\" target=\"_blank\" rel=\"noopener noreferrer\">le point de terminaison suivant<\/a> :<\/p>\n<pre><code class=\"language-bash\">POST \/sites\/environments\/{env_id}\/manual-backups<\/code><\/pre>\n<p>Cela n\u00e9cessite :<\/p>\n<ol start=\"1\">\n<li><strong>ID de l&rsquo;environnement <\/strong>: Identifiez l&rsquo;environnement (comme le stzaging ou la production) dans lequel la sauvegarde sera cr\u00e9\u00e9e.<\/li>\n<li><strong>Libell\u00e9 de sauvegarde <\/strong>: Un libell\u00e9 pour identifier la sauvegarde (facultatif).<\/li>\n<\/ol>\n<p>R\u00e9cup\u00e9rer manuellement l&rsquo;identifiant de l&rsquo;environnement et ex\u00e9cuter une commande telle que <code>backup &lt;environment ID&gt;<\/code> peut s&rsquo;av\u00e9rer fastidieux. Au lieu de cela, nous allons cr\u00e9er un script convivial dans lequel vous n&rsquo;aurez qu&rsquo;\u00e0 sp\u00e9cifier le <strong>nom du site<\/strong>, et le script :<\/p>\n<ol start=\"1\">\n<li>R\u00e9cup\u00e8rera la liste des environnements pour le site.<\/li>\n<li>Vous invitera \u00e0 choisir l&rsquo;environnement \u00e0 sauvegarder.<\/li>\n<li>G\u00e9rera le processus de cr\u00e9ation de la sauvegarde.<\/li>\n<\/ol>\n<h3>Des fonctions r\u00e9utilisables pour un code propre<\/h3>\n<p>Pour que notre script reste modulaire et r\u00e9utilisable, nous allons d\u00e9finir des fonctions pour des t\u00e2ches sp\u00e9cifiques. Passons en revue la configuration \u00e9tape par \u00e9tape.<\/p>\n<h4>1. Configurer les variables de base<\/h4>\n<p>Vous pouvez vous d\u00e9barrasser du premier script que vous avez cr\u00e9\u00e9 ou cr\u00e9er un nouveau fichier de script pour cela. Commencez par d\u00e9clarer l&rsquo;URL de base de l&rsquo;API Kinsta et l&rsquo;identifiant de votre entreprise dans le script :<\/p>\n<pre><code class=\"language-bash\">BASE_URL=\"https:\/\/api.kinsta.com\/v2\"\nCOMPANY_ID=\"&lt;your_company_id&gt;\"<\/code><\/pre>\n<p>Ces variables vous permettent de construire des points d&rsquo;acc\u00e8s \u00e0 l&rsquo;API de fa\u00e7on dynamique tout au long du script.<\/p>\n<h4>2. R\u00e9cup\u00e9rer tous les sites<\/h4>\n<p>D\u00e9finissez une fonction pour r\u00e9cup\u00e9rer la liste de tous les sites de l&rsquo;entreprise. Cela vous permet de r\u00e9cup\u00e9rer ult\u00e9rieurement les d\u00e9tails de chaque site.<\/p>\n<pre><code class=\"language-bash\">get_sites_list() {\n  API_URL=\"$BASE_URL\/sites?company=$COMPANY_ID\"\n\n  echo \"Fetching all sites for company ID: $COMPANY_ID...\"\n  \n  RESPONSE=$(curl -s -X GET \"$API_URL\" \n    -H \"Authorization: Bearer $API_KEY\" \n    -H \"Content-Type: application\/json\")\n\n  # Check for errors\n  if [ -z \"$RESPONSE\" ]; then\n    echo \"Error: No response from the API.\"\n    exit 1\n  fi\n\n  echo \"$RESPONSE\"\n}<\/code><\/pre>\n<p>Vous remarquerez que cette fonction renvoie une r\u00e9ponse non format\u00e9e de l&rsquo;API. Pour obtenir une r\u00e9ponse format\u00e9e. Vous pouvez ajouter une autre fonction pour g\u00e9rer cela (bien que ce ne soit pas notre pr\u00e9occupation dans cette section) :<\/p>\n<pre><code class=\"language-bash\">list_sites() {\n  RESPONSE=$(get_sites_list)\n\n  if [ -z \"$RESPONSE\" ]; then\n    echo \"Error: No response from the API while fetching sites.\"\n    exit 1\n  fi\n\n  echo \"Company Sites:\"\n  echo \"--------------\"\n  # Clean the RESPONSE before passing it to jq\n  CLEAN_RESPONSE=$(echo \"$RESPONSE\" | tr -d 'r' | sed 's\/^[^{]*\/\/') # Removes extra characters before the JSON starts\n\n  echo \"$CLEAN_RESPONSE\" | jq -r '.company.sites[] | \"(.display_name) ((.name)) - Status: (.status)\"'\n}<\/code><\/pre>\n<p>L&rsquo;appel \u00e0 la fonction <code>list_sites<\/code> affiche vos sites comme indiqu\u00e9 pr\u00e9c\u00e9demment. L&rsquo;objectif principal, cependant, est d&rsquo;acc\u00e9der \u00e0 chaque site et \u00e0 son identifiant, ce qui vous permet de r\u00e9cup\u00e9rer des informations d\u00e9taill\u00e9es sur chaque site.<\/p>\n<h4>3. R\u00e9cup\u00e9rer les d\u00e9tails d&rsquo;un site<\/h4>\n<p>Pour obtenir des d\u00e9tails sur un site sp\u00e9cifique, utilisez la fonction suivante, qui r\u00e9cup\u00e8re l&rsquo;ID du site en fonction du nom du site et obtient des d\u00e9tails suppl\u00e9mentaires, comme les environnements :<\/p>\n<pre><code class=\"language-bash\">get_site_details_by_name() {\n  SITE_NAME=$1\n  if [ -z \"$SITE_NAME\" ]; then\n    echo \"Error: No site name provided. Usage: $0 details-name \"\n    return 1\n  fi\n\n  RESPONSE=$(get_sites_list)\n\n  echo \"Searching for site with name: $SITE_NAME...\"\n\n  # Clean the RESPONSE before parsing\n  CLEAN_RESPONSE=$(echo \"$RESPONSE\" | tr -d 'r' | sed 's\/^[^{]*\/\/')\n\n  # Extract the site ID for the given site name\n  SITE_ID=$(echo \"$CLEAN_RESPONSE\" | jq -r --arg SITE_NAME \"$SITE_NAME\" '.company.sites[] | select(.name == $SITE_NAME) | .id')\n\n  if [ -z \"$SITE_ID\" ]; then\n    echo \"Error: Site with name \"$SITE_NAME\" not found.\"\n    return 1\n  fi\n\n  echo \"Found site ID: $SITE_ID for site name: $SITE_NAME\"\n\n  # Fetch site details using the site ID\n  API_URL=\"$BASE_URL\/sites\/$SITE_ID\"\n\n  SITE_RESPONSE=$(curl -s -X GET \"$API_URL\" \n    -H \"Authorization: Bearer $API_KEY\" \n    -H \"Content-Type: application\/json\")\n\n  echo \"$SITE_RESPONSE\"\n}<\/code><\/pre>\n<p>La fonction ci-dessus filtre le site \u00e0 l&rsquo;aide du nom du site, puis r\u00e9cup\u00e8re des d\u00e9tails suppl\u00e9mentaires sur le site \u00e0 l&rsquo;aide du point de terminaison <code><a href=\"https:\/\/api-docs.kinsta.com\/tag\/WordPress-Sites#operation\/getSiteById\" target=\"_blank\" rel=\"noopener noreferrer\">\/sites\/&lt;site-id&gt;<\/a><\/code>. Ces d\u00e9tails incluent les environnements du site, ce dont nous avons besoin pour d\u00e9clencher des sauvegardes.<\/p>\n<h3>Cr\u00e9ation de sauvegardes<\/h3>\n<p>Maintenant que vous avez mis en place des fonctions r\u00e9utilisables pour r\u00e9cup\u00e9rer les d\u00e9tails du site et lister les environnements, vous pouvez vous concentrer sur l&rsquo;automatisation du processus de cr\u00e9ation des sauvegardes. L&rsquo;objectif est d&rsquo;ex\u00e9cuter une simple commande avec seulement le nom du site, puis de choisir de mani\u00e8re interactive l&rsquo;environnement \u00e0 sauvegarder.<\/p>\n<p>Commencez par cr\u00e9er une fonction (nous l&rsquo;appellerons <code>trigger_manual_backup<\/code>). \u00c0 l&rsquo;int\u00e9rieur de la fonction, d\u00e9finissez deux variables : la premi\u00e8re pour accepter le nom du site en entr\u00e9e et la seconde pour d\u00e9finir une \u00e9tiquette par d\u00e9faut (<code>default-backup<\/code>) pour la sauvegarde. Cette \u00e9tiquette par d\u00e9faut sera appliqu\u00e9e \u00e0 moins que vous ne choisissiez de sp\u00e9cifier une \u00e9tiquette personnalis\u00e9e plus tard.<\/p>\n<pre><code class=\"language-bash\">trigger_manual_backup() {\n  SITE_NAME=$1\n  DEFAULT_TAG=\"default-backup\"\n\n  # Ensure a site name is provided\n  if [ -z \"$SITE_NAME\" ]; then\n    echo \"Error: Site name is required.\"\n    echo \"Usage: $0 trigger-backup \"\n    return 1\n  fi\n\n  # Add the code here\n\n}<\/code><\/pre>\n<p>Ce <code>SITE_NAME<\/code> est l&rsquo;identifiant du site que vous voulez g\u00e9rer. Vous d\u00e9finissez \u00e9galement une condition pour que le script se termine par un message d&rsquo;erreur si l&rsquo;identifiant n&rsquo;est pas fourni. Cela permet de s&rsquo;assurer que le script n&rsquo;est pas ex\u00e9cut\u00e9 sans les donn\u00e9es n\u00e9cessaires, ce qui permet d&rsquo;\u00e9viter les erreurs potentielles de l&rsquo;API.<\/p>\n<p>Ensuite, vous utilisez la fonction r\u00e9utilisable <code>get_site_details_by_name<\/code> pour obtenir des informations d\u00e9taill\u00e9es sur le site, y compris ses environnements. La r\u00e9ponse est ensuite nettoy\u00e9e pour supprimer tout probl\u00e8me de formatage inattendu qui pourrait survenir pendant le traitement.<\/p>\n<pre><code class=\"language-bash\">SITE_RESPONSE=$(get_site_details_by_name \"$SITE_NAME\")\n\nif [ $? -ne 0 ]; then\n  echo \"Error: Failed to fetch site details for site \"$SITE_NAME\".\"\n  return 1\nfi\n\nCLEAN_RESPONSE=$(echo \"$SITE_RESPONSE\" | tr -d 'r' | sed 's\/^[^{]*\/\/')<\/code><\/pre>\n<p>Une fois que nous avons les d\u00e9tails du site, le script ci-dessous extrait tous les environnements disponibles et les affiche dans un format lisible. Cela t&rsquo;aide \u00e0 visualiser quels environnements sont li\u00e9s au site.<\/p>\n<p>Le script vous invite ensuite \u00e0 s\u00e9lectionner un environnement par son nom. Cette \u00e9tape interactive rend le processus plus convivial en \u00e9liminant la n\u00e9cessit\u00e9 de se souvenir ou de saisir les identifiants des environnements.<\/p>\n<pre><code class=\"language-bash\">ENVIRONMENTS=$(echo \"$CLEAN_RESPONSE\" | jq -r '.site.environments[] | \"(.name): (.id)\"')\n\necho \"Available Environments for \"$SITE_NAME\":\"\necho \"$ENVIRONMENTS\"\n\nread -p \"Enter the environment name to back up (e.g., staging, live): \" ENV_NAME<\/code><\/pre>\n<p>Le nom de l&rsquo;environnement s\u00e9lectionn\u00e9 est ensuite utilis\u00e9 pour rechercher l&rsquo;<strong>identifiant de l&rsquo;environnement<\/strong> correspondant dans les d\u00e9tails du site. Cet identifiant est n\u00e9cessaire pour les demandes d&rsquo;API visant \u00e0 cr\u00e9er une sauvegarde.<\/p>\n<pre><code class=\"language-bash\">ENV_ID=$(echo \"$CLEAN_RESPONSE\" | jq -r --arg ENV_NAME \"$ENV_NAME\" '.site.environments[] | select(.name == $ENV_NAME) | .id')\n\nif [ -z \"$ENV_ID\" ]; then\n  echo \"Error: Environment \"$ENV_NAME\" not found for site \"$SITE_NAME\".\"\n  return 1\nfi\n\necho \"Found environment ID: $ENV_ID for environment name: $ENV_NAME\"<\/code><\/pre>\n<p>Dans le code ci-dessus, une condition est cr\u00e9\u00e9e pour que le script sorte avec un message d&rsquo;erreur si le nom d&rsquo;environnement fourni ne correspond pas.<\/p>\n<p>Maintenant que vous avez l&rsquo;ID de l&rsquo;environnement, vous pouvez proc\u00e9der \u00e0 la v\u00e9rification du nombre actuel de sauvegardes manuelles pour l&rsquo;environnement s\u00e9lectionn\u00e9. La limite de Kinsta \u00e9tant de cinq sauvegardes manuelles par environnement, cette \u00e9tape est cruciale pour \u00e9viter les erreurs.<\/p>\n<p>Commen\u00e7ons par r\u00e9cup\u00e9rer la liste des sauvegardes \u00e0 l&rsquo;aide du point de terminaison de l&rsquo;API <code><a href=\"https:\/\/api-docs.kinsta.com\/tag\/Backups#operation\/getBackups\" target=\"_blank\" rel=\"noopener noreferrer\">\/backups<\/a><\/code> API.<\/p>\n<pre><code class=\"language-bash\">API_URL=\"$BASE_URL\/sites\/environments\/$ENV_ID\/backups\"\nBACKUPS_RESPONSE=$(curl -s -X GET \"$API_URL\" \n  -H \"Authorization: Bearer $API_KEY\" \n  -H \"Content-Type: application\/json\")\n\nCLEAN_RESPONSE=$(echo \"$BACKUPS_RESPONSE\" | tr -d 'r' | sed 's\/^[^{]*\/\/')\nMANUAL_BACKUPS=$(echo \"$CLEAN_RESPONSE\" | jq '[.environment.backups[] | select(.type == \"manual\")]')\nBACKUP_COUNT=$(echo \"$MANUAL_BACKUPS\" | jq 'length')<\/code><\/pre>\n<p>Le script ci-dessus filtre ensuite les sauvegardes manuelles et les compte. Si le d\u00e9compte atteint la limite, nous devons g\u00e9rer les sauvegardes existantes :<\/p>\n<pre><code class=\"language-bash\">  if [ \"$BACKUP_COUNT\" -ge 5 ]; then\n    echo \"Manual backup limit reached (5 backups).\"\n    \n    # Find the oldest backup\n    OLDEST_BACKUP=$(echo \"$MANUAL_BACKUPS\" | jq -r 'sort_by(.created_at) | .[0]')\n    OLDEST_BACKUP_NAME=$(echo \"$OLDEST_BACKUP\" | jq -r '.note')\n    OLDEST_BACKUP_ID=$(echo \"$OLDEST_BACKUP\" | jq -r '.id')\n\n    echo \"The oldest manual backup is \"$OLDEST_BACKUP_NAME\".\"\n    read -p \"Do you want to delete this backup to create a new one? (yes\/no): \" CONFIRM\n\n    if [ \"$CONFIRM\" != \"yes\" ]; then\n      echo \"Aborting backup creation.\"\n      return 1\n    fi\n\n    # Delete the oldest backup\n    DELETE_URL=\"$BASE_URL\/sites\/environments\/backups\/$OLDEST_BACKUP_ID\"\n    DELETE_RESPONSE=$(curl -s -X DELETE \"$DELETE_URL\" \n      -H \"Authorization: Bearer $API_KEY\" \n      -H \"Content-Type: application\/json\")\n\n    echo \"Delete Response:\"\n    echo \"$DELETE_RESPONSE\" | jq -r '[\n      \"Operation ID: (.operation_id)\",\n      \"Message: (.message)\",\n      \"Status: (.status)\"\n    ] | join(\"n\")'\n  fi<\/code><\/pre>\n<p>La condition ci-dessus identifie la sauvegarde la plus ancienne en triant la liste en fonction de l&rsquo;horodatage <code>created_at<\/code>. Elle vous demande ensuite de confirmer si vous souhaitez la supprimer.<\/p>\n<p>Si vous acceptez, le script supprime la sauvegarde la plus ancienne en utilisant son ID, lib\u00e9rant ainsi de l&rsquo;espace pour la nouvelle sauvegarde. Cela permet de s&rsquo;assurer que les sauvegardes peuvent toujours \u00eatre cr\u00e9\u00e9es sans avoir \u00e0 g\u00e9rer manuellement les limites.<\/p>\n<p>Maintenant qu&rsquo;il y a de l&rsquo;espace, passons au code pour d\u00e9clencher la sauvegarde de l&rsquo;environnement. N&rsquo;h\u00e9sitez pas \u00e0 ignorer ce code, mais pour une meilleure exp\u00e9rience, il t&rsquo;invite \u00e0 sp\u00e9cifier une \u00e9tiquette personnalis\u00e9e, avec par d\u00e9faut \u00ab default-backup \u00bb si aucune n&rsquo;est fournie.<\/p>\n<pre><code class=\"language-bash\">read -p \"Enter a backup tag (or press Enter to use \"$DEFAULT_TAG\"): \" BACKUP_TAG\n\nif [ -z \"$BACKUP_TAG\" ]; then\n  BACKUP_TAG=\"$DEFAULT_TAG\"\nfi\n\necho \"Using backup tag: $BACKUP_TAG\"<\/code><\/pre>\n<p>Enfin, c&rsquo;est dans le script ci-dessous que se produit l&rsquo;action de sauvegarde. Il envoie une requ\u00eate <code>POST<\/code> au point de terminaison <code><a href=\"https:\/\/api-docs.kinsta.com\/tag\/Backups#operation\/addManualBackup\" target=\"_blank\" rel=\"noopener noreferrer\">\/manual-backups<\/a><\/code> avec l&rsquo;identifiant d&rsquo;environnement et la balise de sauvegarde s\u00e9lectionn\u00e9s. Si la demande aboutit, l&rsquo;API renvoie une r\u00e9ponse confirmant la cr\u00e9ation de la sauvegarde.<\/p>\n<pre><code class=\"language-bash\">API_URL=\"$BASE_URL\/sites\/environments\/$ENV_ID\/manual-backups\"\nRESPONSE=$(curl -s -X POST \"$API_URL\" \n  -H \"Authorization: Bearer $API_KEY\" \n  -H \"Content-Type: application\/json\" \n  -d \"{\"tag\": \"$BACKUP_TAG\"}\")\n\nif [ -z \"$RESPONSE\" ]; then\n  echo \"Error: No response from the API while triggering the manual backup.\"\n  return 1\nfi\n\necho \"Backup Trigger Response:\"\necho \"$RESPONSE\" | jq -r '[\n  \"Operation ID: (.operation_id)\",\n  \"Message: (.message)\",\n  \"Status: (.status)\"\n] | join(\"n\")'<\/code><\/pre>\n<p>Et voil\u00e0 ! La r\u00e9ponse obtenue \u00e0 partir de la requ\u00eate ci-dessus est format\u00e9e pour afficher l&rsquo;ID de l&rsquo;op\u00e9ration, le message et l&rsquo;\u00e9tat pour plus de clart\u00e9. Si vous appellez la fonction et ex\u00e9cutez le script, vous obtiendrez une sortie similaire \u00e0 celle-ci :<\/p>\n<pre><code class=\"language-bash\">Available Environments for \"example-site\":\nstaging: 12345\nlive: 67890\nEnter the environment name to back up (e.g., staging, live): live\nFound environment ID: 67890 for environment name: live\nManual backup limit reached (5 backups).\nThe oldest manual backup is \"staging-backup-2023-12-31\".\nDo you want to delete this backup to create a new one? (yes\/no): yes\nOldest backup deleted.\nEnter a backup tag (or press Enter to use \"default-backup\"): weekly-live-backup\nUsing backup tag: weekly-live-backup\nTriggering manual backup for environment ID: 67890 with tag: weekly-live-backup...\nBackup Trigger Response:\nOperation ID: backups:add-manual-abc123\nMessage: Adding a manual backup to environment in progress.\nStatus: 202<\/code><\/pre>\n<h3>Cr\u00e9ation de commandes pour votre script<\/h3>\n<p>Les commandes simplifient l&rsquo;utilisation de votre script. Au lieu de modifier le script ou de commenter le code manuellement, les utilisateurs peuvent l&rsquo;ex\u00e9cuter \u00e0 l&rsquo;aide d&rsquo;une commande sp\u00e9cifique comme :<\/p>\n<pre><code class=\"language-bash\">.\/script.sh list-sites\n.\/script.sh backup <\/code><\/pre>\n<p>\u00c0 la fin de votre script (en dehors de toutes les fonctions), incluez un bloc conditionnel qui v\u00e9rifie les arguments pass\u00e9s au script :<\/p>\n<pre><code class=\"language-bash\">if [ \"$1\" == \"list-sites\" ]; then\n  list_sites\nelif [ \"$1\" == \"backup\" ]; then\n  SITE_NAME=\"$2\"\n  if [ -z \"$SITE_NAME\" ]; then\n    echo \"Usage: $0 trigger-backup \"\n    exit 1\n  fi\n  trigger_manual_backup \"$SITE_NAME\"\nelse\n  echo \"Usage: $0 {list-sites|trigger-backup }\"\n  exit 1\nfi<\/code><\/pre>\n<p>La variable <code>$1<\/code> repr\u00e9sente le premier argument pass\u00e9 au script (par exemple, dans <code>.\/script.sh list-sites<\/code>, <code>$1<\/code> est <code>list-sites<\/code>). Le script utilise des contr\u00f4les conditionnels pour faire correspondre <code>$1<\/code> \u00e0 des commandes sp\u00e9cifiques telles que <code>list-sites<\/code> ou <code>backup<\/code>. Si la commande est <code>backup<\/code>, il attend \u00e9galement un deuxi\u00e8me argument (<code>$2<\/code>), qui est le nom du site. Si aucune commande valide n&rsquo;est fournie, le script affiche par d\u00e9faut les instructions d&rsquo;utilisation.<\/p>\n<p>Vous pouvez maintenant d\u00e9clencher une sauvegarde manuelle pour un site sp\u00e9cifique en ex\u00e9cutant la commande :<\/p>\n<pre><code class=\"language-bash\">.\/script.sh backup<\/code><\/pre>\n<h2>Cas d&rsquo;utilisation avanc\u00e9 2 : Mise \u00e0 jour des plugins sur plusieurs sites<\/h2>\n<p>La gestion des extensions WordPress sur plusieurs sites peut \u00eatre fastidieuse, surtout lorsque des mises \u00e0 jour sont disponibles. Kinsta fait un excellent travail pour g\u00e9rer cela via le tableau de bord MyKinsta, gr\u00e2ce \u00e0 la fonctionnalit\u00e9 d&rsquo;actions group\u00e9es que nous avons introduite l&rsquo;ann\u00e9e derni\u00e8re.<\/p>\n<p><img decoding=\"async\" src=\"https:\/\/kinsta.com\/wp-content\/uploads\/2025\/01\/manage-plugins-mykinsta.png\" alt><\/p>\n<p>Mais si vous n&rsquo;aimez pas travailler avec des interfaces utilisateur, l&rsquo;API de Kinsta offre une autre possibilit\u00e9 de cr\u00e9er un script shell pour automatiser le processus d&rsquo;identification des extensions obsol\u00e8tes et leur mise \u00e0 jour sur plusieurs sites ou dans des environnements sp\u00e9cifiques.<\/p>\n<h3>D\u00e9composer le flux de travail<\/h3>\n<p>1. <strong>Identifier les sites dont les extensions sont obsol\u00e8tes :<\/strong> Le script it\u00e8re \u00e0 travers tous les sites et environnements, \u00e0 la recherche de l&rsquo;extension sp\u00e9cifi\u00e9e avec une mise \u00e0 jour disponible. Le <a href=\"https:\/\/api-docs.kinsta.com\/tag\/WordPress-Site-Themes-and-Plugins#operation\/getPlugins\" target=\"_blank\" rel=\"noopener noreferrer\">point de terminaison suivant<\/a> est utilis\u00e9 pour r\u00e9cup\u00e9rer la liste des extensions pour un environnement de site sp\u00e9cifique :<\/p>\n<pre><code class=\"language-bash\">GET \/sites\/environments\/{env_id}\/plugins<\/code><\/pre>\n<p>\u00c0 partir de la r\u00e9ponse, nous filtrons les extensions pour lesquelles <code>\"update\": \"available\"<\/code>.<\/p>\n<p>2. <strong>Invitez l&rsquo;utilisateur \u00e0 choisir les options de mise \u00e0 jour :<\/strong> Cela affiche les sites et les environnements avec l&rsquo;extension obsol\u00e8te, ce qui permet \u00e0 l&rsquo;utilisateur de s\u00e9lectionner des instances sp\u00e9cifiques ou de les mettre toutes \u00e0 jour.<\/p>\n<p>3. <strong>D\u00e9clencher les mises \u00e0 jour de l&rsquo;extension :<\/strong> Pour mettre \u00e0 jour l&rsquo;extension dans un environnement sp\u00e9cifique, le script utilise <a href=\"https:\/\/api-docs.kinsta.com\/tag\/WordPress-Site-Themes-and-Plugins#operation\/updatePlugin\" target=\"_blank\" rel=\"noopener noreferrer\">ce point de terminaison<\/a>:<\/p>\n<pre><code class=\"language-bash\">PUT \/sites\/environments\/{env_id}\/plugins<\/code><\/pre>\n<p>Le nom de l&rsquo;extension et sa version mise \u00e0 jour sont transmis dans le corps de la requ\u00eate.<\/p>\n<h3>Le script<\/h3>\n<p>Comme le script est long, la fonction compl\u00e8te est <a href=\"https:\/\/github.com\/olawanlejoel\/KinstaAPI-Shell\/blob\/main\/script.sh#L371\" target=\"_blank\" rel=\"noopener noreferrer\">h\u00e9berg\u00e9e sur GitHub<\/a> pour en faciliter l&rsquo;acc\u00e8s. Ici, nous allons expliquer la logique de base utilis\u00e9e pour identifier les extensions obsol\u00e8tes sur plusieurs sites et environnements.<\/p>\n<p>Le script commence par accepter le nom de l&rsquo;extension \u00e0 partir de la commande. Ce nom sp\u00e9cifie l&rsquo;extension que vous voulez mettre \u00e0 jour.<\/p>\n<pre><code class=\"language-bash\">PLUGIN_NAME=$1\n\nif [ -z \"$PLUGIN_NAME\" ]; then\n  echo \"Error: Plugin name is required.\"\n  echo \"Usage: $0 update-plugin \"\n  return 1\nfi<\/code><\/pre>\n<p>Le script utilise ensuite la fonction r\u00e9utilisable <code>get_sites_list<\/code> (expliqu\u00e9e plus haut) pour rechercher tous les sites de l&rsquo;entreprise :<\/p>\n<pre><code class=\"language-bash\">echo \"Fetching all sites in the company...\"\n\n# Fetch all sites in the company\nSITES_RESPONSE=$(get_sites_list)\nif [ $? -ne 0 ]; then\n  echo \"Error: Failed to fetch sites.\"\n  return 1\nfi\n\n# Clean the response\nCLEAN_SITES_RESPONSE=$(echo \"$SITES_RESPONSE\" | tr -d 'r' | sed 's\/^[^{]*\/\/')<\/code><\/pre>\n<p>Vient ensuite le c\u0153ur du script : parcourir en boucle la liste des sites pour v\u00e9rifier la pr\u00e9sence d&rsquo;extensions obsol\u00e8tes. Le <code>CLEAN_SITES_RESPONSE<\/code>, qui est un objet JSON contenant tous les sites, est transmis \u00e0 une boucle while pour effectuer les op\u00e9rations pour chaque site un par un.<\/p>\n<p>Elle commence par extraire certaines donn\u00e9es importantes comme l&rsquo;identifiant, le nom et le nom d&rsquo;affichage du site dans des variables :<\/p>\n<pre><code class=\"language-bash\">while IFS= read -r SITE; do\n  SITE_ID=$(echo \"$SITE\" | jq -r '.id')\n  SITE_NAME=$(echo \"$SITE\" | jq -r '.name')\n  SITE_DISPLAY_NAME=$(echo \"$SITE\" | jq -r '.display_name')\n\n  echo \"Checking environments for site \"$SITE_DISPLAY_NAME\"...\"<\/code><\/pre>\n<p>Le nom du site est ensuite utilis\u00e9 avec la fonction <code>get_site_details_by_name<\/code> d\u00e9finie pr\u00e9c\u00e9demment pour obtenir des informations d\u00e9taill\u00e9es sur le site, y compris tous ses environnements.<\/p>\n<pre><code class=\"language-bash\">SITE_DETAILS=$(get_site_details_by_name \"$SITE_NAME\")\nCLEAN_SITE_DETAILS=$(echo \"$SITE_DETAILS\" | tr -d 'r' | sed 's\/^[^{]*\/\/')\n\nENVIRONMENTS=$(echo \"$CLEAN_SITE_DETAILS\" | jq -r '.site.environments[] | \"(.id):(.name):(.display_name)\"')<\/code><\/pre>\n<p>Les environnements sont ensuite parcourus en boucle pour extraire les d\u00e9tails de chaque environnement, tels que l&rsquo;ID, le nom et le nom d&rsquo;affichage :<\/p>\n<pre><code class=\"language-bash\">while IFS= read -r ENV; do\n  ENV_ID=$(echo \"$ENV\" | cut -d: -f1)\n  ENV_NAME=$(echo \"$ENV\" | cut -d: -f2)\n  ENV_DISPLAY_NAME=$(echo \"$ENV\" | cut -d: -f3)\n\n  echo \"Checking plugins for environment \"$ENV_DISPLAY_NAME\"...\"<\/code><\/pre>\n<p>Pour chaque environnement, le script r\u00e9cup\u00e8re maintenant sa liste d&rsquo;extensions \u00e0 l&rsquo;aide de l&rsquo;API de Kinsta.<\/p>\n<pre><code class=\"language-bash\">PLUGINS_RESPONSE=$(curl -s -X GET \"$BASE_URL\/sites\/environments\/$ENV_ID\/plugins\" \n  -H \"Authorization: Bearer $API_KEY\" \n  -H \"Content-Type: application\/json\")\n\nCLEAN_PLUGINS_RESPONSE=$(echo \"$PLUGINS_RESPONSE\" | tr -d 'r' | sed 's\/^[^{]*\/\/')<\/code><\/pre>\n<p>Ensuite, le script v\u00e9rifie si l&rsquo;extension sp\u00e9cifi\u00e9e existe dans l&rsquo;environnement et si une mise \u00e0 jour est disponible :<\/p>\n<pre><code class=\"language-bash\">OUTDATED_PLUGIN=$(echo \"$CLEAN_PLUGINS_RESPONSE\" | jq -r --arg PLUGIN_NAME \"$PLUGIN_NAME\" '.environment.container_info.wp_plugins.data[] | select(.name == $PLUGIN_NAME and .update == \"available\")')<\/code><\/pre>\n<p>Si une extension obsol\u00e8te est trouv\u00e9e, le script enregistre ses d\u00e9tails et les ajoute au tableau <code>SITES_WITH_OUTDATED_PLUGIN<\/code>:<\/p>\n<pre><code class=\"language-bash\">if [ ! -z \"$OUTDATED_PLUGIN\" ]; then\n  CURRENT_VERSION=$(echo \"$OUTDATED_PLUGIN\" | jq -r '.version')\n  UPDATE_VERSION=$(echo \"$OUTDATED_PLUGIN\" | jq -r '.update_version')\n\n  echo \"Outdated plugin \"$PLUGIN_NAME\" found in \"$SITE_DISPLAY_NAME\" (Environment: $ENV_DISPLAY_NAME)\"\n  echo \"  Current Version: $CURRENT_VERSION\"\n  echo \"  Update Version: $UPDATE_VERSION\"\n\n  SITES_WITH_OUTDATED_PLUGIN+=(\"$SITE_DISPLAY_NAME:$ENV_DISPLAY_NAME:$ENV_ID:$UPDATE_VERSION\")\nfi<\/code><\/pre>\n<p>Voici \u00e0 quoi ressembleraient les d\u00e9tails enregistr\u00e9s des extensions obsol\u00e8tes :<\/p>\n<pre><code class=\"language-bash\">Outdated plugin \"example-plugin\" found in \"Site ABC\" (Environment: Production)\n  Current Version: 1.0.0\n  Update Version: 1.2.0\nOutdated plugin \"example-plugin\" found in \"Site XYZ\" (Environment: Staging)\n  Current Version: 1.3.0\n  Update Version: 1.4.0<\/code><\/pre>\n<p>\u00c0 partir d&rsquo;ici, nous effectuons les mises \u00e0 jour de chaque extension en utilisant <a href=\"https:\/\/api-docs.kinsta.com\/tag\/WordPress-Site-Themes-and-Plugins#operation\/updatePlugin\" target=\"_blank\" rel=\"noopener noreferrer\">son point de terminaison<\/a>. Le script complet se trouve dans ce <a href=\"https:\/\/github.com\/olawanlejoel\/KinstaAPI-Shell\/blob\/main\/script.sh#L371\" target=\"_blank\" rel=\"noopener noreferrer\">d\u00e9p\u00f4t GitHub<\/a>.<\/p>\n<h2>R\u00e9sum\u00e9<\/h2>\n<p>Cet article vous a guid\u00e9 dans la cr\u00e9ation d&rsquo;un script shell pour interagir avec l&rsquo;API Kinsta.<\/p>\n<p>Prends le temps d&rsquo;explorer davantage l&rsquo;<a href=\"https:\/\/api-docs.kinsta.com\/\" target=\"_blank\" rel=\"noopener noreferrer\">API de Kinsta<\/a> &#8211; vous d\u00e9couvrirez des fonctions suppl\u00e9mentaires que vous pouvez automatiser pour g\u00e9rer des t\u00e2ches adapt\u00e9es \u00e0 vos besoins sp\u00e9cifiques. Vous pourriez envisager d&rsquo;int\u00e9grer l&rsquo;API \u00e0 d&rsquo;autres API pour am\u00e9liorer la prise de d\u00e9cision et l&rsquo;efficacit\u00e9.<\/p>\n<p>Enfin, consultez r\u00e9guli\u00e8rement le <a href=\"https:\/\/kinsta.com\/fr\/mykinsta\/\">tableau de bord MyKinsta<\/a> pour d\u00e9couvrir les nouvelles fonctionnalit\u00e9s con\u00e7ues pour rendre la gestion du site web encore plus conviviale gr\u00e2ce \u00e0 son interface intuitive.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Si vous g\u00e9rez de nombreux sites WordPress, vous \u00eates probablement toujours \u00e0 la recherche de moyens pour simplifier et acc\u00e9l\u00e9rer vos flux de travail. Maintenant, imaginez &#8230;<\/p>\n","protected":false},"author":287,"featured_media":79438,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"_kinsta_gated_content":false,"_kinsta_gated_content_redirect":"","footnotes":""},"tags":[],"topic":[953],"class_list":["post-79437","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","topic-api"],"yoast_head":"<!-- This site is optimized with the Yoast SEO Premium plugin v24.6 (Yoast SEO v24.6) - https:\/\/yoast.com\/wordpress\/plugins\/seo\/ -->\n<title>G\u00e9rer vos sites WordPress avec des scripts shell et l&#039;API Kinsta<\/title>\n<meta name=\"description\" content=\"G\u00e9rez efficacement vos sites WordPress \u00e0 l&#039;aide de scripts shell et de l&#039;API Kinsta pour une automatisation et des performances optimis\u00e9es.\" \/>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/kinsta.com\/fr\/blog\/scripts-shell-api-kinsta\/\" \/>\n<meta property=\"og:locale\" content=\"fr_FR\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"G\u00e9rer vos sites WordPress avec des scripts shell et l&#039;API Kinsta\" \/>\n<meta property=\"og:description\" content=\"G\u00e9rez efficacement vos sites WordPress \u00e0 l&#039;aide de scripts shell et de l&#039;API Kinsta pour une automatisation et des performances optimis\u00e9es.\" \/>\n<meta property=\"og:url\" content=\"https:\/\/kinsta.com\/fr\/blog\/scripts-shell-api-kinsta\/\" \/>\n<meta property=\"og:site_name\" content=\"Kinsta\u00ae\" \/>\n<meta property=\"article:publisher\" content=\"https:\/\/www.facebook.com\/kinstafrance\/\" \/>\n<meta property=\"article:published_time\" content=\"2025-02-27T11:56:56+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2025-02-28T12:26:08+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/kinsta.com\/fr\/wp-content\/uploads\/sites\/4\/2025\/02\/how-to-use-shell-scripts-and-the-kinsta-api-for-wordpress-management.png\" \/>\n\t<meta property=\"og:image:width\" content=\"1470\" \/>\n\t<meta property=\"og:image:height\" content=\"735\" \/>\n\t<meta property=\"og:image:type\" content=\"image\/png\" \/>\n<meta name=\"author\" content=\"Joel Olawanle\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:description\" content=\"G\u00e9rez efficacement vos sites WordPress \u00e0 l&#039;aide de scripts shell et de l&#039;API Kinsta pour une automatisation et des performances optimis\u00e9es.\" \/>\n<meta name=\"twitter:image\" content=\"https:\/\/kinsta.com\/fr\/wp-content\/uploads\/sites\/4\/2025\/02\/how-to-use-shell-scripts-and-the-kinsta-api-for-wordpress-management-1024x512.png\" \/>\n<meta name=\"twitter:creator\" content=\"@olawanle_joel\" \/>\n<meta name=\"twitter:site\" content=\"@kinsta_fr\" \/>\n<meta name=\"twitter:label1\" content=\"\u00c9crit par\" \/>\n\t<meta name=\"twitter:data1\" content=\"Joel Olawanle\" \/>\n\t<meta name=\"twitter:label2\" content=\"Dur\u00e9e de lecture estim\u00e9e\" \/>\n\t<meta name=\"twitter:data2\" content=\"21 minutes\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\/\/kinsta.com\/fr\/blog\/scripts-shell-api-kinsta\/#article\",\"isPartOf\":{\"@id\":\"https:\/\/kinsta.com\/fr\/blog\/scripts-shell-api-kinsta\/\"},\"author\":{\"name\":\"Joel Olawanle\",\"@id\":\"https:\/\/kinsta.com\/fr\/#\/schema\/person\/efa7de30245ca15be5ce1dcacff89c07\"},\"headline\":\"G\u00e9rer vos sites WordPress avec des scripts shell et l&rsquo;API Kinsta\",\"datePublished\":\"2025-02-27T11:56:56+00:00\",\"dateModified\":\"2025-02-28T12:26:08+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\/\/kinsta.com\/fr\/blog\/scripts-shell-api-kinsta\/\"},\"wordCount\":2988,\"publisher\":{\"@id\":\"https:\/\/kinsta.com\/fr\/#organization\"},\"image\":{\"@id\":\"https:\/\/kinsta.com\/fr\/blog\/scripts-shell-api-kinsta\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/kinsta.com\/fr\/wp-content\/uploads\/sites\/4\/2025\/02\/how-to-use-shell-scripts-and-the-kinsta-api-for-wordpress-management.png\",\"inLanguage\":\"fr-FR\"},{\"@type\":\"WebPage\",\"@id\":\"https:\/\/kinsta.com\/fr\/blog\/scripts-shell-api-kinsta\/\",\"url\":\"https:\/\/kinsta.com\/fr\/blog\/scripts-shell-api-kinsta\/\",\"name\":\"G\u00e9rer vos sites WordPress avec des scripts shell et l'API Kinsta\",\"isPartOf\":{\"@id\":\"https:\/\/kinsta.com\/fr\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\/\/kinsta.com\/fr\/blog\/scripts-shell-api-kinsta\/#primaryimage\"},\"image\":{\"@id\":\"https:\/\/kinsta.com\/fr\/blog\/scripts-shell-api-kinsta\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/kinsta.com\/fr\/wp-content\/uploads\/sites\/4\/2025\/02\/how-to-use-shell-scripts-and-the-kinsta-api-for-wordpress-management.png\",\"datePublished\":\"2025-02-27T11:56:56+00:00\",\"dateModified\":\"2025-02-28T12:26:08+00:00\",\"description\":\"G\u00e9rez efficacement vos sites WordPress \u00e0 l'aide de scripts shell et de l'API Kinsta pour une automatisation et des performances optimis\u00e9es.\",\"breadcrumb\":{\"@id\":\"https:\/\/kinsta.com\/fr\/blog\/scripts-shell-api-kinsta\/#breadcrumb\"},\"inLanguage\":\"fr-FR\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/kinsta.com\/fr\/blog\/scripts-shell-api-kinsta\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"fr-FR\",\"@id\":\"https:\/\/kinsta.com\/fr\/blog\/scripts-shell-api-kinsta\/#primaryimage\",\"url\":\"https:\/\/kinsta.com\/fr\/wp-content\/uploads\/sites\/4\/2025\/02\/how-to-use-shell-scripts-and-the-kinsta-api-for-wordpress-management.png\",\"contentUrl\":\"https:\/\/kinsta.com\/fr\/wp-content\/uploads\/sites\/4\/2025\/02\/how-to-use-shell-scripts-and-the-kinsta-api-for-wordpress-management.png\",\"width\":1470,\"height\":735},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/kinsta.com\/fr\/blog\/scripts-shell-api-kinsta\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\/\/kinsta.com\/fr\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"API\",\"item\":\"https:\/\/kinsta.com\/fr\/sujets\/api\/\"},{\"@type\":\"ListItem\",\"position\":3,\"name\":\"G\u00e9rer vos sites WordPress avec des scripts shell et l&#8217;API Kinsta\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\/\/kinsta.com\/fr\/#website\",\"url\":\"https:\/\/kinsta.com\/fr\/\",\"name\":\"Kinsta\u00ae\",\"description\":\"Solutions d&#039;h\u00e9bergement premium, rapides et s\u00e9curis\u00e9es\",\"publisher\":{\"@id\":\"https:\/\/kinsta.com\/fr\/#organization\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\/\/kinsta.com\/fr\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"fr-FR\"},{\"@type\":\"Organization\",\"@id\":\"https:\/\/kinsta.com\/fr\/#organization\",\"name\":\"Kinsta\",\"url\":\"https:\/\/kinsta.com\/fr\/\",\"logo\":{\"@type\":\"ImageObject\",\"inLanguage\":\"fr-FR\",\"@id\":\"https:\/\/kinsta.com\/fr\/#\/schema\/logo\/image\/\",\"url\":\"https:\/\/kinsta.com\/fr\/wp-content\/uploads\/sites\/4\/2023\/12\/kinsta-logo.jpeg\",\"contentUrl\":\"https:\/\/kinsta.com\/fr\/wp-content\/uploads\/sites\/4\/2023\/12\/kinsta-logo.jpeg\",\"width\":500,\"height\":500,\"caption\":\"Kinsta\"},\"image\":{\"@id\":\"https:\/\/kinsta.com\/fr\/#\/schema\/logo\/image\/\"},\"sameAs\":[\"https:\/\/www.facebook.com\/kinstafrance\/\",\"https:\/\/x.com\/kinsta_fr\",\"https:\/\/www.instagram.com\/kinstahosting\/\",\"https:\/\/www.linkedin.com\/company\/kinsta\/\",\"https:\/\/www.pinterest.com\/kinstahosting\/\",\"https:\/\/www.youtube.com\/c\/Kinsta\"]},{\"@type\":\"Person\",\"@id\":\"https:\/\/kinsta.com\/fr\/#\/schema\/person\/efa7de30245ca15be5ce1dcacff89c07\",\"name\":\"Joel Olawanle\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"fr-FR\",\"@id\":\"https:\/\/kinsta.com\/fr\/#\/schema\/person\/image\/\",\"url\":\"https:\/\/secure.gravatar.com\/avatar\/051bf577ce2c837846a1db9eef184758?s=96&d=mm&r=g\",\"contentUrl\":\"https:\/\/secure.gravatar.com\/avatar\/051bf577ce2c837846a1db9eef184758?s=96&d=mm&r=g\",\"caption\":\"Joel Olawanle\"},\"description\":\"Joel is a Frontend developer working at Kinsta as a Technical Editor. He is a passionate teacher with love for open source and has written over 300 technical articles majorly around JavaScript and it's frameworks.\",\"sameAs\":[\"https:\/\/joelolawanle.com\/\",\"https:\/\/www.linkedin.com\/in\/olawanlejoel\/\",\"https:\/\/x.com\/olawanle_joel\",\"https:\/\/www.youtube.com\/@joelolawanle\"],\"gender\":\"male\",\"knowsAbout\":[\"JavaScript\",\"React\",\"Next.js\"],\"knowsLanguage\":[\"English\"],\"jobTitle\":\"Technical Editor\",\"worksFor\":\"Kinsta\",\"url\":\"https:\/\/kinsta.com\/fr\/blog\/author\/joelolawanle\/\"}]}<\/script>\n<!-- \/ Yoast SEO Premium plugin. -->","yoast_head_json":{"title":"G\u00e9rer vos sites WordPress avec des scripts shell et l'API Kinsta","description":"G\u00e9rez efficacement vos sites WordPress \u00e0 l'aide de scripts shell et de l'API Kinsta pour une automatisation et des performances optimis\u00e9es.","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/kinsta.com\/fr\/blog\/scripts-shell-api-kinsta\/","og_locale":"fr_FR","og_type":"article","og_title":"G\u00e9rer vos sites WordPress avec des scripts shell et l'API Kinsta","og_description":"G\u00e9rez efficacement vos sites WordPress \u00e0 l'aide de scripts shell et de l'API Kinsta pour une automatisation et des performances optimis\u00e9es.","og_url":"https:\/\/kinsta.com\/fr\/blog\/scripts-shell-api-kinsta\/","og_site_name":"Kinsta\u00ae","article_publisher":"https:\/\/www.facebook.com\/kinstafrance\/","article_published_time":"2025-02-27T11:56:56+00:00","article_modified_time":"2025-02-28T12:26:08+00:00","og_image":[{"width":1470,"height":735,"url":"https:\/\/kinsta.com\/fr\/wp-content\/uploads\/sites\/4\/2025\/02\/how-to-use-shell-scripts-and-the-kinsta-api-for-wordpress-management.png","type":"image\/png"}],"author":"Joel Olawanle","twitter_card":"summary_large_image","twitter_description":"G\u00e9rez efficacement vos sites WordPress \u00e0 l'aide de scripts shell et de l'API Kinsta pour une automatisation et des performances optimis\u00e9es.","twitter_image":"https:\/\/kinsta.com\/fr\/wp-content\/uploads\/sites\/4\/2025\/02\/how-to-use-shell-scripts-and-the-kinsta-api-for-wordpress-management-1024x512.png","twitter_creator":"@olawanle_joel","twitter_site":"@kinsta_fr","twitter_misc":{"\u00c9crit par":"Joel Olawanle","Dur\u00e9e de lecture estim\u00e9e":"21 minutes"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/kinsta.com\/fr\/blog\/scripts-shell-api-kinsta\/#article","isPartOf":{"@id":"https:\/\/kinsta.com\/fr\/blog\/scripts-shell-api-kinsta\/"},"author":{"name":"Joel Olawanle","@id":"https:\/\/kinsta.com\/fr\/#\/schema\/person\/efa7de30245ca15be5ce1dcacff89c07"},"headline":"G\u00e9rer vos sites WordPress avec des scripts shell et l&rsquo;API Kinsta","datePublished":"2025-02-27T11:56:56+00:00","dateModified":"2025-02-28T12:26:08+00:00","mainEntityOfPage":{"@id":"https:\/\/kinsta.com\/fr\/blog\/scripts-shell-api-kinsta\/"},"wordCount":2988,"publisher":{"@id":"https:\/\/kinsta.com\/fr\/#organization"},"image":{"@id":"https:\/\/kinsta.com\/fr\/blog\/scripts-shell-api-kinsta\/#primaryimage"},"thumbnailUrl":"https:\/\/kinsta.com\/fr\/wp-content\/uploads\/sites\/4\/2025\/02\/how-to-use-shell-scripts-and-the-kinsta-api-for-wordpress-management.png","inLanguage":"fr-FR"},{"@type":"WebPage","@id":"https:\/\/kinsta.com\/fr\/blog\/scripts-shell-api-kinsta\/","url":"https:\/\/kinsta.com\/fr\/blog\/scripts-shell-api-kinsta\/","name":"G\u00e9rer vos sites WordPress avec des scripts shell et l'API Kinsta","isPartOf":{"@id":"https:\/\/kinsta.com\/fr\/#website"},"primaryImageOfPage":{"@id":"https:\/\/kinsta.com\/fr\/blog\/scripts-shell-api-kinsta\/#primaryimage"},"image":{"@id":"https:\/\/kinsta.com\/fr\/blog\/scripts-shell-api-kinsta\/#primaryimage"},"thumbnailUrl":"https:\/\/kinsta.com\/fr\/wp-content\/uploads\/sites\/4\/2025\/02\/how-to-use-shell-scripts-and-the-kinsta-api-for-wordpress-management.png","datePublished":"2025-02-27T11:56:56+00:00","dateModified":"2025-02-28T12:26:08+00:00","description":"G\u00e9rez efficacement vos sites WordPress \u00e0 l'aide de scripts shell et de l'API Kinsta pour une automatisation et des performances optimis\u00e9es.","breadcrumb":{"@id":"https:\/\/kinsta.com\/fr\/blog\/scripts-shell-api-kinsta\/#breadcrumb"},"inLanguage":"fr-FR","potentialAction":[{"@type":"ReadAction","target":["https:\/\/kinsta.com\/fr\/blog\/scripts-shell-api-kinsta\/"]}]},{"@type":"ImageObject","inLanguage":"fr-FR","@id":"https:\/\/kinsta.com\/fr\/blog\/scripts-shell-api-kinsta\/#primaryimage","url":"https:\/\/kinsta.com\/fr\/wp-content\/uploads\/sites\/4\/2025\/02\/how-to-use-shell-scripts-and-the-kinsta-api-for-wordpress-management.png","contentUrl":"https:\/\/kinsta.com\/fr\/wp-content\/uploads\/sites\/4\/2025\/02\/how-to-use-shell-scripts-and-the-kinsta-api-for-wordpress-management.png","width":1470,"height":735},{"@type":"BreadcrumbList","@id":"https:\/\/kinsta.com\/fr\/blog\/scripts-shell-api-kinsta\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/kinsta.com\/fr\/"},{"@type":"ListItem","position":2,"name":"API","item":"https:\/\/kinsta.com\/fr\/sujets\/api\/"},{"@type":"ListItem","position":3,"name":"G\u00e9rer vos sites WordPress avec des scripts shell et l&#8217;API Kinsta"}]},{"@type":"WebSite","@id":"https:\/\/kinsta.com\/fr\/#website","url":"https:\/\/kinsta.com\/fr\/","name":"Kinsta\u00ae","description":"Solutions d&#039;h\u00e9bergement premium, rapides et s\u00e9curis\u00e9es","publisher":{"@id":"https:\/\/kinsta.com\/fr\/#organization"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/kinsta.com\/fr\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"fr-FR"},{"@type":"Organization","@id":"https:\/\/kinsta.com\/fr\/#organization","name":"Kinsta","url":"https:\/\/kinsta.com\/fr\/","logo":{"@type":"ImageObject","inLanguage":"fr-FR","@id":"https:\/\/kinsta.com\/fr\/#\/schema\/logo\/image\/","url":"https:\/\/kinsta.com\/fr\/wp-content\/uploads\/sites\/4\/2023\/12\/kinsta-logo.jpeg","contentUrl":"https:\/\/kinsta.com\/fr\/wp-content\/uploads\/sites\/4\/2023\/12\/kinsta-logo.jpeg","width":500,"height":500,"caption":"Kinsta"},"image":{"@id":"https:\/\/kinsta.com\/fr\/#\/schema\/logo\/image\/"},"sameAs":["https:\/\/www.facebook.com\/kinstafrance\/","https:\/\/x.com\/kinsta_fr","https:\/\/www.instagram.com\/kinstahosting\/","https:\/\/www.linkedin.com\/company\/kinsta\/","https:\/\/www.pinterest.com\/kinstahosting\/","https:\/\/www.youtube.com\/c\/Kinsta"]},{"@type":"Person","@id":"https:\/\/kinsta.com\/fr\/#\/schema\/person\/efa7de30245ca15be5ce1dcacff89c07","name":"Joel Olawanle","image":{"@type":"ImageObject","inLanguage":"fr-FR","@id":"https:\/\/kinsta.com\/fr\/#\/schema\/person\/image\/","url":"https:\/\/secure.gravatar.com\/avatar\/051bf577ce2c837846a1db9eef184758?s=96&d=mm&r=g","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/051bf577ce2c837846a1db9eef184758?s=96&d=mm&r=g","caption":"Joel Olawanle"},"description":"Joel is a Frontend developer working at Kinsta as a Technical Editor. He is a passionate teacher with love for open source and has written over 300 technical articles majorly around JavaScript and it's frameworks.","sameAs":["https:\/\/joelolawanle.com\/","https:\/\/www.linkedin.com\/in\/olawanlejoel\/","https:\/\/x.com\/olawanle_joel","https:\/\/www.youtube.com\/@joelolawanle"],"gender":"male","knowsAbout":["JavaScript","React","Next.js"],"knowsLanguage":["English"],"jobTitle":"Technical Editor","worksFor":"Kinsta","url":"https:\/\/kinsta.com\/fr\/blog\/author\/joelolawanle\/"}]}},"acf":[],"_links":{"self":[{"href":"https:\/\/kinsta.com\/fr\/wp-json\/wp\/v2\/posts\/79437","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/kinsta.com\/fr\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/kinsta.com\/fr\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/kinsta.com\/fr\/wp-json\/wp\/v2\/users\/287"}],"replies":[{"embeddable":true,"href":"https:\/\/kinsta.com\/fr\/wp-json\/wp\/v2\/comments?post=79437"}],"version-history":[{"count":6,"href":"https:\/\/kinsta.com\/fr\/wp-json\/wp\/v2\/posts\/79437\/revisions"}],"predecessor-version":[{"id":79444,"href":"https:\/\/kinsta.com\/fr\/wp-json\/wp\/v2\/posts\/79437\/revisions\/79444"}],"alternate":[{"embeddable":true,"hreflang":"en","title":"English","href":"https:\/\/kinsta.com\/fr\/wp-json\/kinsta\/v1\/posts\/79437\/translations\/en"},{"embeddable":true,"hreflang":"it","title":"Italian","href":"https:\/\/kinsta.com\/fr\/wp-json\/kinsta\/v1\/posts\/79437\/translations\/it"},{"embeddable":true,"hreflang":"pt","title":"Portuguese","href":"https:\/\/kinsta.com\/fr\/wp-json\/kinsta\/v1\/posts\/79437\/translations\/pt"},{"embeddable":true,"hreflang":"fr","title":"French","href":"https:\/\/kinsta.com\/fr\/wp-json\/kinsta\/v1\/posts\/79437\/translations\/fr"},{"embeddable":true,"hreflang":"de","title":"German","href":"https:\/\/kinsta.com\/fr\/wp-json\/kinsta\/v1\/posts\/79437\/translations\/de"},{"embeddable":true,"hreflang":"ja","title":"Japanese","href":"https:\/\/kinsta.com\/fr\/wp-json\/kinsta\/v1\/posts\/79437\/translations\/jp"},{"embeddable":true,"hreflang":"nl","title":"Dutch","href":"https:\/\/kinsta.com\/fr\/wp-json\/kinsta\/v1\/posts\/79437\/translations\/nl"},{"embeddable":true,"hreflang":"es","title":"Spanish","href":"https:\/\/kinsta.com\/fr\/wp-json\/kinsta\/v1\/posts\/79437\/translations\/es"},{"href":"https:\/\/kinsta.com\/fr\/wp-json\/kinsta\/v1\/posts\/79437\/tree"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/kinsta.com\/fr\/wp-json\/wp\/v2\/media\/79438"}],"wp:attachment":[{"href":"https:\/\/kinsta.com\/fr\/wp-json\/wp\/v2\/media?parent=79437"}],"wp:term":[{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/kinsta.com\/fr\/wp-json\/wp\/v2\/tags?post=79437"},{"taxonomy":"topic","embeddable":true,"href":"https:\/\/kinsta.com\/fr\/wp-json\/wp\/v2\/topic?post=79437"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}