{"id":62374,"date":"2022-10-24T09:17:04","date_gmt":"2022-10-24T08:17:04","guid":{"rendered":"https:\/\/kinqsta.com\/fr\/?p=62374&#038;preview=true&#038;preview_id=62374"},"modified":"2023-08-22T11:30:10","modified_gmt":"2023-08-22T10:30:10","slug":"python-wordpress","status":"publish","type":"post","link":"https:\/\/kinqsta.com\/fr\/blog\/python-wordpress\/","title":{"rendered":"Perfectionnez vos comp\u00e9tences en Python en connectant votre application \u00e0 WordPress"},"content":{"rendered":"<p>WordPress est devenu le syst\u00e8me de gestion de contenu (Content Manager System ou CMS) le plus utilis\u00e9, en grande partie gr\u00e2ce \u00e0 son interface de programmation d&rsquo;applications (Application Programming Interface ou API). L&rsquo;<a href=\"https:\/\/kinqsta.com\/fr\/blog\/api-rest-wordpress\/\" target=\"_blank\" rel=\"noopener noreferrer\">API REST de WordPress<\/a> permet \u00e0 WordPress de \u00ab parler \u00bb avec d&rsquo;autres applications \u00e9crites dans divers langages &#8211; y compris Python.<\/p>\n<p><a href=\"https:\/\/kinqsta.com\/fr\/blog\/facon-d-apprendre-python\/#what-is-python\" target=\"_blank\" rel=\"noopener noreferrer\">Python<\/a> est un langage de programmation extensible aux usages vari\u00e9s et \u00e0 la syntaxe lisible par l&rsquo;homme, ce qui en fait un outil puissant pour g\u00e9rer \u00e0 distance le contenu de WordPress.<\/p>\n<p>Voici quelques cas d&rsquo;utilisation de l&rsquo;API REST de WordPress pour vos applications et comment vous pouvez utiliser Python pour les prendre en charge :<\/p>\n<ul>\n<li>Utiliser des mod\u00e8les pr\u00e9d\u00e9finis pour permettre \u00e0 votre application de transformer rapidement des donn\u00e9es brutes en articles format\u00e9s accompagn\u00e9s d&rsquo;explications.<\/li>\n<li>Construire une application de back-office sur Django et Python qui affiche des offres \u00e0 dur\u00e9e limit\u00e9e \u00e0 vos clients chaque fois qu&rsquo;une remise ou un \u00e9v\u00e9nement de vente sp\u00e9cifique \u00e0 un objet se produit.<\/li>\n<li>Int\u00e9grer des scripts Python \u00e0 ex\u00e9cuter \u00e0 l&rsquo;int\u00e9rieur de votre site WordPress<\/li>\n<\/ul>\n<p>Ce tutoriel vous aidera \u00e0 cr\u00e9er une application console Python simple qui communique avec l&rsquo;API REST de WordPress et ex\u00e9cute des op\u00e9rations sur celle-ci. Le code complet du projet est \u00e9galement disponible.<\/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>Installation et configuration de WordPress<\/h2>\n<p>Tout d&rsquo;abord, installons et ex\u00e9cutons un site web WordPress en local sur votre machine de d\u00e9veloppement. C&rsquo;est une excellente fa\u00e7on de commencer avec WordPress puisque vous n&rsquo;avez pas besoin de cr\u00e9er un compte ou d&rsquo;acheter un nom de domaine pour l&rsquo;h\u00e9bergement.<\/p>\n<p>Avant d&rsquo;installer WordPress localement, certains composants doivent fonctionner sur votre ordinateur, notamment le serveur web Apache, une base de donn\u00e9es locale et le langage PHP dans lequel WordPress est \u00e9crit.<\/p>\n<p>Heureusement, nous pouvons utiliser <a href=\"https:\/\/kinqsta.com\/fr\/devkinsta\/\" target=\"_blank\" rel=\"noopener noreferrer\">DevKinsta<\/a>, une suite gratuite de d\u00e9veloppement local de WordPress disponible pour tous les principaux syst\u00e8mes d&rsquo;exploitation (vous n&rsquo;avez pas besoin d&rsquo;\u00eatre client de Kinsta pour l&rsquo;utiliser).<\/p>\n<p>DevKinsta est disponible pour Windows, Mac et Linux, et installe WordPress et toutes ses d\u00e9pendances sur votre machine locale.<\/p>\n<p>Avant d&rsquo;installer DevKinsta, vous devez avoir Docker en cours d&rsquo;ex\u00e9cution localement, donc t\u00e9l\u00e9chargez et <a href=\"https:\/\/docs.docker.com\/engine\/install\/\" target=\"_blank\" rel=\"noopener noreferrer\">installez le moteur Docker<\/a> si vous ne l&rsquo;avez pas encore fait.<\/p>\n<p>Apr\u00e8s avoir install\u00e9 Docker Desktop, vous pouvez <a href=\"https:\/\/kinqsta.com\/fr\/devkinsta\/download\/\" target=\"_blank\" rel=\"noopener noreferrer\">t\u00e9l\u00e9charger automatiquement<\/a> le paquet qui correspond \u00e0 votre syst\u00e8me d&rsquo;exploitation.<\/p>\n<figure style=\"text-align: center\">\n<p><figure style=\"width: 826px\" class=\"wp-caption alignnone\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/kinqsta.com\/wp-content\/uploads\/2022\/10\/DevKinsta-downloading-screen.png\" alt=\"Page d'installation de DevKinsta.\" width=\"826\" height=\"570\"><figcaption class=\"wp-caption-text\">Page d&rsquo;installation de DevKinsta.<\/figcaption><\/figure><\/figure>\n<p>Lorsque vous ex\u00e9cutez le programme d&rsquo;installation de DevKinsta, Docker commence imm\u00e9diatement \u00e0 s&rsquo;initialiser :<\/p>\n<figure style=\"text-align: center\">\n<p><figure style=\"width: 546px\" class=\"wp-caption alignnone\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/kinqsta.com\/wp-content\/uploads\/2022\/10\/DevKinsta-starting-Docker-screen.png\" alt=\"DevKinsta d\u00e9marre Docker localement.\" width=\"546\" height=\"368\"><figcaption class=\"wp-caption-text\">DevKinsta d\u00e9marre Docker localement.<\/figcaption><\/figure><\/figure>\n<p>Ensuite, choisissez <strong>Nouveau site WordPress<\/strong> dans le menu <strong>Cr\u00e9er un nouveau site <\/strong>:<\/p>\n<figure style=\"text-align: center\">\n<p><figure style=\"width: 905px\" class=\"wp-caption alignnone\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/kinqsta.com\/wp-content\/uploads\/2022\/10\/DevKinsta-create-new-WordPress-site-screen.png\" alt=\"Le menu Cr\u00e9er un nouveau site de DevKinsta.\" width=\"905\" height=\"521\"><figcaption class=\"wp-caption-text\">Le menu Cr\u00e9er un nouveau site de DevKinsta.<\/figcaption><\/figure><\/figure>\n<p>Maintenant, le programme d&rsquo;installation de DevKinsta vous demande de cr\u00e9er les informations d&rsquo;identification pour le compte d&rsquo;administration de WordPress :<\/p>\n<figure style=\"text-align: center\">\n<p><figure style=\"width: 501px\" class=\"wp-caption alignnone\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/kinqsta.com\/wp-content\/uploads\/2022\/10\/DevKinsta-new-WordPress-site-creation-screen.png\" alt=\"DevKinsta affichant le formulaire de Nouveau site WordPress.\" width=\"501\" height=\"463\"><figcaption class=\"wp-caption-text\">DevKinsta affichant le formulaire de Nouveau site WordPress.<\/figcaption><\/figure><\/figure>\n<p>Une fois install\u00e9, DevKinsta est une application autonome. Vous pouvez maintenant acc\u00e9der \u00e0 la fois au site WordPress (via le bouton <strong>Ouvrir le site<\/strong>) et au tableau de bord d&rsquo;administration de WordPress (bouton <strong>WP Admin<\/strong>).<\/p>\n<figure style=\"text-align: center\">\n<p><figure style=\"width: 969px\" class=\"wp-caption alignnone\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/kinqsta.com\/wp-content\/uploads\/2022\/10\/DevKinsta-WordPress-site-info-screen.png\" alt=\"Le panneau d'information du site de DevKinsta.\" width=\"969\" height=\"550\"><figcaption class=\"wp-caption-text\">Le panneau d&rsquo;information du site de DevKinsta.<\/figcaption><\/figure><\/figure>\n<p>Ensuite, vous devez activer <a href=\"https:\/\/kinqsta.com\/fr\/blog\/comment-fonctionne-ssl\/\" target=\"_blank\" rel=\"noopener noreferrer\">SSL et HTTPS<\/a> pour votre site web. Cela am\u00e9liore la s\u00e9curit\u00e9 de votre site web gr\u00e2ce \u00e0 un certificat SSL.<\/p>\n<figure style=\"text-align: center\">\n<p><figure style=\"width: 969px\" class=\"wp-caption alignnone\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/kinqsta.com\/wp-content\/uploads\/2022\/10\/DevKinsta-SSL-and-HTTPS-option-screen.png\" alt=\"L'option SSL et HTTPS de DevKinsta.\" width=\"969\" height=\"550\"><figcaption class=\"wp-caption-text\">L&rsquo;option SSL et HTTPS de DevKinsta.<\/figcaption><\/figure><\/figure>\n<p>Allez maintenant dans l&rsquo;application DevKinsta et cliquez sur le bouton<strong> Ouvrir le site<\/strong>. Un nouvel onglet du navigateur affichera la page d&rsquo;accueil de votre site WordPress :<\/p>\n<figure style=\"text-align: center\">\n<p><figure style=\"width: 827px\" class=\"wp-caption alignnone\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/kinqsta.com\/wp-content\/uploads\/2022\/10\/DevKinsta-new-local-site-Hello-World.png\" alt=\"Page d'accueil de WordPress.\" width=\"827\" height=\"612\"><figcaption class=\"wp-caption-text\">Page d&rsquo;accueil de WordPress.<\/figcaption><\/figure><\/figure>\n<p>Ceci est votre blog WordPress, o\u00f9 vous pouvez commencer \u00e0 \u00e9crire. Mais pour permettre \u00e0 Python d&rsquo;acc\u00e9der et d&rsquo;utiliser l&rsquo;API REST de WordPress, nous devons d&rsquo;abord configurer l&rsquo;administration de WordPress.<\/p>\n<p>Cliquez maintenant sur le bouton <strong>WP Admin<\/strong> de l&rsquo;application DevKinsta, puis fournissez votre identifiant et votre mot de passe pour acc\u00e9der au <strong>tableau de bord de WordPress <\/strong>:<\/p>\n<figure style=\"text-align: center\">\n<p><figure style=\"width: 357px\" class=\"wp-caption alignnone\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/kinqsta.com\/wp-content\/uploads\/2022\/10\/WordPress-admin-dashboard-login-screen.png\" alt=\"Formulaire de connexion de WordPress.\" width=\"357\" height=\"385\"><figcaption class=\"wp-caption-text\">Formulaire de connexion de WordPress.<\/figcaption><\/figure><\/figure>\n<p>Une fois que vous \u00eates connect\u00e9, vous verrez le <strong>tableau de bord de WordPress <\/strong>:<\/p>\n<figure style=\"text-align: center\">\n<p><figure style=\"width: 989px\" class=\"wp-caption alignnone\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/kinqsta.com\/wp-content\/uploads\/2022\/10\/welcome-to-WordPress-admin-screen.png\" alt=\"Page du tableau de bord de WordPress.\" width=\"989\" height=\"612\"><figcaption class=\"wp-caption-text\">Page du tableau de bord de WordPress.<\/figcaption><\/figure><\/figure>\n<p>WordPress utilise l&rsquo;authentification par cookie comme m\u00e9thode standard. Mais si vous voulez le contr\u00f4ler \u00e0 l&rsquo;aide de l&rsquo;API REST, vous devez vous authentifier avec une technique qui donne acc\u00e8s \u00e0 l&rsquo;API REST de WordPress.<\/p>\n<p>Pour cela, vous utiliserez des <a href=\"https:\/\/make.wordpress.org\/core\/2020\/11\/05\/application-passwords-integration-guide\/\" target=\"_blank\" rel=\"noopener noreferrer\">mots de passe d&rsquo;application<\/a>. Il s&rsquo;agit de cha\u00eenes de 24 caract\u00e8res que WordPress g\u00e9n\u00e8re et associe \u00e0 un profil d&rsquo;utilisateur qui a la permission de g\u00e9rer votre site web.<\/p>\n<p>Pour utiliser Application Passwords, cliquez sur le menu <strong>Extensions<\/strong> dans le tableau de bord, puis recherchez l&rsquo;extension du m\u00eame nom. Ensuite, installez et activez l&rsquo;extension Application Passwords :<\/p>\n<figure style=\"text-align: center\">\n<p><figure style=\"width: 752px\" class=\"wp-caption alignnone\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/kinqsta.com\/wp-content\/uploads\/2022\/10\/WordPress-add-plugins-Application-Passwords.png\" alt=\"Extension Application Passwords pour WordPress.\" width=\"752\" height=\"445\"><figcaption class=\"wp-caption-text\">Extension Application Passwords pour WordPress.<\/figcaption><\/figure><\/figure>\n<p>Pour commencer \u00e0 cr\u00e9er votre mot de passe d&rsquo;application, commencez par d\u00e9velopper le menu <strong>Comptes<\/strong> et cliquez sur <strong>Tous les comptes <\/strong>:<\/p>\n<figure style=\"text-align: center\">\n<p><figure style=\"width: 272px\" class=\"wp-caption alignnone\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/kinqsta.com\/wp-content\/uploads\/2022\/10\/expanded-Users-WordPress-menu.png\" alt=\"Menu Comptes \u00e9tendu.\" width=\"272\" height=\"205\"><figcaption class=\"wp-caption-text\">Menu Comptes \u00e9tendu.<\/figcaption><\/figure><\/figure>\n<p>Maintenant, cliquez sur <strong>Modifier<\/strong> sous votre nom d&rsquo;utilisateur administrateur :<\/p>\n<figure style=\"text-align: center\">\n<p><figure style=\"width: 1015px\" class=\"wp-caption alignnone\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/kinqsta.com\/wp-content\/uploads\/2022\/10\/edit-screen-WordPress-user.png\" alt=\"Interface WordPress WP-Admin.\" width=\"1015\" height=\"471\"><figcaption class=\"wp-caption-text\">Interface WordPress WP-Admin.<\/figcaption><\/figure><\/figure>\n<p>Faites d\u00e9filer la page <strong>Modifier le compte<\/strong> et trouvez la section <strong>Mots de passe de l&rsquo;application<\/strong>. Ici, fournissez un nom pour le mot de passe d&rsquo;application, que vous utiliserez plus tard pour authentifier les requ\u00eates de votre application Python et consommer l&rsquo;API REST :<\/p>\n<figure style=\"text-align: center\">\n<p><figure style=\"width: 761px\" class=\"wp-caption alignnone\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/kinqsta.com\/wp-content\/uploads\/2022\/10\/Application-Passwords-plugin-dashboard.png\" alt=\"Page Application Password.\" width=\"761\" height=\"362\"><figcaption class=\"wp-caption-text\">Page Application Password.<\/figcaption><\/figure><\/figure>\n<p>Cliquez sur <strong>Ajouter un nouveau mot de passe d&rsquo;application<\/strong> pour que WordPress puisse g\u00e9n\u00e9rer un mot de passe al\u00e9atoire de 24 caract\u00e8res pour vous :<\/p>\n<figure style=\"text-align: center\">\n<p><figure style=\"width: 771px\" class=\"wp-caption alignnone\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/kinqsta.com\/wp-content\/uploads\/2022\/10\/Application-Passwords-new-password-page.png\" alt=\"Page Nouveau mot de passe d'application.\" width=\"771\" height=\"110\"><figcaption class=\"wp-caption-text\">Page Nouveau mot de passe d&rsquo;application.<\/figcaption><\/figure><\/figure>\n<p>Ensuite, copiez ce mot de passe et enregistrez-le dans un endroit s\u00fbr pour l&rsquo;utiliser plus tard. N&rsquo;oubliez pas que vous ne pourrez pas r\u00e9cup\u00e9rer ce mot de passe une fois que vous aurez ferm\u00e9 cette page.<\/p>\n<p>Enfin, vous devez configurer les permaliens. WordPress vous permet de cr\u00e9er une structure URL personnalis\u00e9e pour vos permaliens et vos archives. Modifions-la pour qu&rsquo;un article de WordPress intitul\u00e9, par exemple, \u00ab Votre premier site web WordPress \u00bb soit accessible par l&rsquo;URL intuitive https:\/\/your-website.local:port\/votre-premier-site-web-wordpress\/. Cette approche pr\u00e9sente plusieurs avantages, notamment une am\u00e9lioration de la convivialit\u00e9 et de l&rsquo;esth\u00e9tique.<\/p>\n<p>Pour configurer les permaliens, d\u00e9veloppez la section <strong>R\u00e9glages<\/strong> et cliquez sur le menu <strong>Permaliens <\/strong>. Ici, changez les <strong>R\u00e9glages les plus courants<\/strong> en <strong>Titre de la publication <\/strong>:<\/p>\n<figure style=\"text-align: center\"><img decoding=\"async\" src=\"https:\/\/kinqsta.com\/wp-content\/uploads\/2022\/10\/WordPress-change-Permalink-settings-post_name.png\" alt=\"Changing WordPress permalink settings. \"><\/figure>\n<p>La configuration de la structure des permaliens \u00e0 l&rsquo;aide de la structure <strong>Titre de la publication<\/strong> est \u00e9galement n\u00e9cessaire car elle nous permettra de r\u00e9cup\u00e9rer les articles plus tard dans notre code Python en utilisant le format JSON. Sinon, une erreur de d\u00e9codage JSON sera g\u00e9n\u00e9r\u00e9e.<\/p>\n<h2>Comment contr\u00f4ler WordPress depuis Python<\/h2>\n<p>WordPress est \u00e9crit en PHP, mais il poss\u00e8de une API REST qui permet \u00e0 d&rsquo;autres langages de programmation, sites et applications de consommer son contenu. L&rsquo;exposition du contenu de WordPress dans l&rsquo;architecture REST le rend disponible au format JSON. Par cons\u00e9quent, d&rsquo;autres services peuvent s&rsquo;int\u00e9grer \u00e0 WordPress et effectuer des op\u00e9rations de cr\u00e9ation, lecture, mise \u00e0 jour et suppression (Create Read Update Delete ou CRUD) sans avoir besoin d&rsquo;une installation locale de WordPress.<\/p>\n<p>Ensuite, vous construirez une application Python simple pour voir comment vous pouvez utiliser l&rsquo;API REST de WordPress pour cr\u00e9er, r\u00e9cup\u00e9rer, mettre \u00e0 jour et supprimer des articles.<\/p>\n<p>Cr\u00e9ez un nouveau r\u00e9pertoire pour votre nouveau projet Python simple et nommez-le comme <code>PythonWordPress<\/code> :<\/p>\n<pre><code class=\"language-bash\">..\/PythonWordPress<\/code><\/pre>\n<p>Maintenant, vous allez cr\u00e9er un environnement virtuel pour votre projet, lui permettant de maintenir un ensemble ind\u00e9pendant de paquets Python install\u00e9s, les isolant de vos r\u00e9pertoires syst\u00e8me et \u00e9vitant les conflits de version. Cr\u00e9ez un environnement virtuel en ex\u00e9cutant la commande <code>venv<\/code> :<\/p>\n<pre><code class=\"language-bash\">python3 -m venv .venv<\/code><\/pre>\n<p>Ex\u00e9cutez maintenant une commande pour activer l&rsquo;environnement virtuel <strong>.venv<\/strong>. Cette commande varie selon le syst\u00e8me d&rsquo;exploitation :<\/p>\n<ul>\n<li>Windows <code>.venvScriptsactivate<\/code><\/li>\n<li>Mac\/Linux <code>.venv\/bin\/activate<\/code><\/li>\n<\/ul>\n<p>Ensuite, stockez la configuration li\u00e9e \u00e0 votre compte WordPress. Pour s\u00e9parer la configuration de l&rsquo;application de votre code Python, cr\u00e9ez un fichier <strong>.env<\/strong> dans le r\u00e9pertoire de votre projet, et ajoutez ces variables d&rsquo;environnement au fichier :<\/p>\n<pre><code class=\"language-markup\">WEBSITE_URL=\"&lt;&gt;\"\n\nAPI_USERNAME=\"&lt;&gt;\"\n\nAPI_PASSWORD=\"&lt;&gt;\"<\/code><\/pre>\n<p>Heureusement, il est facile de lire les donn\u00e9es ci-dessus \u00e0 partir d&rsquo;une application Python. Vous pouvez installer le paquetage <strong>Python-dotenv<\/strong> afin que votre application puisse lire la configuration du fichier <strong>.env <\/strong>:<\/p>\n<pre><code class=\"language-bash\">pip install python-dotenv<\/code><\/pre>\n<p>Ensuite, installez <strong>aiohttp<\/strong>, un client\/serveur HTTP asynchrone pour Python :<\/p>\n<pre><code class=\"language-bash\">pip install aiohttp<\/code><\/pre>\n<p>Ajoutez maintenant un fichier nomm\u00e9 <strong>app.py<\/strong> avec le code suivant :<\/p>\n<pre><code class=\"language-python\">import asyncio\n\nmenu_options = {\n\n1: 'List Posts',\n\n2: 'Retrieve a Post'\n\n}\n\ndef print_menu():\n\nfor key in menu_options.keys():\n\nprint (key, '--', menu_options[key] )\n\nasync def main():\n\nwhile(True):\n\nprint_menu()\n\noption = input_number('Enter your choice: ')\n\n#Check what choice was entered and act accordingly\n\nif option == 1:\n\nprint('Listing posts...')\n\nelif option == 2:\n\nprint('Retrieving a post...')\n\nelse:\n\nprint('Invalid option. Please enter a number between 1 and 5.')\n\ndef input_number(prompt):\n\nwhile True:\n\ntry:\n\nvalue = int(input(prompt))\n\nexcept ValueError:\n\nprint('Wrong input. Please enter a number ...')\n\ncontinue\n\nif value &lt; 0:\n\nprint(\"Sorry, your response must not be negative.\")\n\nelse:\n\nbreak\n\nreturn value\n\ndef input_text(prompt):\n\nwhile True:\n\ntext = input(prompt)\n\nif len(text) == 0:\n\nprint(\"Text is required.\")\n\ncontinue\n\nelse:\n\nbreak\n\nreturn text\n\nif __name__=='__main__':\n\nasyncio.run(main())<\/code><\/pre>\n<p>Le code ci-dessus affiche un menu de console et vous demande de saisir un nombre pour choisir une option. Ensuite, vous allez d\u00e9velopper ce projet et impl\u00e9menter le code qui vous permet de lister tous les articles et de r\u00e9cup\u00e9rer un article sp\u00e9cifique en utilisant son identifiant.<\/p>\n<h2>R\u00e9cup\u00e9ration des articles dans le code<\/h2>\n<p>Pour interagir avec l&rsquo;API REST de WordPress, vous devez cr\u00e9er un nouveau fichier Python. Cr\u00e9ez un fichier nomm\u00e9 <strong>wordpress_api_helper.py<\/strong> avec le contenu suivant :<\/p>\n<pre><code class=\"language-python\">import aiohttp\n\nimport base64\n\nimport os\n\nimport json\n\nfrom dotenv import load_dotenv\n\nload_dotenv()\n\nuser=os.getenv(\"API_USERNAME\")\n\npassword=os.getenv(\"API_PASSWORD\")\n\nasync def get_all_posts():\n\nasync with aiohttp.ClientSession(os.getenv(\"WEBSITE_URL\")) as session:\n\nasync with session.get(\"\/wp-json\/wp\/v2\/posts\") as response:\n\nprint(\"Status:\", response.status)\n\ntext = await response.text()\n\nwp_posts = json.loads(text)\n\nsorted_wp_posts = sorted(wp_posts, key=lambda p: p['id'])\n\nprint(\"=====================================\")\n\nfor wp_post in sorted_wp_posts:\n\nprint(\"id:\", wp_post['id'])\n\nprint(\"title:\", wp_post['title']['rendered'])\n\nprint(\"=====================================\")\n\nasync def get_post(id):\n\nasync with aiohttp.ClientSession(os.getenv(\"WEBSITE_URL\")) as session:\n\nasync with session.get(f\"\/wp-json\/wp\/v2\/posts\/{id}\") as response:\n\nprint(\"Status:\", response.status)\n\ntext = await response.text()\n\nwp_post = json.loads(text)\n\nprint(\"=====================================\")\n\nprint(\"Post\")\n\nprint(\"     id:\", wp_post['id'])\n\nprint(\"     title:\", wp_post['title']['rendered'])\n\nprint(\"     content:\", wp_post['content']['rendered'])\n\nprint(\"=====================================\")<\/code><\/pre>\n<p>Remarquez l&rsquo;utilisation de la biblioth\u00e8que <strong>aiohttp<\/strong> ci-dessus. Les langages modernes fournissent une syntaxe et des outils qui permettent la programmation asynchrone. Cela augmente la r\u00e9activit\u00e9 de l&rsquo;application en permettant au programme d&rsquo;effectuer des t\u00e2ches parall\u00e8lement \u00e0 des op\u00e9rations comme les <a href=\"https:\/\/kinqsta.com\/fr\/blog\/qu-est-une-requete-http\/\" target=\"_blank\" rel=\"noopener noreferrer\">requ\u00eates web<\/a>, les op\u00e9rations de base de donn\u00e9es et les E\/S de disque. Python offre <a href=\"https:\/\/docs.python.org\/3\/library\/asyncio.html\" target=\"_blank\" rel=\"noopener noreferrer\">asyncio<\/a> comme base pour son cadre de programmation asynchrone, et la biblioth\u00e8que <a href=\"https:\/\/docs.aiohttp.org\/en\/stable\/\" target=\"_blank\" rel=\"noopener noreferrer\">aiohttp<\/a> est construite au-dessus d&rsquo;<strong> asyncio<\/strong> pour apporter un acc\u00e8s asynchrone aux op\u00e9rations client\/serveur HTTP effectu\u00e9es en Python.<\/p>\n<p>La fonction <code>ClientSession<\/code> ci-dessus s&rsquo;ex\u00e9cute de mani\u00e8re asynchrone et renvoie un objet <code>session<\/code>, que notre programme utilise pour effectuer une op\u00e9ration HTTP GET contre le point de terminaison <code>\/wp-json\/wp\/v2\/posts<\/code>. La seule diff\u00e9rence entre une requ\u00eate pour r\u00e9cup\u00e9rer tous les articles et une requ\u00eate pour un article sp\u00e9cifique est que cette derni\u00e8re requ\u00eate passe un param\u00e8tre <code>post id<\/code> dans la route URL : <code>\/wp-json\/wp\/v2\/posts\/{id}<\/code>.<\/p>\n<p>Maintenant, ouvrez le fichier <strong>app.py<\/strong> et ajoutez l&rsquo;instruction <code>import<\/code> :<\/p>\n<pre><code class=\"language-python\">from wordpress_api_helper import get_all_posts, get_post<\/code><\/pre>\n<p>Ensuite, modifiez la fonction <code>main<\/code> pour appeler les fonctions <code>get_all_posts<\/code> et <code>get_post<\/code> :<\/p>\n<pre><code class=\"language-python\">if option == 1:\n\nprint('Listing posts...')\n\nawait get_all_posts()\n\nelif option == 2:\n\nprint('Retrieving a post...')\n\nid = input_number('Enter the post id: ')\n\nawait get_post(id)<\/code><\/pre>\n<p>Puis ex\u00e9cutez l&rsquo;application :<\/p>\n<pre><code class=\"language-bash\">python app.py<\/code><\/pre>\n<p>Vous verrez alors le menu de l&rsquo;application :<\/p>\n<figure style=\"text-align: center\">\n<p><figure style=\"width: 804px\" class=\"wp-caption alignnone\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/kinqsta.com\/wp-content\/uploads\/2022\/10\/Python-app-WordPress-start.png\" alt=\"Menu de l'application Python.\" width=\"804\" height=\"114\"><figcaption class=\"wp-caption-text\">Menu de l&rsquo;application Python.<\/figcaption><\/figure><\/figure>\n<p>Essayez maintenant l&rsquo;option 1 pour afficher la liste des articles que votre application Python r\u00e9cup\u00e8re, et l&rsquo;option 2 pour s\u00e9lectionner un article :<\/p>\n<figure style=\"text-align: center\">\n<p><figure style=\"width: 670px\" class=\"wp-caption alignnone\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/kinqsta.com\/wp-content\/uploads\/2022\/10\/list-and-select-posts-Python-app.png\" alt=\"Application Python montrant la liste des articles et un seul article s\u00e9lectionn\u00e9 par l'utilisateur.\" width=\"670\" height=\"624\"><figcaption class=\"wp-caption-text\">Application Python montrant la liste des articles et un seul article s\u00e9lectionn\u00e9 par l&rsquo;utilisateur.<\/figcaption><\/figure><\/figure>\n<h2>Cr\u00e9ation d&rsquo;articles avec du code<\/h2>\n<p>Pour cr\u00e9er un article WordPress en Python, commencez par ouvrir le fichier <strong>wordpress_api_helper.py<\/strong> et ajoutez la fonction <code>create_post<\/code> :<\/p>\n<pre><code class=\"language-python\">async def create_post(title, content):\n\nasync with aiohttp.ClientSession(os.getenv(\"WEBSITE_URL\")) as session:\n\nasync with session.post(\n\nf\"\/wp-json\/wp\/v2\/posts?content={content}&title={title}&status=publish\"\n\n, auth=aiohttp.BasicAuth(user, password)) as response:\n\nprint(\"Status:\", response.status)\n\ntext = await response.text()\n\nwp_post = json.loads(text)\n\npost_id = wp_post['id']\n\nprint(f'New post created with id: {post_id}')<\/code><\/pre>\n<p>Ce code appelle la fonction <code>post<\/code> dans l&rsquo;objet <code>session<\/code>, en passant le param\u00e8tre <code>auth<\/code> \u00e0 c\u00f4t\u00e9 de l&rsquo;URL du point de terminaison de l&rsquo;API REST. L&rsquo;objet <code>auth<\/code> contient maintenant l&rsquo;utilisateur WordPress et le mot de passe que vous avez cr\u00e9\u00e9 \u00e0 l&rsquo;aide de Application Passwords. Maintenant, ouvrez le fichier <strong>app.py<\/strong> et ajoutez du code pour importer <code>create_post<\/code> et le menu :<\/p>\n<pre><code class=\"language-python\">from wordpress_api_helper import get_all_posts, get_post, create_post\n\nmenu_options = {\n\n1: 'List Posts',\n\n2: 'Retrieve a Post',\n\n3: 'Create a Post'\n\n}<\/code><\/pre>\n<p>Puis ajoutez une troisi\u00e8me option de menu :<\/p>\n<pre><code class=\"language-python\">elif option == 3:\n\nprint('Creating a post...')\n\ntitle = input_text('Enter the post title: ')\n\ncontent = input_text('Enter the post content: ')\n\nawait create_post(title, f\"{content}\")\n<\/code><\/pre>\n<p>Ensuite, ex\u00e9cutez l&rsquo;application et essayez l&rsquo;option 3, en passant un titre et un contenu pour cr\u00e9er un nouvel article dans WordPress :<\/p>\n<figure style=\"text-align: center\">\n<p><figure style=\"width: 671px\" class=\"wp-caption alignnone\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/kinqsta.com\/wp-content\/uploads\/2022\/10\/create-a-WordPress-post-Python-app.png\" alt=\"Python affichant un article WordPress nouvellement cr\u00e9\u00e9.\" width=\"671\" height=\"335\"><figcaption class=\"wp-caption-text\">Python affichant un article WordPress nouvellement cr\u00e9\u00e9.<\/figcaption><\/figure><\/figure>\n<p>En choisissant \u00e0 nouveau l&rsquo;option 1, vous obtiendrez l&rsquo;identifiant et le titre de l&rsquo;article nouvellement ajout\u00e9 :<\/p>\n<figure style=\"text-align: center\">\n<p><figure style=\"width: 672px\" class=\"wp-caption alignnone\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/kinqsta.com\/wp-content\/uploads\/2022\/10\/return-id-newly-added-post.png\" alt=\"Python retournant le titre et l'id du nouvel article.\" width=\"672\" height=\"333\"><figcaption class=\"wp-caption-text\">Python retournant le titre et l&rsquo;id du nouvel article.<\/figcaption><\/figure><\/figure>\n<p>Vous pouvez \u00e9galement ouvrir votre site web WordPress pour afficher le nouvel article :<\/p>\n<figure style=\"text-align: center\">\n<p><figure style=\"width: 754px\" class=\"wp-caption alignnone\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/kinqsta.com\/wp-content\/uploads\/2022\/10\/Kinsta-Compute-Optimized-C2-post.png\" alt=\"Image du navigateur du nouvel article WordPress.\" width=\"754\" height=\"600\"><figcaption class=\"wp-caption-text\">Image du navigateur du nouvel article WordPress.<\/figcaption><\/figure><\/figure>\n<h2>Mise \u00e0 jour des articles avec du code<\/h2>\n<p>Ouvrez le fichier <strong>wordpress_api_helper.py<\/strong> et ajoutez la fonction <code>update_post<\/code> :<\/p>\n<pre><code class=\"language-python\">async def update_post(id, title, content):\n\nasync with aiohttp.ClientSession(os.getenv(\"WEBSITE_URL\")) as session:\n\nasync with session.post(\n\nf\"\/wp-json\/wp\/v2\/posts\/{id}?content={content}&title={title}&status=publish\"\n\n, auth=aiohttp.BasicAuth(user, password)) as response:\n\nprint(\"Status:\", response.status)\n\ntext = await response.text()\n\nwp_post = json.loads(text)\n\npost_id = wp_post['id']\n\nprint(f'New post created with id: {post_id}')<\/code><\/pre>\n<p>Ouvrez ensuite le fichier <strong>app.py<\/strong> et ajoutez le code pour importer <code>update_post<\/code> et le menu :<\/p>\n<pre><code class=\"language-python\">from wordpress_api_helper import get_all_posts, get_post, create_post, update_post\n\nmenu_options = {\n\n1: 'List Posts',\n\n2: 'Retrieve a Post',\n\n3: 'Create a Post',\n\n4: 'Update a Post'\n\n}<\/code><\/pre>\n<p>Ensuite, ajoutez une quatri\u00e8me option de menu :<\/p>\n<pre><code class=\"language-python\">elif option == 4:\n\nprint('Updating a post...')\n\nid = input_number('Enter the post id: ')\n\ntitle = input_text('Enter the post title: ')\n\ncontent = input_text('Enter the post content: ')\n\nawait update_post(id, title, f\"{content}\")\n<\/code><\/pre>\n<p>Ensuite, ex\u00e9cutez l&rsquo;application et essayez l&rsquo;option 4, en passant un id d&rsquo;article, un titre et un contenu pour mettre \u00e0 jour un article existant.<\/p>\n<figure style=\"text-align: center\">\n<p><figure style=\"width: 670px\" class=\"wp-caption alignnone\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/kinqsta.com\/wp-content\/uploads\/2022\/10\/updating-WordPress-post-Python-app.png\" alt=\"Application Python montrant le menu mis \u00e0 jour.\" width=\"670\" height=\"338\"><figcaption class=\"wp-caption-text\">Application Python montrant le menu mis \u00e0 jour.<\/figcaption><\/figure><\/figure>\n<p>En choisissant l&rsquo;option 2 et en passant l&rsquo;id de l&rsquo;article mis \u00e0 jour, vous obtiendrez les d\u00e9tails de l&rsquo;article nouvellement ajout\u00e9 :<\/p>\n<figure style=\"text-align: center\">\n<p><figure style=\"width: 673px\" class=\"wp-caption alignnone\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/kinqsta.com\/wp-content\/uploads\/2022\/10\/return-updated-post-details.png\" alt=\"Application Python montrant l'article mis \u00e0 jour.\" width=\"673\" height=\"318\"><figcaption class=\"wp-caption-text\">Application Python montrant l&rsquo;article mis \u00e0 jour.<\/figcaption><\/figure><\/figure>\n<h2>Suppression d&rsquo;articles avec du code<\/h2>\n<p>Vous pouvez passer l&rsquo;identifiant de l&rsquo;article \u00e0 l&rsquo;API REST pour supprimer un article.<\/p>\n<p>Ouvrez le fichier <strong>wordpress_api_helper.py<\/strong> et ajoutez la fonction <code>delete_post<\/code> :<\/p>\n<pre><code class=\"language-python\">async def delete_post(id):\n\nasync with aiohttp.ClientSession(os.getenv(\"WEBSITE_URL\")) as session:\n\nasync with session.delete(\n\nf\"\/wp-json\/wp\/v2\/posts\/{id}\"\n\n, auth=aiohttp.BasicAuth(user, password)) as response:\n\nprint(\"Status:\", response.status)\n\ntext = await response.text()\n\nwp_post = json.loads(text)\n\npost_id = wp_post['id']\n\nprint(f'Post with id {post_id} deleted successfully.')<\/code><\/pre>\n<p>Ouvrez maintenant le fichier <strong>app.py<\/strong> et ajoutez le code pour importer <code>delete_post<\/code> et le menu :<\/p>\n<pre><code class=\"language-python\">from wordpress_api_helper import get_all_posts, get_post, create_post, update_post, delete_post\n\nmenu_options = {\n\n1: 'List Posts',\n\n2: 'Retrieve a Post',\n\n3: 'Create a Post',\n\n4: 'Update a Post',\n\n5: 'Delete a Post',\n\n}<\/code><\/pre>\n<p>Ensuite, ajoutez une cinqui\u00e8me option de menu :<\/p>\n<pre><code class=\"language-python\">elif option == 5:\n\nprint('Deleting a post...')\n\nid = input_number('Enter the post id: ')\n\nawait delete_post(id)<\/code><\/pre>\n<p>Ex\u00e9cutez maintenant l&rsquo;application et essayez l&rsquo;option 5, en passant un id pour supprimer l&rsquo;article existant dans WordPress :<\/p>\n<figure style=\"text-align: center\">\n<p><figure style=\"width: 651px\" class=\"wp-caption alignnone\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/kinqsta.com\/wp-content\/uploads\/2022\/10\/deleting-WordPress-Post-Python-app.png\" alt=\"Application Python montrant la suppression de l'article s\u00e9lectionn\u00e9.\" width=\"651\" height=\"120\"><figcaption class=\"wp-caption-text\">Application Python montrant la suppression de l&rsquo;article s\u00e9lectionn\u00e9.<\/figcaption><\/figure><\/figure>\n<p>Remarque : l&rsquo;article supprim\u00e9 peut encore appara\u00eetre si vous ex\u00e9cutez l&rsquo;option <strong>List Posts <\/strong>:<\/p>\n<figure style=\"text-align: center\">\n<p><figure style=\"width: 671px\" class=\"wp-caption alignnone\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/kinqsta.com\/wp-content\/uploads\/2022\/10\/Python-app-listing-posts.png\" alt=\"Application Python montrant la liste des articles d'origine.\" width=\"671\" height=\"288\"><figcaption class=\"wp-caption-text\">Application Python montrant la liste des articles d&rsquo;origine.<\/figcaption><\/figure><\/figure>\n<p>Pour confirmer que vous avez bien supprim\u00e9 l&rsquo;article, attendez quelques secondes et r\u00e9essayez l&rsquo;option <strong>List Posts<\/strong>. Et voil\u00e0, c&rsquo;est fait !<\/p>\n<h2>R\u00e9sum\u00e9<\/h2>\n<p>Gr\u00e2ce \u00e0 l&rsquo;API REST de WordPress et aux biblioth\u00e8ques client HTTP de Python, les applications Python et WordPress peuvent faire \u00e9quipe et se parler. L&rsquo;avantage de l&rsquo;API REST est qu&rsquo;elle vous permet de faire fonctionner WordPress \u00e0 distance \u00e0 partir d&rsquo;une application Python, o\u00f9 le langage puissant de Python permet la cr\u00e9ation automatis\u00e9e de contenu qui suit la structure et la fr\u00e9quence souhait\u00e9es.<\/p>\n<p>DevKinsta rend la cr\u00e9ation et le d\u00e9veloppement d&rsquo;un site WordPress local rapide et facile. Il fournit un environnement local pour le d\u00e9veloppement de th\u00e8mes et d&rsquo;extensions WordPress et offre un mod\u00e8le de d\u00e9ploiement simplifi\u00e9 gr\u00e2ce \u00e0 son mod\u00e8le d&rsquo;installation autonome bas\u00e9 sur Docker.<\/p>\n<p>Quelle est votre exp\u00e9rience de travail avec Python et WordPress ?<\/p>\n<p><em>Lorsque vous serez pr\u00eat \u00e0 approfondir cette exp\u00e9rience, vous pourrez lire <a href=\"https:\/\/kinqsta.com\/fr\/blog\/api-rest-wordpress\/\" target=\"_blank\" rel=\"noopener noreferrer\">Le guide complet des bases de l&rsquo;API REST WordPress<\/a><\/em> pour explorer d&rsquo;autres possibilit\u00e9s.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>WordPress est devenu le syst\u00e8me de gestion de contenu (Content Manager System ou CMS) le plus utilis\u00e9, en grande partie gr\u00e2ce \u00e0 son interface de programmation &#8230;<\/p>\n","protected":false},"author":117,"featured_media":62375,"comment_status":"open","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"_kinsta_gated_content":false,"_kinsta_gated_content_redirect":"","footnotes":""},"tags":[492,47],"topic":[1028,964,1019,1003],"class_list":["post-62374","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","tag-python","tag-webdev","topic-developpement-wordpress","topic-devkinsta","topic-languages-developpement-web","topic-python"],"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>Perfectionnez vos comp\u00e9tences en Python en connectant votre application \u00e0 WordPress<\/title>\n<meta name=\"description\" content=\"D\u00e9couvrez comment les applications Python et WordPress peuvent faire \u00e9quipe et se parler \u00e0 l&#039;aide de l&#039;API REST de WordPress et des biblioth\u00e8ques clientes HTTP de Python.\" \/>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/kinqsta.com\/fr\/blog\/python-wordpress\/\" \/>\n<meta property=\"og:locale\" content=\"fr_FR\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Perfectionnez vos comp\u00e9tences en Python en connectant votre application \u00e0 WordPress\" \/>\n<meta property=\"og:description\" content=\"D\u00e9couvrez comment les applications Python et WordPress peuvent faire \u00e9quipe et se parler \u00e0 l&#039;aide de l&#039;API REST de WordPress et des biblioth\u00e8ques clientes HTTP de Python.\" \/>\n<meta property=\"og:url\" content=\"https:\/\/kinqsta.com\/fr\/blog\/python-wordpress\/\" \/>\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=\"2022-10-24T08:17:04+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2023-08-22T10:30:10+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/kinqsta.com\/fr\/wp-content\/uploads\/sites\/4\/2022\/10\/python-wordpress.png\" \/>\n\t<meta property=\"og:image:width\" content=\"1460\" \/>\n\t<meta property=\"og:image:height\" content=\"730\" \/>\n\t<meta property=\"og:image:type\" content=\"image\/png\" \/>\n<meta name=\"author\" content=\"Salman Ravoof\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:description\" content=\"D\u00e9couvrez comment les applications Python et WordPress peuvent faire \u00e9quipe et se parler \u00e0 l&#039;aide de l&#039;API REST de WordPress et des biblioth\u00e8ques clientes HTTP de Python.\" \/>\n<meta name=\"twitter:image\" content=\"https:\/\/kinqsta.com\/fr\/wp-content\/uploads\/sites\/4\/2022\/10\/python-wordpress.png\" \/>\n<meta name=\"twitter:creator\" content=\"@salmanravoof\" \/>\n<meta name=\"twitter:site\" content=\"@kinsta_fr\" \/>\n<meta name=\"twitter:label1\" content=\"\u00c9crit par\" \/>\n\t<meta name=\"twitter:data1\" content=\"Salman Ravoof\" \/>\n\t<meta name=\"twitter:label2\" content=\"Dur\u00e9e de lecture estim\u00e9e\" \/>\n\t<meta name=\"twitter:data2\" content=\"17 minutes\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\/\/kinqsta.com\/fr\/blog\/python-wordpress\/#article\",\"isPartOf\":{\"@id\":\"https:\/\/kinqsta.com\/fr\/blog\/python-wordpress\/\"},\"author\":{\"name\":\"Salman Ravoof\",\"@id\":\"https:\/\/kinqsta.com\/fr\/#\/schema\/person\/9cafd2eedd617e640eeea4cf3a5fd987\"},\"headline\":\"Perfectionnez vos comp\u00e9tences en Python en connectant votre application \u00e0 WordPress\",\"datePublished\":\"2022-10-24T08:17:04+00:00\",\"dateModified\":\"2023-08-22T10:30:10+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\/\/kinqsta.com\/fr\/blog\/python-wordpress\/\"},\"wordCount\":2493,\"commentCount\":0,\"publisher\":{\"@id\":\"https:\/\/kinqsta.com\/fr\/#organization\"},\"image\":{\"@id\":\"https:\/\/kinqsta.com\/fr\/blog\/python-wordpress\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/kinqsta.com\/fr\/wp-content\/uploads\/sites\/4\/2022\/10\/python-wordpress.png\",\"keywords\":[\"Python\",\"webdev\"],\"inLanguage\":\"fr-FR\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\/\/kinqsta.com\/fr\/blog\/python-wordpress\/#respond\"]}]},{\"@type\":\"WebPage\",\"@id\":\"https:\/\/kinqsta.com\/fr\/blog\/python-wordpress\/\",\"url\":\"https:\/\/kinqsta.com\/fr\/blog\/python-wordpress\/\",\"name\":\"Perfectionnez vos comp\u00e9tences en Python en connectant votre application \u00e0 WordPress\",\"isPartOf\":{\"@id\":\"https:\/\/kinqsta.com\/fr\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\/\/kinqsta.com\/fr\/blog\/python-wordpress\/#primaryimage\"},\"image\":{\"@id\":\"https:\/\/kinqsta.com\/fr\/blog\/python-wordpress\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/kinqsta.com\/fr\/wp-content\/uploads\/sites\/4\/2022\/10\/python-wordpress.png\",\"datePublished\":\"2022-10-24T08:17:04+00:00\",\"dateModified\":\"2023-08-22T10:30:10+00:00\",\"description\":\"D\u00e9couvrez comment les applications Python et WordPress peuvent faire \u00e9quipe et se parler \u00e0 l'aide de l'API REST de WordPress et des biblioth\u00e8ques clientes HTTP de Python.\",\"breadcrumb\":{\"@id\":\"https:\/\/kinqsta.com\/fr\/blog\/python-wordpress\/#breadcrumb\"},\"inLanguage\":\"fr-FR\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/kinqsta.com\/fr\/blog\/python-wordpress\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"fr-FR\",\"@id\":\"https:\/\/kinqsta.com\/fr\/blog\/python-wordpress\/#primaryimage\",\"url\":\"https:\/\/kinqsta.com\/fr\/wp-content\/uploads\/sites\/4\/2022\/10\/python-wordpress.png\",\"contentUrl\":\"https:\/\/kinqsta.com\/fr\/wp-content\/uploads\/sites\/4\/2022\/10\/python-wordpress.png\",\"width\":1460,\"height\":730},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/kinqsta.com\/fr\/blog\/python-wordpress\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\/\/kinqsta.com\/fr\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"D\u00e9veloppement WordPress\",\"item\":\"https:\/\/kinqsta.com\/fr\/sujets\/developpement-wordpress\/\"},{\"@type\":\"ListItem\",\"position\":3,\"name\":\"Perfectionnez vos comp\u00e9tences en Python en connectant votre application \u00e0 WordPress\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\/\/kinqsta.com\/fr\/#website\",\"url\":\"https:\/\/kinqsta.com\/fr\/\",\"name\":\"Kinsta\u00ae\",\"description\":\"Solutions d&#039;h\u00e9bergement premium, rapides et s\u00e9curis\u00e9es\",\"publisher\":{\"@id\":\"https:\/\/kinqsta.com\/fr\/#organization\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\/\/kinqsta.com\/fr\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"fr-FR\"},{\"@type\":\"Organization\",\"@id\":\"https:\/\/kinqsta.com\/fr\/#organization\",\"name\":\"Kinsta\",\"url\":\"https:\/\/kinqsta.com\/fr\/\",\"logo\":{\"@type\":\"ImageObject\",\"inLanguage\":\"fr-FR\",\"@id\":\"https:\/\/kinqsta.com\/fr\/#\/schema\/logo\/image\/\",\"url\":\"https:\/\/kinqsta.com\/fr\/wp-content\/uploads\/sites\/4\/2023\/12\/kinsta-logo.jpeg\",\"contentUrl\":\"https:\/\/kinqsta.com\/fr\/wp-content\/uploads\/sites\/4\/2023\/12\/kinsta-logo.jpeg\",\"width\":500,\"height\":500,\"caption\":\"Kinsta\"},\"image\":{\"@id\":\"https:\/\/kinqsta.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:\/\/kinqsta.com\/fr\/#\/schema\/person\/9cafd2eedd617e640eeea4cf3a5fd987\",\"name\":\"Salman Ravoof\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"fr-FR\",\"@id\":\"https:\/\/kinqsta.com\/fr\/#\/schema\/person\/image\/\",\"url\":\"https:\/\/secure.gravatar.com\/avatar\/0c5885f75cb78473fb7408e5e49ad190?s=96&d=mm&r=g\",\"contentUrl\":\"https:\/\/secure.gravatar.com\/avatar\/0c5885f75cb78473fb7408e5e49ad190?s=96&d=mm&r=g\",\"caption\":\"Salman Ravoof\"},\"description\":\"Salman Ravoof is a self-taught web developer, writer, creator, and a huge admirer of Free and Open Source Software (FOSS). Besides tech, he's excited by science, philosophy, photography, arts, cats, and food. Learn more about him on his website, and connect with Salman on Twitter.\",\"sameAs\":[\"https:\/\/salmanravoof.com\",\"https:\/\/www.linkedin.com\/in\/salman-ravoof-5a749133\/\",\"https:\/\/x.com\/salmanravoof\"],\"url\":\"https:\/\/kinqsta.com\/fr\/blog\/author\/salmanravoof\/\"}]}<\/script>\n<!-- \/ Yoast SEO Premium plugin. -->","yoast_head_json":{"title":"Perfectionnez vos comp\u00e9tences en Python en connectant votre application \u00e0 WordPress","description":"D\u00e9couvrez comment les applications Python et WordPress peuvent faire \u00e9quipe et se parler \u00e0 l'aide de l'API REST de WordPress et des biblioth\u00e8ques clientes HTTP de Python.","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:\/\/kinqsta.com\/fr\/blog\/python-wordpress\/","og_locale":"fr_FR","og_type":"article","og_title":"Perfectionnez vos comp\u00e9tences en Python en connectant votre application \u00e0 WordPress","og_description":"D\u00e9couvrez comment les applications Python et WordPress peuvent faire \u00e9quipe et se parler \u00e0 l'aide de l'API REST de WordPress et des biblioth\u00e8ques clientes HTTP de Python.","og_url":"https:\/\/kinqsta.com\/fr\/blog\/python-wordpress\/","og_site_name":"Kinsta\u00ae","article_publisher":"https:\/\/www.facebook.com\/kinstafrance\/","article_published_time":"2022-10-24T08:17:04+00:00","article_modified_time":"2023-08-22T10:30:10+00:00","og_image":[{"width":1460,"height":730,"url":"https:\/\/kinqsta.com\/fr\/wp-content\/uploads\/sites\/4\/2022\/10\/python-wordpress.png","type":"image\/png"}],"author":"Salman Ravoof","twitter_card":"summary_large_image","twitter_description":"D\u00e9couvrez comment les applications Python et WordPress peuvent faire \u00e9quipe et se parler \u00e0 l'aide de l'API REST de WordPress et des biblioth\u00e8ques clientes HTTP de Python.","twitter_image":"https:\/\/kinqsta.com\/fr\/wp-content\/uploads\/sites\/4\/2022\/10\/python-wordpress.png","twitter_creator":"@salmanravoof","twitter_site":"@kinsta_fr","twitter_misc":{"\u00c9crit par":"Salman Ravoof","Dur\u00e9e de lecture estim\u00e9e":"17 minutes"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/kinqsta.com\/fr\/blog\/python-wordpress\/#article","isPartOf":{"@id":"https:\/\/kinqsta.com\/fr\/blog\/python-wordpress\/"},"author":{"name":"Salman Ravoof","@id":"https:\/\/kinqsta.com\/fr\/#\/schema\/person\/9cafd2eedd617e640eeea4cf3a5fd987"},"headline":"Perfectionnez vos comp\u00e9tences en Python en connectant votre application \u00e0 WordPress","datePublished":"2022-10-24T08:17:04+00:00","dateModified":"2023-08-22T10:30:10+00:00","mainEntityOfPage":{"@id":"https:\/\/kinqsta.com\/fr\/blog\/python-wordpress\/"},"wordCount":2493,"commentCount":0,"publisher":{"@id":"https:\/\/kinqsta.com\/fr\/#organization"},"image":{"@id":"https:\/\/kinqsta.com\/fr\/blog\/python-wordpress\/#primaryimage"},"thumbnailUrl":"https:\/\/kinqsta.com\/fr\/wp-content\/uploads\/sites\/4\/2022\/10\/python-wordpress.png","keywords":["Python","webdev"],"inLanguage":"fr-FR","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/kinqsta.com\/fr\/blog\/python-wordpress\/#respond"]}]},{"@type":"WebPage","@id":"https:\/\/kinqsta.com\/fr\/blog\/python-wordpress\/","url":"https:\/\/kinqsta.com\/fr\/blog\/python-wordpress\/","name":"Perfectionnez vos comp\u00e9tences en Python en connectant votre application \u00e0 WordPress","isPartOf":{"@id":"https:\/\/kinqsta.com\/fr\/#website"},"primaryImageOfPage":{"@id":"https:\/\/kinqsta.com\/fr\/blog\/python-wordpress\/#primaryimage"},"image":{"@id":"https:\/\/kinqsta.com\/fr\/blog\/python-wordpress\/#primaryimage"},"thumbnailUrl":"https:\/\/kinqsta.com\/fr\/wp-content\/uploads\/sites\/4\/2022\/10\/python-wordpress.png","datePublished":"2022-10-24T08:17:04+00:00","dateModified":"2023-08-22T10:30:10+00:00","description":"D\u00e9couvrez comment les applications Python et WordPress peuvent faire \u00e9quipe et se parler \u00e0 l'aide de l'API REST de WordPress et des biblioth\u00e8ques clientes HTTP de Python.","breadcrumb":{"@id":"https:\/\/kinqsta.com\/fr\/blog\/python-wordpress\/#breadcrumb"},"inLanguage":"fr-FR","potentialAction":[{"@type":"ReadAction","target":["https:\/\/kinqsta.com\/fr\/blog\/python-wordpress\/"]}]},{"@type":"ImageObject","inLanguage":"fr-FR","@id":"https:\/\/kinqsta.com\/fr\/blog\/python-wordpress\/#primaryimage","url":"https:\/\/kinqsta.com\/fr\/wp-content\/uploads\/sites\/4\/2022\/10\/python-wordpress.png","contentUrl":"https:\/\/kinqsta.com\/fr\/wp-content\/uploads\/sites\/4\/2022\/10\/python-wordpress.png","width":1460,"height":730},{"@type":"BreadcrumbList","@id":"https:\/\/kinqsta.com\/fr\/blog\/python-wordpress\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/kinqsta.com\/fr\/"},{"@type":"ListItem","position":2,"name":"D\u00e9veloppement WordPress","item":"https:\/\/kinqsta.com\/fr\/sujets\/developpement-wordpress\/"},{"@type":"ListItem","position":3,"name":"Perfectionnez vos comp\u00e9tences en Python en connectant votre application \u00e0 WordPress"}]},{"@type":"WebSite","@id":"https:\/\/kinqsta.com\/fr\/#website","url":"https:\/\/kinqsta.com\/fr\/","name":"Kinsta\u00ae","description":"Solutions d&#039;h\u00e9bergement premium, rapides et s\u00e9curis\u00e9es","publisher":{"@id":"https:\/\/kinqsta.com\/fr\/#organization"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/kinqsta.com\/fr\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"fr-FR"},{"@type":"Organization","@id":"https:\/\/kinqsta.com\/fr\/#organization","name":"Kinsta","url":"https:\/\/kinqsta.com\/fr\/","logo":{"@type":"ImageObject","inLanguage":"fr-FR","@id":"https:\/\/kinqsta.com\/fr\/#\/schema\/logo\/image\/","url":"https:\/\/kinqsta.com\/fr\/wp-content\/uploads\/sites\/4\/2023\/12\/kinsta-logo.jpeg","contentUrl":"https:\/\/kinqsta.com\/fr\/wp-content\/uploads\/sites\/4\/2023\/12\/kinsta-logo.jpeg","width":500,"height":500,"caption":"Kinsta"},"image":{"@id":"https:\/\/kinqsta.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:\/\/kinqsta.com\/fr\/#\/schema\/person\/9cafd2eedd617e640eeea4cf3a5fd987","name":"Salman Ravoof","image":{"@type":"ImageObject","inLanguage":"fr-FR","@id":"https:\/\/kinqsta.com\/fr\/#\/schema\/person\/image\/","url":"https:\/\/secure.gravatar.com\/avatar\/0c5885f75cb78473fb7408e5e49ad190?s=96&d=mm&r=g","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/0c5885f75cb78473fb7408e5e49ad190?s=96&d=mm&r=g","caption":"Salman Ravoof"},"description":"Salman Ravoof is a self-taught web developer, writer, creator, and a huge admirer of Free and Open Source Software (FOSS). Besides tech, he's excited by science, philosophy, photography, arts, cats, and food. Learn more about him on his website, and connect with Salman on Twitter.","sameAs":["https:\/\/salmanravoof.com","https:\/\/www.linkedin.com\/in\/salman-ravoof-5a749133\/","https:\/\/x.com\/salmanravoof"],"url":"https:\/\/kinqsta.com\/fr\/blog\/author\/salmanravoof\/"}]}},"acf":[],"_links":{"self":[{"href":"https:\/\/kinqsta.com\/fr\/wp-json\/wp\/v2\/posts\/62374","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/kinqsta.com\/fr\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/kinqsta.com\/fr\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/kinqsta.com\/fr\/wp-json\/wp\/v2\/users\/117"}],"replies":[{"embeddable":true,"href":"https:\/\/kinqsta.com\/fr\/wp-json\/wp\/v2\/comments?post=62374"}],"version-history":[{"count":11,"href":"https:\/\/kinqsta.com\/fr\/wp-json\/wp\/v2\/posts\/62374\/revisions"}],"predecessor-version":[{"id":62632,"href":"https:\/\/kinqsta.com\/fr\/wp-json\/wp\/v2\/posts\/62374\/revisions\/62632"}],"alternate":[{"embeddable":true,"hreflang":"en","title":"English","href":"https:\/\/kinqsta.com\/fr\/wp-json\/kinsta\/v1\/posts\/62374\/translations\/en"},{"embeddable":true,"hreflang":"it","title":"Italian","href":"https:\/\/kinqsta.com\/fr\/wp-json\/kinsta\/v1\/posts\/62374\/translations\/it"},{"embeddable":true,"hreflang":"pt","title":"Portuguese","href":"https:\/\/kinqsta.com\/fr\/wp-json\/kinsta\/v1\/posts\/62374\/translations\/pt"},{"embeddable":true,"hreflang":"fr","title":"French","href":"https:\/\/kinqsta.com\/fr\/wp-json\/kinsta\/v1\/posts\/62374\/translations\/fr"},{"embeddable":true,"hreflang":"de","title":"German","href":"https:\/\/kinqsta.com\/fr\/wp-json\/kinsta\/v1\/posts\/62374\/translations\/de"},{"embeddable":true,"hreflang":"ja","title":"Japanese","href":"https:\/\/kinqsta.com\/fr\/wp-json\/kinsta\/v1\/posts\/62374\/translations\/jp"},{"embeddable":true,"hreflang":"nl","title":"Dutch","href":"https:\/\/kinqsta.com\/fr\/wp-json\/kinsta\/v1\/posts\/62374\/translations\/nl"},{"embeddable":true,"hreflang":"es","title":"Spanish","href":"https:\/\/kinqsta.com\/fr\/wp-json\/kinsta\/v1\/posts\/62374\/translations\/es"},{"embeddable":true,"hreflang":"sv","title":"Swedish","href":"https:\/\/kinqsta.com\/fr\/wp-json\/kinsta\/v1\/posts\/62374\/translations\/se"},{"embeddable":true,"hreflang":"da","title":"Danish","href":"https:\/\/kinqsta.com\/fr\/wp-json\/kinsta\/v1\/posts\/62374\/translations\/dk"},{"href":"https:\/\/kinqsta.com\/fr\/wp-json\/kinsta\/v1\/posts\/62374\/tree"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/kinqsta.com\/fr\/wp-json\/wp\/v2\/media\/62375"}],"wp:attachment":[{"href":"https:\/\/kinqsta.com\/fr\/wp-json\/wp\/v2\/media?parent=62374"}],"wp:term":[{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/kinqsta.com\/fr\/wp-json\/wp\/v2\/tags?post=62374"},{"taxonomy":"topic","embeddable":true,"href":"https:\/\/kinqsta.com\/fr\/wp-json\/wp\/v2\/topic?post=62374"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}