{"id":46964,"date":"2022-10-24T10:17:40","date_gmt":"2022-10-24T08:17:40","guid":{"rendered":"https:\/\/kinsta.com\/nl\/?p=46964&#038;preview=true&#038;preview_id=46964"},"modified":"2023-05-22T12:13:59","modified_gmt":"2023-05-22T10:13:59","slug":"python-wordpress","status":"publish","type":"post","link":"https:\/\/kinsta.com\/nl\/blog\/python-wordpress\/","title":{"rendered":"Verbeter je Python skills door je app met WordPress te verbinden"},"content":{"rendered":"<p>WordPress is in de loop der jaren het meest gebruikte content management systeem (CMS) geworden, niet in de laatste plaats dankzij zijn application programming interface (API). Met de <a href=\"https:\/\/kinsta.com\/nl\/blog\/rest-api-wordpress\/\" target=\"_blank\" rel=\"noopener noreferrer\">WordPress REST API<\/a> kan WordPress &#8220;praten&#8221; met andere applicaties die in verschillende talen zijn geschreven &#8211; waaronder Python.<\/p>\n<p><a href=\"https:\/\/kinsta.com\/nl\/blog\/python-tutorials\/#what-is-python\" target=\"_blank\" rel=\"noopener noreferrer\">Python<\/a> is een uitbreidbare programmeertaal met diverse applicaties en een menselijk leesbare syntaxis, waardoor het een krachtige tool is voor het op afstand beheren van WordPress content.<\/p>\n<p>Hier zijn enkele WordPress REST API use cases voor je apps en hoe je Python kunt gebruiken om ze te ondersteunen:<\/p>\n<ul>\n<li>Gebruik voorgedefinieerde templates\u00a0om je app in staat te stellen ruwe gegevens snel om te zetten in opgemaakte berichten met uitleg.<\/li>\n<li>Bouw een back-office applicatie op Django en Python die gelimiteerde aanbiedingen aan je klanten toont telkens als er een object-specifieke korting of uitverkoopevent plaatsvindt.<\/li>\n<li>Python scripts integreren om in je WordPress site te draaien.<\/li>\n<\/ul>\n<p>Deze tutorial helpt je om een eenvoudige Python console-applicatie te maken die communiceert met en bewerkingen uitvoert op de WordPress REST API. De volledige projectcode is ook beschikbaar.<\/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>WordPress installeren en configureren<\/h2>\n<p>Laten we eerst een WordPress website lokaal installeren en draaien op je ontwikkelmachine. Dit is een uitstekende manier om met WordPress te beginnen, omdat je geen account hoeft aan te maken of een domeinnaam hoeft te kopen voor webhosting.<\/p>\n<p>Voordat je WordPress lokaal installeert, moeten er enkele componenten op je computer draaien, waaronder de Apache webserver, een lokale database en de PHP taal waarin WordPress is geschreven.<\/p>\n<p>Gelukkig kunnen we <a href=\"https:\/\/kinsta.com\/nl\/devkinsta\/\" target=\"_blank\" rel=\"noopener noreferrer\">DevKinsta<\/a> gebruiken, een gratis lokaal WordPress ontwikkelingspakket dat beschikbaar is voor alle grote OS&#8217;en (je hoeft geen klant van Kinsta te zijn om het te gebruiken).<\/p>\n<p>DevKinsta is beschikbaar voor Windows, Mac en Linux, en installeert WordPress plus al zijn dependencies op je lokale machine.<\/p>\n<p>Voordat je DevKinsta installeert, moet je Docker lokaal hebben draaien, dus download en <a href=\"https:\/\/docs.docker.com\/engine\/install\/\" target=\"_blank\" rel=\"noopener noreferrer\">installeer de Docker Engine<\/a> als je dat nog niet hebt gedaan.<\/p>\n<p>Na de installatie van Docker Desktop kun je <a href=\"https:\/\/kinsta.com\/nl\/devkinsta\/download\/\">automatisch het pakket\u00a0downloaden<\/a> dat bij jouw OS past.<\/p>\n<figure style=\"text-align: center\">\n<p><figure style=\"width: 826px\" class=\"wp-caption alignnone\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/kinsta.com\/wp-content\/uploads\/2022\/10\/DevKinsta-downloading-screen.png\" alt=\"Screenshot van de downloadpagina van DevKinsta.\" width=\"826\" height=\"570\"><figcaption class=\"wp-caption-text\">DevKinsta installatiepagina.<\/figcaption><\/figure><\/figure>\n<p>Als je het DevKinsta installatieprogramma uitvoert, begint Docker onmiddellijk te initialiseren:<\/p>\n<figure style=\"text-align: center\">\n<p><figure style=\"width: 546px\" class=\"wp-caption alignnone\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/kinsta.com\/wp-content\/uploads\/2022\/10\/DevKinsta-starting-Docker-screen.png\" alt=\"Het scherm dat DevKinsta Docker start.\" width=\"546\" height=\"368\"><figcaption class=\"wp-caption-text\">DevKinsta start Docker lokaal.<\/figcaption><\/figure><\/figure>\n<p>Kies vervolgens <strong>New WordPress site<\/strong> in het menu <strong>Create new 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:\/\/kinsta.com\/wp-content\/uploads\/2022\/10\/DevKinsta-create-new-WordPress-site-screen.png\" alt=\"DevKinsta's Create New WordPress Site scherm.\" width=\"905\" height=\"521\"><figcaption class=\"wp-caption-text\">DevKinsta&#8217;s Create New Site menu.<\/figcaption><\/figure><\/figure>\n<p>Nu vraagt het DevKinsta installatieprogramma je om de gegevens voor het WordPress adminaccount aan te maken:<\/p>\n<figure style=\"text-align: center\">\n<p><figure style=\"width: 501px\" class=\"wp-caption alignnone\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/kinsta.com\/wp-content\/uploads\/2022\/10\/DevKinsta-new-WordPress-site-creation-screen.png\" alt=\"Het scherm voor het maken van nieuwe WordPress site van DevKinsta.\" width=\"501\" height=\"463\"><figcaption class=\"wp-caption-text\">DevKinsta toont het formulier Nieuwe WordPress site.<\/figcaption><\/figure><\/figure>\n<p>Eenmaal ge\u00efnstalleerd is DevKinsta een zelfstandige applicatie. Nu heb je toegang tot zowel de WordPress site (via de <strong>Open Site<\/strong> knop) als het WordPress admin dashboard (<strong>WP Admin<\/strong> knop).<\/p>\n<figure style=\"text-align: center\">\n<p><figure style=\"width: 969px\" class=\"wp-caption alignnone\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/kinsta.com\/wp-content\/uploads\/2022\/10\/DevKinsta-WordPress-site-info-screen.png\" alt=\"DevKinsta's WordPress site infoscherm.\" width=\"969\" height=\"550\"><figcaption class=\"wp-caption-text\">Het Site info paneel van DevKinsta.<\/figcaption><\/figure><\/figure>\n<p>Vervolgens moet je <a href=\"https:\/\/kinsta.com\/nl\/blog\/hoe-werkt-ssl\/\" target=\"_blank\" rel=\"noopener noreferrer\">SSL en HTTPS<\/a> inschakelen voor je website. Dit verbetert de veiligheid van je website door middel van een SSL certificaat.<\/p>\n<figure style=\"text-align: center\">\n<p><figure style=\"width: 969px\" class=\"wp-caption alignnone\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/kinsta.com\/wp-content\/uploads\/2022\/10\/DevKinsta-SSL-and-HTTPS-option-screen.png\" alt=\"DevKinsta's SSL en HTTPS optie inschakelen.\" width=\"969\" height=\"550\"><figcaption class=\"wp-caption-text\">DevKinsta&#8217;s &#8220;SSL en HTTPS&#8221; optie.<\/figcaption><\/figure><\/figure>\n<p>Ga nu naar de DevKinsta app en klik op de knop<strong> Open site<\/strong>. Een nieuw browsertabblad toont de startpagina van je WordPress site:<\/p>\n<figure style=\"text-align: center\">\n<p><figure style=\"width: 827px\" class=\"wp-caption alignnone\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/kinsta.com\/wp-content\/uploads\/2022\/10\/DevKinsta-new-local-site-Hello-World.png\" alt=\"De startpagina van je lokale WordPress site.\" width=\"827\" height=\"612\"><figcaption class=\"wp-caption-text\">WordPress startpagina.<\/figcaption><\/figure><\/figure>\n<p>Dit is je WordPress blog, waar je kunt beginnen met schrijven. Maar om Python in staat te stellen de WordPress REST API te benaderen en te gebruiken, moeten we eerst de WordPress Admin configureren.<\/p>\n<p>Klik nu op de knop <strong>WP Admin<\/strong> op de DevKinsta app en geef vervolgens je gebruiker en wachtwoord op om toegang te krijgen tot het <strong>WordPress Dashboard<\/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:\/\/kinsta.com\/wp-content\/uploads\/2022\/10\/WordPress-admin-dashboard-login-screen.png\" alt=\"WordPress admindashboard inlogscherm.\" width=\"357\" height=\"385\"><figcaption class=\"wp-caption-text\">WordPress inlogformulier.<\/figcaption><\/figure><\/figure>\n<p>Zodra je bent ingelogd, zie je <strong>WordPress Dashboard<\/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:\/\/kinsta.com\/wp-content\/uploads\/2022\/10\/welcome-to-WordPress-admin-screen.png\" alt=\"Welkom bij het WordPress adminscherm.\" width=\"989\" height=\"612\"><figcaption class=\"wp-caption-text\">WordPress Dashboard pagina.<\/figcaption><\/figure><\/figure>\n<p>WordPress gebruikt cookie-authenticatie als standaardmethode. Maar als je het via de REST API wilt bedienen, moet je je authenticeren met een techniek die toegang verleent tot de WordPress REST API.<\/p>\n<p>Hiervoor gebruik je <a href=\"https:\/\/make.wordpress.org\/core\/2020\/11\/05\/application-passwords-integration-guide\/\" target=\"_blank\" rel=\"noopener noreferrer\">Application Passwords<\/a>. Dit zijn 24-karakter lange strings die WordPress genereert en associeert met een gebruikersprofiel dat toestemming heeft om je website te beheren.<\/p>\n<p>Om Application Passwords te gebruiken, klik je op het <strong>Plugin<\/strong> menu op het Dashboard en zoek je vervolgens naar de plugin met dezelfde naam. Installeer en activeer dan de Application Passwords Plugin:<\/p>\n<figure style=\"text-align: center\">\n<p><figure style=\"width: 752px\" class=\"wp-caption alignnone\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/kinsta.com\/wp-content\/uploads\/2022\/10\/WordPress-add-plugins-Application-Passwords.png\" alt=\"Wordpress Application Passwords plugin installeren en activeren.\" width=\"752\" height=\"445\"><figcaption class=\"wp-caption-text\">Application Passwords plugin voor WordPress.<\/figcaption><\/figure><\/figure>\n<p>Om te beginnen met het aanmaken van je applicatiewachtwoord, begin je met het uitbreiden van het menu <strong>Users<\/strong>\u00a0en klik je op <strong>All Users<\/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:\/\/kinsta.com\/wp-content\/uploads\/2022\/10\/expanded-Users-WordPress-menu.png\" alt=\"Uitgeklapt Users WordPress menu.\" width=\"272\" height=\"205\"><figcaption class=\"wp-caption-text\">Uitgeklapt Users menu.<\/figcaption><\/figure><\/figure>\n<p>Klik nu op <strong>Edit<\/strong>\u00a0onder je admin gebruikersnaam:<\/p>\n<figure style=\"text-align: center\">\n<p><figure style=\"width: 1015px\" class=\"wp-caption alignnone\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/kinsta.com\/wp-content\/uploads\/2022\/10\/edit-screen-WordPress-user.png\" alt=\"Klik op de knop \"Edit\" onder je WordPress gebruiker in het menu Users.\" width=\"1015\" height=\"471\"><figcaption class=\"wp-caption-text\">WP-Admin WordPress interface.<\/figcaption><\/figure><\/figure>\n<p>Scroll naar beneden op de pagina <strong>Edit User<\/strong> en vind de sectie <strong>Application Passwords<\/strong>. Geef hier een naam op voor het Application Password, dat je later zult gebruiken om je Python app verzoeken te authenticeren en de REST API te consumeren:<\/p>\n<figure style=\"text-align: center\">\n<p><figure style=\"width: 761px\" class=\"wp-caption alignnone\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/kinsta.com\/wp-content\/uploads\/2022\/10\/Application-Passwords-plugin-dashboard.png\" alt=\"Application Passwords plugin dashboard.\" width=\"761\" height=\"362\"><figcaption class=\"wp-caption-text\">Application Passwords pagina.<\/figcaption><\/figure><\/figure>\n<p>Klik op <strong>Add New Application Password<\/strong> zodat WordPress een willekeurig wachtwoord van 24 tekens voor je kan genereren:<\/p>\n<figure style=\"text-align: center\">\n<p><figure style=\"width: 771px\" class=\"wp-caption alignnone\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/kinsta.com\/wp-content\/uploads\/2022\/10\/Application-Passwords-new-password-page.png\" alt=\"Het nieuwe wachtwoord gegenereerd door de Application Passwords plugin.\" width=\"771\" height=\"110\"><figcaption class=\"wp-caption-text\">New Application Password pagina.<\/figcaption><\/figure><\/figure>\n<p>Kopieer vervolgens dit wachtwoord en bewaar het op een veilige plaats om later te gebruiken. Onthoud dat je dit wachtwoord niet meer kunt opvragen zodra je deze pagina sluit.<\/p>\n<p>Tot slot moet je permalinks configureren. Met WordPress kun je een aangepaste URL structuur maken voor je permalinks en archieven. Laten we het zo veranderen dat een WordPress bericht met de titel, bijvoorbeeld, &#8220;Your First WordPress Website&#8221; toegankelijk is via de intu\u00eftieve URL https:\/\/your-website.local:port\/your-first-wordpress-website\/. Deze aanpak brengt verschillende voordelen met zich mee, waaronder verbeterde bruikbaarheid en esthetiek.<\/p>\n<p>Om permalinks in te stellen, vouw je de sectie <strong>Settings<\/strong>\u00a0uit en klik je op het menu <strong>Permalinks<\/strong>. Verander hier de <strong>Common Settings<\/strong> in <strong>Post name<\/strong>:<\/p>\n<figure style=\"text-align: center\"><img loading=\"lazy\" decoding=\"async\" class=\"alignnone\" src=\"https:\/\/kinsta.com\/wp-content\/uploads\/2022\/10\/WordPress-change-Permalink-settings-post_name.png\" alt=\"WordPress permalinkinstellingen wijzigen.\" width=\"996\" height=\"592\"><\/figure>\n<p>Het instellen van de permalink structuur met behulp van de <strong>Post name<\/strong> structuur is ook nodig omdat we dan later in onze Python code berichten kunnen ophalen met behulp van het JSON format. Anders wordt er een JSON decoderingsfout gegooid.<\/p>\n<h2>Zo bestuur je WordPress vanuit Python<\/h2>\n<p>WordPress is geschreven in PHP, maar het heeft een REST API waarmee andere programmeertalen, sites en apps de content ervan kunnen consumeren. Door de content van WordPress bloot te stellen in een REST architectuur is deze beschikbaar in JSON format. Daarom kunnen andere diensten integreren met WordPress en create, read, update en delete (CRUD) operaties uitvoeren zonder dat een lokale WordPress installatie nodig is.<\/p>\n<p>Vervolgens bouw je een eenvoudige Python app om te zien hoe je de WordPress REST API kunt gebruiken om berichten te maken, op te halen, bij te werken en te verwijderen.<\/p>\n<p>Maak een nieuwe map voor je nieuwe eenvoudige Python project en noem het iets als <code>PythonWordPress<\/code>:<\/p>\n<pre><code class=\"language-bash\">..\/PythonWordPress<\/code><\/pre>\n<p>Nu ga je een virtuele omgeving maken voor je project, zodat het een onafhankelijke set ge\u00efnstalleerde Python pakketten kan onderhouden, waardoor ze worden ge\u00efsoleerd van je systeemmappen en versieconflicten worden vermeden. Cre\u00eber een virtuele omgeving door het commando <code>venv<\/code> uit te voeren:<\/p>\n<pre><code class=\"language-bash\">python3 -m venv .venv<\/code><\/pre>\n<p>Voer nu een commando uit om de <strong>.venv<\/strong> virtuele omgeving te activeren. Dit commando verschilt per OS:<\/p>\n<ul>\n<li>Windows: <code>.venvScriptsactivate<\/code><\/li>\n<li>Mac\/Linux: <code>.venv\/bin\/activate<\/code><\/li>\n<\/ul>\n<p>Sla vervolgens de configuratie met betrekking tot je WordPress account op. Om de appconfiguratie te scheiden van je Python code, maak je een <strong>.env<\/strong> bestand aan in je projectmap, en voeg je deze omgevingsvariabelen toe aan het bestand:<\/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>Gelukkig is het uitlezen van bovenstaande gegevens uit een Python app eenvoudig. Je kunt het <strong>Python-dotenv<\/strong> pakket installeren, zodat je applicatie de configuratie uit het <strong>.env<\/strong> bestand kan lezen:<\/p>\n<pre><code class=\"language-bash\">pip install python-dotenv<\/code><\/pre>\n<p>Installeer vervolgens <strong>aiohttp<\/strong>, een asynchrone HTTP-client\/server voor Python:<\/p>\n<pre><code class=\"language-bash\">pip install aiohttp<\/code><\/pre>\n<p>Voeg nu een bestand toe met de naam <strong>app.py<\/strong> met de volgende code:<\/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>De bovenstaande code toont een consolemenu en vraagt je een getal in te voeren om een optie te kiezen. Vervolgens ga je dit project uitbreiden en de code implementeren waarmee je alle berichten kunt opsommen en een specifiek bericht kunt ophalen met behulp van zijn post-id.<\/p>\n<h2>Berichten ophalen in code<\/h2>\n<p>Voor interactie met WordPress REST API moet je een nieuw Python bestand maken. Maak een bestand met de naam <strong>wordpress_api_helper.py<\/strong> met de volgende content:<\/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>Let op het gebruik van de <strong>aiohttp<\/strong> library hierboven. Moderne talen bieden syntaxis en tools die asynchroon programmeren mogelijk maken. Dit verhoogt de responsiviteit van de applicatie door het programma taken te laten uitvoeren naast operaties zoals <a href=\"https:\/\/kinsta.com\/blog\/what-is-an-http-request\/\" target=\"_blank\" rel=\"noopener noreferrer\">webverzoeken<\/a>, databaseoperaties en schijf-I\/O. Python biedt <a href=\"https:\/\/docs.python.org\/3\/library\/asyncio.html\" target=\"_blank\" rel=\"noopener noreferrer\">asyncio<\/a> als basis voor zijn asynchroon programmeerframework, en de <a href=\"https:\/\/docs.aiohttp.org\/en\/stable\/\" target=\"_blank\" rel=\"noopener noreferrer\">aiohttp<\/a> library is gebouwd bovenop<strong> asyncio<\/strong> om asynchrone toegang te bieden tot HTTP Client\/Server operaties die in Python worden uitgevoerd.<\/p>\n<p>De bovenstaande <code>ClientSession<\/code> functie draait asynchroon en geeft een <code>session<\/code> object terug, dat ons programma gebruikt om een HTTP GET operatie uit te voeren tegen het <code>\/wp-json\/wp\/v2\/posts<\/code> eindpunt. Het enige verschil tussen een verzoek om alle berichten op te halen en een verzoek om een specifiek bericht is dat dit laatste verzoek een <code>post id<\/code> parameter doorgeeft in de URL route: <code>\/wp-json\/wp\/v2\/posts\/{id}<\/code>.<\/p>\n<p>Open nu het <strong>app.py<\/strong> bestand en voeg het <code>import<\/code> statement toe:<\/p>\n<pre><code class=\"language-python\">from wordpress_api_helper import get_all_posts, get_post<\/code><\/pre>\n<p>Wijzig vervolgens de functie <code>main<\/code> om de functies <code>get_all_posts<\/code> en <code>get_post<\/code> aan te roepen:<\/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>Voer dan de app uit:<\/p>\n<pre><code class=\"language-bash\">python app.py<\/code><\/pre>\n<p>Je ziet dan het applicatiemenu:<\/p>\n<figure style=\"text-align: center\">\n<p><figure style=\"width: 804px\" class=\"wp-caption alignnone\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/kinsta.com\/wp-content\/uploads\/2022\/10\/Python-app-WordPress-start.png\" alt=\"De Python app starten die is verbonden met WordPress.\" width=\"804\" height=\"114\"><figcaption class=\"wp-caption-text\">Python applicatiemenu.<\/figcaption><\/figure><\/figure>\n<p>Probeer nu optie 1 om de lijst met berichten te bekijken die je Python app ophaalt, en optie 2 om een bericht te selecteren:<\/p>\n<figure style=\"text-align: center\">\n<p><figure style=\"width: 670px\" class=\"wp-caption alignnone\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/kinsta.com\/wp-content\/uploads\/2022\/10\/list-and-select-posts-Python-app.png\" alt=\"Probeer optie 1 om de lijst met berichten te bekijken die je Python app ophaalt, en optie 2 om een bericht te selecteren.\" width=\"670\" height=\"624\"><figcaption class=\"wp-caption-text\">Python app die de berichtenlijst toont en een enkele door de gebruiker geselecteerde bericht.<\/figcaption><\/figure><\/figure>\n<h2>Berichten aanmaken in code<\/h2>\n<p>Om een WordPress bericht in Python aan te maken, begin je met het openen van het <strong>wordpress_api_helper.py<\/strong> bestand en voeg je de <code>create_post<\/code> functie toe:<\/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>Deze code roept de <code>post<\/code> functie aan in het <code>session<\/code> object en geeft de <code>auth<\/code> parameter door naast de REST API endpoint URL. Het <code>auth<\/code> object bevat nu de WordPress gebruiker en het wachtwoord dat je hebt gemaakt met Application Passwords. Open nu het bestand <strong>app.py<\/strong> en voeg code toe om <code>create_post<\/code> en het menu te importeren:<\/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>Voeg dan een derde menu optie toe:<\/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>Voer dan de app uit en probeer optie 3, het doorgeven van een titel en content\u00a0om een nieuw bericht in WordPress te maken:<\/p>\n<figure style=\"text-align: center\">\n<p><figure style=\"width: 671px\" class=\"wp-caption alignnone\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/kinsta.com\/wp-content\/uploads\/2022\/10\/create-a-WordPress-post-Python-app.png\" alt=\"Een WordPress bericht maken met Python.\" width=\"671\" height=\"335\"><figcaption class=\"wp-caption-text\">Python app die nieuw gemaakte WordPress bericht weergeeft.<\/figcaption><\/figure><\/figure>\n<p>Door opnieuw optie 1 te kiezen krijg je het id en de titel van het nieuw toegevoegde bericht terug:<\/p>\n<figure style=\"text-align: center\">\n<p><figure style=\"width: 672px\" class=\"wp-caption alignnone\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/kinsta.com\/wp-content\/uploads\/2022\/10\/return-id-newly-added-post.png\" alt=\"De id en de titel van het nieuw toegevoegde bericht retourneren.\" width=\"672\" height=\"333\"><figcaption class=\"wp-caption-text\">Python app die de titel en het id van het nieuwe bericht retourneert.<\/figcaption><\/figure><\/figure>\n<p>Je kunt ook je WordPress website openen om het nieuwe bericht te bekijken:<\/p>\n<figure style=\"text-align: center\">\n<p><figure style=\"width: 754px\" class=\"wp-caption alignnone\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/kinsta.com\/wp-content\/uploads\/2022\/10\/Kinsta-Compute-Optimized-C2-post.png\" alt=\"Het nieuw gemaakte bericht in de browser.\" width=\"754\" height=\"600\"><figcaption class=\"wp-caption-text\">Browserafbeelding van het nieuwe WordPress bericht.<\/figcaption><\/figure><\/figure>\n<h2>Berichten bijwerken in code<\/h2>\n<p>Open het bestand <strong>wordpress_api_helper.py<\/strong> en voeg de functie <code>update_post<\/code> toe:<\/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>Open dan het <strong>app.py<\/strong> bestand en voeg code toe om <code>update_post<\/code> en het menu te importeren:<\/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>Voeg dan een vierde menu-optie toe:<\/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>Voer dan de app uit en probeer optie 4, waarbij je een post id, titel en content doorgeeft om een bestaand bericht bij te werken.<\/p>\n<figure style=\"text-align: center\">\n<p><figure style=\"width: 670px\" class=\"wp-caption alignnone\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/kinsta.com\/wp-content\/uploads\/2022\/10\/updating-WordPress-post-Python-app.png\" alt=\"Een WordPress bericht bijwerken.\" width=\"670\" height=\"338\"><figcaption class=\"wp-caption-text\">Python app die het bijgewerkte menu toont.<\/figcaption><\/figure><\/figure>\n<p>Door optie 2 te kiezen en het bijgewerkte post-id door te geven, krijg je de details van het nieuw toegevoegde bericht:<\/p>\n<figure style=\"text-align: center\">\n<p><figure style=\"width: 673px\" class=\"wp-caption alignnone\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/kinsta.com\/wp-content\/uploads\/2022\/10\/return-updated-post-details.png\" alt=\"De details van het onlangs bijgewerkte bericht retourneren.\" width=\"673\" height=\"318\"><figcaption class=\"wp-caption-text\">Python app die het bijgewerkte bericht toont.<\/figcaption><\/figure><\/figure>\n<h2>Berichten verwijderen in code<\/h2>\n<p>Je kunt de bericht-id doorgeven aan de REST API om een bericht te verwijderen.<\/p>\n<p>Open het bestand <strong>wordpress_api_helper.py<\/strong> en voeg de functie <code>delete_post<\/code> toe:<\/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>Open nu het <strong>app.py<\/strong> bestand en voeg code toe om <code>delete_post<\/code> en het menu te importeren:<\/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>Voeg dan een vijfde menu-optie toe:<\/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>Voer nu de app uit en probeer optie 5, waarbij je een id doorgeeft om het bestaande bericht in WordPress te verwijderen:<\/p>\n<figure style=\"text-align: center\">\n<p><figure style=\"width: 651px\" class=\"wp-caption alignnone\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/kinsta.com\/wp-content\/uploads\/2022\/10\/deleting-WordPress-Post-Python-app.png\" alt=\"Een WordPress bericht verwijderen met de Python app.\" width=\"651\" height=\"120\"><figcaption class=\"wp-caption-text\">Python app die het verwijderen van het geselecteerde bericht laat zien.<\/figcaption><\/figure><\/figure>\n<p>Opmerking: Het verwijderde bericht kan nog steeds verschijnen als je de optie <strong>List Posts<\/strong>\u00a0uitvoert:<\/p>\n<figure style=\"text-align: center\">\n<p><figure style=\"width: 671px\" class=\"wp-caption alignnone\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/kinsta.com\/wp-content\/uploads\/2022\/10\/Python-app-listing-posts.png\" alt=\"Python app die berichten toont.\" width=\"671\" height=\"288\"><figcaption class=\"wp-caption-text\">Python app die oorspronkelijke berichtenlijst toont.<\/figcaption><\/figure><\/figure>\n<p>Om te bevestigen dat je het bericht hebt verwijderd, wacht je een paar seconden en probeer je de optie <strong>List Posts<\/strong> opnieuw. En dat is het!<\/p>\n<h2>Samenvatting<\/h2>\n<p>Dankzij de WordPress REST API en de HTTP client libraries van Python kunnen Python apps en WordPress samenwerken en met elkaar praten. Het voordeel van de REST API is dat je WordPress op afstand kunt bedienen vanuit een Python app, waarbij de krachtige taal van Python het mogelijk maakt om geautomatiseerd content te maken die de door jou gewenste structuur en frequentie volgt.<\/p>\n<p>DevKinsta maakt het maken en ontwikkelen van een lokale WordPress site snel en eenvoudig. Het biedt een lokale omgeving voor het ontwikkelen van WordPress thema&#8217;s en plugins en biedt een vereenvoudigd deploymentmodel met dank aan zijn op Docker gebaseerde, op zichzelf staande installatiemodel.<\/p>\n<p>Wat is jouw ervaring met het werken met Python en WordPress?<\/p>\n<p><em>Als je klaar bent om die ervaring uit te breiden, kun je <a href=\"https:\/\/kinsta.com\/nl\/blog\/rest-api-wordpress\/\" target=\"_blank\" rel=\"noopener noreferrer\">The Complete Guide to WordPress REST API Basics<\/a> lezen om andere mogelijkheden te verkennen.<\/em><\/p>\n","protected":false},"excerpt":{"rendered":"<p>WordPress is in de loop der jaren het meest gebruikte content management systeem (CMS) geworden, niet in de laatste plaats dankzij zijn application programming interface (API). &#8230;<\/p>\n","protected":false},"author":117,"featured_media":47203,"comment_status":"open","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"_kinsta_gated_content":false,"_kinsta_gated_content_redirect":"","footnotes":""},"tags":[435,29],"topic":[834,870,883,892],"class_list":["post-46964","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","tag-python","tag-webdev","topic-devkinsta","topic-python","topic-webdevelopment-talen","topic-wordpress-ontwikkeling"],"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>Verbeter je Python skills door je app met WordPress te verbinden<\/title>\n<meta name=\"description\" content=\"Ontdek hoe Python apps en WordPress kunnen samenwerken en met elkaar kunnen praten met behulp van WordPress REST API en de HTTP client libraries van 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:\/\/kinsta.com\/nl\/blog\/python-wordpress\/\" \/>\n<meta property=\"og:locale\" content=\"nl_NL\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Verbeter je Python skills door je app met WordPress te verbinden\" \/>\n<meta property=\"og:description\" content=\"Ontdek hoe Python apps en WordPress kunnen samenwerken en met elkaar kunnen praten met behulp van WordPress REST API en de HTTP client libraries van Python.\" \/>\n<meta property=\"og:url\" content=\"https:\/\/kinsta.com\/nl\/blog\/python-wordpress\/\" \/>\n<meta property=\"og:site_name\" content=\"Kinsta\u00ae\" \/>\n<meta property=\"article:publisher\" content=\"https:\/\/www.facebook.com\/Kinsta-Nederland-476213452787823\/\" \/>\n<meta property=\"article:published_time\" content=\"2022-10-24T08:17:40+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2023-05-22T10:13:59+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/kinsta.com\/nl\/wp-content\/uploads\/sites\/7\/2022\/10\/python-wordpress-1.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=\"Ontdek hoe Python apps en WordPress kunnen samenwerken en met elkaar kunnen praten met behulp van WordPress REST API en de HTTP client libraries van Python.\" \/>\n<meta name=\"twitter:image\" content=\"https:\/\/kinsta.com\/nl\/wp-content\/uploads\/sites\/7\/2022\/10\/python-wordpress-1.png\" \/>\n<meta name=\"twitter:creator\" content=\"@salmanravoof\" \/>\n<meta name=\"twitter:site\" content=\"@Kinsta_NL\" \/>\n<meta name=\"twitter:label1\" content=\"Geschreven door\" \/>\n\t<meta name=\"twitter:data1\" content=\"Salman Ravoof\" \/>\n\t<meta name=\"twitter:label2\" content=\"Geschatte leestijd\" \/>\n\t<meta name=\"twitter:data2\" content=\"17 minuten\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\/\/kinsta.com\/nl\/blog\/python-wordpress\/#article\",\"isPartOf\":{\"@id\":\"https:\/\/kinsta.com\/nl\/blog\/python-wordpress\/\"},\"author\":{\"name\":\"Salman Ravoof\",\"@id\":\"https:\/\/kinsta.com\/nl\/#\/schema\/person\/9cafd2eedd617e640eeea4cf3a5fd987\"},\"headline\":\"Verbeter je Python skills door je app met WordPress te verbinden\",\"datePublished\":\"2022-10-24T08:17:40+00:00\",\"dateModified\":\"2023-05-22T10:13:59+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\/\/kinsta.com\/nl\/blog\/python-wordpress\/\"},\"wordCount\":2155,\"commentCount\":0,\"publisher\":{\"@id\":\"https:\/\/kinsta.com\/nl\/#organization\"},\"image\":{\"@id\":\"https:\/\/kinsta.com\/nl\/blog\/python-wordpress\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/kinsta.com\/nl\/wp-content\/uploads\/sites\/7\/2022\/10\/python-wordpress-1.png\",\"keywords\":[\"Python\",\"webdev\"],\"inLanguage\":\"nl-NL\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\/\/kinsta.com\/nl\/blog\/python-wordpress\/#respond\"]}]},{\"@type\":\"WebPage\",\"@id\":\"https:\/\/kinsta.com\/nl\/blog\/python-wordpress\/\",\"url\":\"https:\/\/kinsta.com\/nl\/blog\/python-wordpress\/\",\"name\":\"Verbeter je Python skills door je app met WordPress te verbinden\",\"isPartOf\":{\"@id\":\"https:\/\/kinsta.com\/nl\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\/\/kinsta.com\/nl\/blog\/python-wordpress\/#primaryimage\"},\"image\":{\"@id\":\"https:\/\/kinsta.com\/nl\/blog\/python-wordpress\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/kinsta.com\/nl\/wp-content\/uploads\/sites\/7\/2022\/10\/python-wordpress-1.png\",\"datePublished\":\"2022-10-24T08:17:40+00:00\",\"dateModified\":\"2023-05-22T10:13:59+00:00\",\"description\":\"Ontdek hoe Python apps en WordPress kunnen samenwerken en met elkaar kunnen praten met behulp van WordPress REST API en de HTTP client libraries van Python.\",\"breadcrumb\":{\"@id\":\"https:\/\/kinsta.com\/nl\/blog\/python-wordpress\/#breadcrumb\"},\"inLanguage\":\"nl-NL\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/kinsta.com\/nl\/blog\/python-wordpress\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"nl-NL\",\"@id\":\"https:\/\/kinsta.com\/nl\/blog\/python-wordpress\/#primaryimage\",\"url\":\"https:\/\/kinsta.com\/nl\/wp-content\/uploads\/sites\/7\/2022\/10\/python-wordpress-1.png\",\"contentUrl\":\"https:\/\/kinsta.com\/nl\/wp-content\/uploads\/sites\/7\/2022\/10\/python-wordpress-1.png\",\"width\":1460,\"height\":730,\"caption\":\"Verbeter je Python skills door je app met WordPress te verbinden\"},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/kinsta.com\/nl\/blog\/python-wordpress\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\/\/kinsta.com\/nl\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"DevKinsta\",\"item\":\"https:\/\/kinsta.com\/nl\/onderwerpen\/devkinsta\/\"},{\"@type\":\"ListItem\",\"position\":3,\"name\":\"Verbeter je Python skills door je app met WordPress te verbinden\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\/\/kinsta.com\/nl\/#website\",\"url\":\"https:\/\/kinsta.com\/nl\/\",\"name\":\"Kinsta\u00ae\",\"description\":\"Snelle, veilige, premium hostingoplossingen\",\"publisher\":{\"@id\":\"https:\/\/kinsta.com\/nl\/#organization\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\/\/kinsta.com\/nl\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"nl-NL\"},{\"@type\":\"Organization\",\"@id\":\"https:\/\/kinsta.com\/nl\/#organization\",\"name\":\"Kinsta\",\"url\":\"https:\/\/kinsta.com\/nl\/\",\"logo\":{\"@type\":\"ImageObject\",\"inLanguage\":\"nl-NL\",\"@id\":\"https:\/\/kinsta.com\/nl\/#\/schema\/logo\/image\/\",\"url\":\"https:\/\/kinsta.com\/nl\/wp-content\/uploads\/sites\/7\/2023\/12\/kinsta-logo.jpeg\",\"contentUrl\":\"https:\/\/kinsta.com\/nl\/wp-content\/uploads\/sites\/7\/2023\/12\/kinsta-logo.jpeg\",\"width\":500,\"height\":500,\"caption\":\"Kinsta\"},\"image\":{\"@id\":\"https:\/\/kinsta.com\/nl\/#\/schema\/logo\/image\/\"},\"sameAs\":[\"https:\/\/www.facebook.com\/Kinsta-Nederland-476213452787823\/\",\"https:\/\/x.com\/Kinsta_NL\",\"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\/nl\/#\/schema\/person\/9cafd2eedd617e640eeea4cf3a5fd987\",\"name\":\"Salman Ravoof\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"nl-NL\",\"@id\":\"https:\/\/kinsta.com\/nl\/#\/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:\/\/kinsta.com\/nl\/blog\/author\/salmanravoof\/\"}]}<\/script>\n<!-- \/ Yoast SEO Premium plugin. -->","yoast_head_json":{"title":"Verbeter je Python skills door je app met WordPress te verbinden","description":"Ontdek hoe Python apps en WordPress kunnen samenwerken en met elkaar kunnen praten met behulp van WordPress REST API en de HTTP client libraries van 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:\/\/kinsta.com\/nl\/blog\/python-wordpress\/","og_locale":"nl_NL","og_type":"article","og_title":"Verbeter je Python skills door je app met WordPress te verbinden","og_description":"Ontdek hoe Python apps en WordPress kunnen samenwerken en met elkaar kunnen praten met behulp van WordPress REST API en de HTTP client libraries van Python.","og_url":"https:\/\/kinsta.com\/nl\/blog\/python-wordpress\/","og_site_name":"Kinsta\u00ae","article_publisher":"https:\/\/www.facebook.com\/Kinsta-Nederland-476213452787823\/","article_published_time":"2022-10-24T08:17:40+00:00","article_modified_time":"2023-05-22T10:13:59+00:00","og_image":[{"width":1460,"height":730,"url":"https:\/\/kinsta.com\/nl\/wp-content\/uploads\/sites\/7\/2022\/10\/python-wordpress-1.png","type":"image\/png"}],"author":"Salman Ravoof","twitter_card":"summary_large_image","twitter_description":"Ontdek hoe Python apps en WordPress kunnen samenwerken en met elkaar kunnen praten met behulp van WordPress REST API en de HTTP client libraries van Python.","twitter_image":"https:\/\/kinsta.com\/nl\/wp-content\/uploads\/sites\/7\/2022\/10\/python-wordpress-1.png","twitter_creator":"@salmanravoof","twitter_site":"@Kinsta_NL","twitter_misc":{"Geschreven door":"Salman Ravoof","Geschatte leestijd":"17 minuten"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/kinsta.com\/nl\/blog\/python-wordpress\/#article","isPartOf":{"@id":"https:\/\/kinsta.com\/nl\/blog\/python-wordpress\/"},"author":{"name":"Salman Ravoof","@id":"https:\/\/kinsta.com\/nl\/#\/schema\/person\/9cafd2eedd617e640eeea4cf3a5fd987"},"headline":"Verbeter je Python skills door je app met WordPress te verbinden","datePublished":"2022-10-24T08:17:40+00:00","dateModified":"2023-05-22T10:13:59+00:00","mainEntityOfPage":{"@id":"https:\/\/kinsta.com\/nl\/blog\/python-wordpress\/"},"wordCount":2155,"commentCount":0,"publisher":{"@id":"https:\/\/kinsta.com\/nl\/#organization"},"image":{"@id":"https:\/\/kinsta.com\/nl\/blog\/python-wordpress\/#primaryimage"},"thumbnailUrl":"https:\/\/kinsta.com\/nl\/wp-content\/uploads\/sites\/7\/2022\/10\/python-wordpress-1.png","keywords":["Python","webdev"],"inLanguage":"nl-NL","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/kinsta.com\/nl\/blog\/python-wordpress\/#respond"]}]},{"@type":"WebPage","@id":"https:\/\/kinsta.com\/nl\/blog\/python-wordpress\/","url":"https:\/\/kinsta.com\/nl\/blog\/python-wordpress\/","name":"Verbeter je Python skills door je app met WordPress te verbinden","isPartOf":{"@id":"https:\/\/kinsta.com\/nl\/#website"},"primaryImageOfPage":{"@id":"https:\/\/kinsta.com\/nl\/blog\/python-wordpress\/#primaryimage"},"image":{"@id":"https:\/\/kinsta.com\/nl\/blog\/python-wordpress\/#primaryimage"},"thumbnailUrl":"https:\/\/kinsta.com\/nl\/wp-content\/uploads\/sites\/7\/2022\/10\/python-wordpress-1.png","datePublished":"2022-10-24T08:17:40+00:00","dateModified":"2023-05-22T10:13:59+00:00","description":"Ontdek hoe Python apps en WordPress kunnen samenwerken en met elkaar kunnen praten met behulp van WordPress REST API en de HTTP client libraries van Python.","breadcrumb":{"@id":"https:\/\/kinsta.com\/nl\/blog\/python-wordpress\/#breadcrumb"},"inLanguage":"nl-NL","potentialAction":[{"@type":"ReadAction","target":["https:\/\/kinsta.com\/nl\/blog\/python-wordpress\/"]}]},{"@type":"ImageObject","inLanguage":"nl-NL","@id":"https:\/\/kinsta.com\/nl\/blog\/python-wordpress\/#primaryimage","url":"https:\/\/kinsta.com\/nl\/wp-content\/uploads\/sites\/7\/2022\/10\/python-wordpress-1.png","contentUrl":"https:\/\/kinsta.com\/nl\/wp-content\/uploads\/sites\/7\/2022\/10\/python-wordpress-1.png","width":1460,"height":730,"caption":"Verbeter je Python skills door je app met WordPress te verbinden"},{"@type":"BreadcrumbList","@id":"https:\/\/kinsta.com\/nl\/blog\/python-wordpress\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/kinsta.com\/nl\/"},{"@type":"ListItem","position":2,"name":"DevKinsta","item":"https:\/\/kinsta.com\/nl\/onderwerpen\/devkinsta\/"},{"@type":"ListItem","position":3,"name":"Verbeter je Python skills door je app met WordPress te verbinden"}]},{"@type":"WebSite","@id":"https:\/\/kinsta.com\/nl\/#website","url":"https:\/\/kinsta.com\/nl\/","name":"Kinsta\u00ae","description":"Snelle, veilige, premium hostingoplossingen","publisher":{"@id":"https:\/\/kinsta.com\/nl\/#organization"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/kinsta.com\/nl\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"nl-NL"},{"@type":"Organization","@id":"https:\/\/kinsta.com\/nl\/#organization","name":"Kinsta","url":"https:\/\/kinsta.com\/nl\/","logo":{"@type":"ImageObject","inLanguage":"nl-NL","@id":"https:\/\/kinsta.com\/nl\/#\/schema\/logo\/image\/","url":"https:\/\/kinsta.com\/nl\/wp-content\/uploads\/sites\/7\/2023\/12\/kinsta-logo.jpeg","contentUrl":"https:\/\/kinsta.com\/nl\/wp-content\/uploads\/sites\/7\/2023\/12\/kinsta-logo.jpeg","width":500,"height":500,"caption":"Kinsta"},"image":{"@id":"https:\/\/kinsta.com\/nl\/#\/schema\/logo\/image\/"},"sameAs":["https:\/\/www.facebook.com\/Kinsta-Nederland-476213452787823\/","https:\/\/x.com\/Kinsta_NL","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\/nl\/#\/schema\/person\/9cafd2eedd617e640eeea4cf3a5fd987","name":"Salman Ravoof","image":{"@type":"ImageObject","inLanguage":"nl-NL","@id":"https:\/\/kinsta.com\/nl\/#\/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:\/\/kinsta.com\/nl\/blog\/author\/salmanravoof\/"}]}},"acf":[],"_links":{"self":[{"href":"https:\/\/kinsta.com\/nl\/wp-json\/wp\/v2\/posts\/46964","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/kinsta.com\/nl\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/kinsta.com\/nl\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/kinsta.com\/nl\/wp-json\/wp\/v2\/users\/117"}],"replies":[{"embeddable":true,"href":"https:\/\/kinsta.com\/nl\/wp-json\/wp\/v2\/comments?post=46964"}],"version-history":[{"count":11,"href":"https:\/\/kinsta.com\/nl\/wp-json\/wp\/v2\/posts\/46964\/revisions"}],"predecessor-version":[{"id":47206,"href":"https:\/\/kinsta.com\/nl\/wp-json\/wp\/v2\/posts\/46964\/revisions\/47206"}],"alternate":[{"embeddable":true,"hreflang":"en","title":"English","href":"https:\/\/kinsta.com\/nl\/wp-json\/kinsta\/v1\/posts\/46964\/translations\/en"},{"embeddable":true,"hreflang":"it","title":"Italian","href":"https:\/\/kinsta.com\/nl\/wp-json\/kinsta\/v1\/posts\/46964\/translations\/it"},{"embeddable":true,"hreflang":"pt","title":"Portuguese","href":"https:\/\/kinsta.com\/nl\/wp-json\/kinsta\/v1\/posts\/46964\/translations\/pt"},{"embeddable":true,"hreflang":"fr","title":"French","href":"https:\/\/kinsta.com\/nl\/wp-json\/kinsta\/v1\/posts\/46964\/translations\/fr"},{"embeddable":true,"hreflang":"de","title":"German","href":"https:\/\/kinsta.com\/nl\/wp-json\/kinsta\/v1\/posts\/46964\/translations\/de"},{"embeddable":true,"hreflang":"ja","title":"Japanese","href":"https:\/\/kinsta.com\/nl\/wp-json\/kinsta\/v1\/posts\/46964\/translations\/jp"},{"embeddable":true,"hreflang":"nl","title":"Dutch","href":"https:\/\/kinsta.com\/nl\/wp-json\/kinsta\/v1\/posts\/46964\/translations\/nl"},{"embeddable":true,"hreflang":"es","title":"Spanish","href":"https:\/\/kinsta.com\/nl\/wp-json\/kinsta\/v1\/posts\/46964\/translations\/es"},{"embeddable":true,"hreflang":"sv","title":"Swedish","href":"https:\/\/kinsta.com\/nl\/wp-json\/kinsta\/v1\/posts\/46964\/translations\/se"},{"embeddable":true,"hreflang":"da","title":"Danish","href":"https:\/\/kinsta.com\/nl\/wp-json\/kinsta\/v1\/posts\/46964\/translations\/dk"},{"href":"https:\/\/kinsta.com\/nl\/wp-json\/kinsta\/v1\/posts\/46964\/tree"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/kinsta.com\/nl\/wp-json\/wp\/v2\/media\/47203"}],"wp:attachment":[{"href":"https:\/\/kinsta.com\/nl\/wp-json\/wp\/v2\/media?parent=46964"}],"wp:term":[{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/kinsta.com\/nl\/wp-json\/wp\/v2\/tags?post=46964"},{"taxonomy":"topic","embeddable":true,"href":"https:\/\/kinsta.com\/nl\/wp-json\/wp\/v2\/topic?post=46964"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}