{"id":60943,"date":"2022-10-24T09:17:20","date_gmt":"2022-10-24T08:17:20","guid":{"rendered":"https:\/\/kinsta.com\/it\/?p=60943&#038;preview=true&#038;preview_id=60943"},"modified":"2023-02-21T17:36:55","modified_gmt":"2023-02-21T16:36:55","slug":"python-wordpress","status":"publish","type":"post","link":"https:\/\/kinsta.com\/it\/blog\/python-wordpress\/","title":{"rendered":"Migliora le Tue Competenze su Python Collegando la Tua App a WordPress"},"content":{"rendered":"<p>WordPress \u00e8 diventato il sistema di gestione dei contenuti (CMS) pi\u00f9 utilizzato grazie soprattutto alla sua interfaccia di programmazione delle applicazioni (API). <a href=\"https:\/\/kinsta.com\/it\/blog\/rest-api-wordpress\/\">L\u2019API REST di WordPress<\/a> permette a WordPress di &#8220;parlare&#8221; con altre applicazioni scritte in vari linguaggi, tra cui Python.<\/p>\n<p><a href=\"https:\/\/kinsta.com\/it\/blog\/tutorial-python\/#what-is-python\" target=\"_blank\" rel=\"noopener noreferrer\">Python<\/a> \u00e8 un linguaggio di programmazione estensibile con diversi utilizzi e una sintassi leggibile dagli esseri umani, e questo lo rende uno strumento potente per la gestione remota dei contenuti di WordPress.<\/p>\n<p>Ecco alcuni casi d&#8217;uso dell&#8217;API REST di WordPress per le vostre applicazioni e come potete usare Python per supportarle:<\/p>\n<ul>\n<li>Usate modelli predefiniti per consentire alla vostra applicazione di trasformare rapidamente i dati grezzi in post formattati con spiegazioni.<\/li>\n<li>Costruite un&#8217;applicazione di back-office su Django e Python che mostri ai vostri clienti offerte a tempo limitato ogni volta che si verifica uno sconto specifico o un evento di vendita.<\/li>\n<li>Integrare script Python da eseguire all&#8217;interno del vostro sito WordPress.<\/li>\n<\/ul>\n<p>Questo tutorial vi aiuter\u00e0 a creare una semplice applicazione console in Python che comunica con l&#8217;API REST di WordPress ed esegue operazioni su di essa. \u00c8 disponibile anche il codice completo del progetto.<\/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>Installazione e Configurazione di WordPress<\/h2>\n<p>Per prima cosa, installate ed eseguite un sito web WordPress in locale sul vostro computer di sviluppo. Questo \u00e8 un modo eccellente per iniziare a usare WordPress, dato che non \u00e8 necessario creare un account o acquistare un nome di dominio per l&#8217;hosting web.<\/p>\n<p>Prima di installare WordPress in locale, \u00e8 necessario che alcuni componenti funzionino sul vostro computer, tra cui il server web Apache, un database locale e il linguaggio PHP in cui \u00e8 scritto WordPress.<\/p>\n<p>Per fortuna possiamo usare <a href=\"https:\/\/kinsta.com\/it\/devkinsta\/\" target=\"_blank\" rel=\"noopener noreferrer\">DevKinsta<\/a>, una suite gratuita per lo sviluppo locale di WordPress disponibile per tutti i principali sistemi operativi (non \u00e8 necessario essere clienti di Kinsta per utilizzarla).<\/p>\n<p>DevKinsta \u00e8 disponibile per Windows, Mac e Linux e installa WordPress e tutte le sue dipendenze sul vostro computer locale.<\/p>\n<p>Prima di installare DevKinsta, dovete avere Docker in esecuzione localmente, quindi scaricate e <a href=\"https:\/\/docs.docker.com\/engine\/install\/\" target=\"_blank\" rel=\"noopener noreferrer\">installate Docker Engine<\/a> se non l\u2019avete ancora fatto.<\/p>\n<p>Dopo aver installato Docker Desktop, potrete <a href=\"https:\/\/kinsta.com\/it\/devkinsta\/download\/\" target=\"_blank\" rel=\"noopener noreferrer\">scaricare automaticamente<\/a> il pacchetto adatto al vostro sistema operativo.<\/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=\"Pagina di installazione da cui scaricare DevKinsta.\" width=\"826\" height=\"570\"><figcaption class=\"wp-caption-text\">Pagina di installazione di DevKinsta.<\/figcaption><\/figure><\/figure>\n<p>Quando eseguite il programma di installazione di DevKinsta, Docker si avvia immediatamente:<\/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=\"Schermata della finestra di avvio di DevKinsta.\" width=\"546\" height=\"368\"><figcaption class=\"wp-caption-text\">DevKinsta avvia Docker in locale.<\/figcaption><\/figure><\/figure>\n<p>Successivamente, scegliete <strong>Nuovo sito WordPress<\/strong> dal menu <strong>Crea nuovo sito<\/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=\"Schermata della finestra di DevKinstada cui creare un nuovo sito WordPressn.\" width=\"905\" height=\"521\"><figcaption class=\"wp-caption-text\">Il menu Crea nuovo sito in DevKinsta.<\/figcaption><\/figure><\/figure>\n<p>Ora il programma di installazione di DevKinsta vi chiede di creare le credenziali per l&#8217;account di amministrazione di 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:\/\/kinsta.com\/wp-content\/uploads\/2022\/10\/DevKinsta-new-WordPress-site-creation-screen.png\" alt=\"Modulo di DevKinsta in cui inserire le informazioni del nuovo sito WordPress.\" width=\"501\" height=\"463\"><figcaption class=\"wp-caption-text\">DevKinsta visualizza il modulo Nuovo sito WordPress.<\/figcaption><\/figure><\/figure>\n<p>Una volta installata, DevKinsta \u00e8 un&#8217;applicazione indipendente. Ora potete accedere sia al sito WordPress (tramite il pulsante <strong>Apri sito<\/strong>) sia alla bacheca di amministrazione di WordPress (pulsante <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:\/\/kinsta.com\/wp-content\/uploads\/2022\/10\/DevKinsta-WordPress-site-info-screen.png\" alt=\"Schermata della finestra Informazioni Sito di DevKinsta con i dettagli del sito WordPress.\" width=\"969\" height=\"550\"><figcaption class=\"wp-caption-text\">Pannello Informazioni Sito di DevKinsta.<\/figcaption><\/figure><\/figure>\n<p>Successivamente, dovete abilitare <a href=\"https:\/\/kinsta.com\/it\/blog\/come-funziona-ssl\/\" target=\"_blank\" rel=\"noopener noreferrer\">SSL e HTTPS<\/a> per il vostro sito web. Questo migliora la sicurezza del vostro sito web grazie a un certificato 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:\/\/kinsta.com\/wp-content\/uploads\/2022\/10\/DevKinsta-SSL-and-HTTPS-option-screen.png\" alt=\"Schermata di DevKinsta con le opzioni SSL e HTTPS.\" width=\"969\" height=\"550\"><figcaption class=\"wp-caption-text\">L&#8217;opzione &#8220;SSL e HTTPS&#8221; di DevKinsta.<\/figcaption><\/figure><\/figure>\n<p>Ora andate nell&#8217;app DevKinsta e fate clic sul pulsante <strong>Apri sito<\/strong>. Una nuova scheda del browser mostrer\u00e0 la pagina iniziale del vostro sito 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:\/\/kinsta.com\/wp-content\/uploads\/2022\/10\/DevKinsta-new-local-site-Hello-World.png\" alt=\"La home page del sito WordPress locale.\" width=\"827\" height=\"612\"><figcaption class=\"wp-caption-text\">Homepage del sito WordPress.<\/figcaption><\/figure><\/figure>\n<p>Questo \u00e8 il vostro blog WordPress dove potete iniziare a scrivere. Ma per consentire a Python di accedere e usare l&#8217;API REST di WordPress, dobbiamo prima configurare l&#8217;amministrazione di WordPress.<\/p>\n<p>Fate clic sul pulsante <strong>WP Admin<\/strong> dell&#8217;applicazione DevKinsta e inserite utente e password per accedere alla <strong>bacheca di 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:\/\/kinsta.com\/wp-content\/uploads\/2022\/10\/WordPress-admin-dashboard-login-screen.png\" alt=\"Schermata del modulo di accesso al pannello admin di WordPress.\" width=\"357\" height=\"385\"><figcaption class=\"wp-caption-text\">Modulo di accesso a WordPress.<\/figcaption><\/figure><\/figure>\n<p>Una volta effettuato l&#8217;accesso, vedrete la <strong>Bacheca di 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:\/\/kinsta.com\/wp-content\/uploads\/2022\/10\/welcome-to-WordPress-admin-screen.png\" alt=\"Pagina di benvenuto nell\u2019admin di WordPress.\" width=\"989\" height=\"612\"><figcaption class=\"wp-caption-text\">Pagina della Bacheca di WordPress.<\/figcaption><\/figure><\/figure>\n<p>WordPress usa l&#8217;autenticazione tramite cookie come metodo standard. Ma se volete controllarlo usando l&#8217;API REST, dovete autenticarvi con una tecnica che garantisca l&#8217;accesso all&#8217;API REST di WordPress.<\/p>\n<p>A tal fine, userete <a href=\"https:\/\/make.wordpress.org\/core\/2020\/11\/05\/application-passwords-integration-guide\/\" target=\"_blank\" rel=\"noopener noreferrer\">Application Passwords<\/a>. Si tratta di stringhe di 24 caratteri che WordPress genera e associa a un profilo utente che ha il permesso di gestire il vostro sito web.<\/p>\n<p>Per usare Application Passwords, fate clic sul menu <strong>Plugin<\/strong> della Bacheca e cercate l&#8217;omonimo plugin. Quindi installate e attivate il plugin 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:\/\/kinsta.com\/wp-content\/uploads\/2022\/10\/WordPress-add-plugins-Application-Passwords.png\" alt=\"Backend dei plugin WordPress in cui \u00e8 selezionato il plugin Application Passwords.\" width=\"752\" height=\"445\"><figcaption class=\"wp-caption-text\">Plugin Application Passwords per WordPress.<\/figcaption><\/figure><\/figure>\n<p>Per iniziare a creare la password della vostra applicazione, iniziate espandendo il menu <strong>Utenti<\/strong> e facendo clic su <strong>Tutti gli utenti<\/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=\"Menu Utenti nel backend di WordPress.\" width=\"272\" height=\"205\"><figcaption class=\"wp-caption-text\">Menu Utenti espanso.<\/figcaption><\/figure><\/figure>\n<p>Ora fate clic su <strong>Modifica<\/strong> sotto il vostro nome utente con ruolo amministratore:<\/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=\"Una freccia viola indica il pulsante \"Modifica\" sotto l\u2019utente WordPress nel menu Utenti. \" width=\"1015\" height=\"471\"><figcaption class=\"wp-caption-text\">Interfaccia WP-Admin WordPress.<\/figcaption><\/figure><\/figure>\n<p>Scorrete la pagina di <strong>modifica utente<\/strong> e trovate la sezione <strong>Application Passwords<\/strong>. Qui dovrete indicare un nome per la password dell&#8217;applicazione, che userete in seguito per autenticare le richieste dell&#8217;applicazione Python e usare l&#8217;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:\/\/kinsta.com\/wp-content\/uploads\/2022\/10\/Application-Passwords-plugin-dashboard.png\" alt=\"Bacheca di amministrazione del plugin Application Passwords.\" width=\"761\" height=\"362\"><figcaption class=\"wp-caption-text\">Pagina di Application Password.<\/figcaption><\/figure><\/figure>\n<p>Fate clic su <strong>Add New Application Password<\/strong> in modo che WordPress possa generare una password casuale di 24 caratteri:<\/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=\"Il campo coi caratteri mascherati in cui \u00e8 stata inserita la nuova password generata dal plugin Application Passwords.\" width=\"771\" height=\"110\"><figcaption class=\"wp-caption-text\">Nuova pagina di Application Passwords.<\/figcaption><\/figure><\/figure>\n<p>Successivamente, copiate questa password e salvatela in un luogo sicuro per usarla in seguito. Ricordate che non potrete recuperare questa password una volta chiusa questa pagina.<\/p>\n<p>Infine, dovete configurare i permalink. WordPress vi permette di creare una struttura URL personalizzata per i vostri permalink e archivi. Modifichiamola in modo che un post di WordPress intitolato, per esempio, &#8220;Il tuo primo sito web WordPress&#8221; sia accessibile attraverso l&#8217;intuitivo URL https:\/\/your-website.local:port\/your-first-wordpress-website\/. Questo approccio porta diversi vantaggi, tra cui una migliore usabilit\u00e0 ed estetica.<\/p>\n<p>Per configurare i permalink, espandete la sezione <strong>Impostazioni<\/strong> e fate clic sul menu <strong>Permalink<\/strong>. Qui, cambiate le <strong>Impostazioni comuni<\/strong> in <strong>Nome articolo<\/strong>:<\/p>\n<figure style=\"text-align: center\"><img decoding=\"async\" src=\"https:\/\/kinsta.com\/wp-content\/uploads\/2022\/10\/WordPress-change-Permalink-settings-post_name.png\" alt=\"Schermata Impostazioni Permalink del backend WordPress in cui cambiare il formato dei permalink. \"><\/figure>\n<p>Impostare la struttura dei permalink usando la struttura <strong>Nome articolo<\/strong> \u00e8 necessario anche perch\u00e9 ci permetter\u00e0 di recuperare i post in seguito nel nostro codice Python utilizzando il formato JSON. In caso contrario, verr\u00e0 lanciato un errore di decodifica JSON.<\/p>\n<h2>Come Controllare WordPress da Python<\/h2>\n<p>WordPress \u00e8 scritto in PHP, ma dispone di un&#8217;API REST che consente ad altri linguaggi di programmazione, siti e applicazioni di consumare i suoi contenuti. L&#8217;esposizione dei contenuti di WordPress in architettura REST li rende disponibili in formato JSON. Pertanto, altri servizi possono integrarsi con WordPress ed eseguire operazioni di creazione, lettura, aggiornamento e cancellazione (CRUD) senza richiedere l&#8217;installazione locale di WordPress.<\/p>\n<p>A seguire, realizzate una semplice applicazione Python per vedere come usare l&#8217;API REST di WordPress per creare, recuperare, aggiornare e cancellare post e articoli.<\/p>\n<p>Create una nuova cartella per il vostro nuovo semplice progetto Python e dategli un nome come <code>PythonWordPress<\/code>:<\/p>\n<pre><code class=\"language-bash\">..\/PythonWordPress<\/code><\/pre>\n<p>Ora create un ambiente virtuale per il vostro progetto, consentendogli di mantenere un insieme indipendente di pacchetti Python installati, isolandoli dalle directory di sistema ed evitando conflitti di versione. Create un ambiente virtuale eseguendo il comando <code>venv<\/code>:<\/p>\n<pre><code class=\"language-bash\">python3 -m venv .venv<\/code><\/pre>\n<p>Ora eseguite un comando per attivare l&#8217;ambiente virtuale <strong>.venv<\/strong>. Questo comando varia a seconda del sistema operativo:<\/p>\n<ul>\n<li>Windows: <code>.venvScriptsactivate<\/code><\/li>\n<li>Mac\/Linux: <code>.venv\/bin\/activate<\/code><\/li>\n<\/ul>\n<p>Successivamente, memorizzate la configurazione relativa al vostro account WordPress. Per separare la configurazione dell&#8217;applicazione dal codice Python, create un file <strong>.env<\/strong> nella directory del progetto e aggiungete queste variabili d&#8217;ambiente al file:<\/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>Per fortuna leggere i dati di cui sopra da un&#8217;applicazione Python \u00e8 facile. Potete installare il pacchetto <strong>Python-dotenv<\/strong> in modo che la vostra applicazione possa leggere la configurazione dal file <strong>.env<\/strong>:<\/p>\n<pre><code class=\"language-bash\">pip install python-dotenv<\/code><\/pre>\n<p>Quindi installate <strong>aiohttp<\/strong>, un client\/server HTTP asincrono per Python:<\/p>\n<pre><code class=\"language-bash\">pip install aiohttp<\/code><\/pre>\n<p>Ora aggiungete un file chiamato <strong>app.py<\/strong> con il seguente codice:<\/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>Il codice precedente visualizza un menu della console e vi chiede di inserire un numero per scegliere un&#8217;opzione. Successivamente, espanderete questo progetto e implementerete il codice che vi permetter\u00e0 di elencare tutti i post e di recuperare un post specifico utilizzando il suo id.<\/p>\n<h2>Recuperare i Post nel Codice<\/h2>\n<p>Per interagire con WordPress REST API, dovete creare un nuovo file Python. Create un file chiamato <strong>wordpress_api_helper.py<\/strong> con il seguente contenuto:<\/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>Notate l&#8217;uso della libreria <strong>aiohttp<\/strong> sopra. I linguaggi moderni offrono una sintassi e degli strumenti che consentono la programmazione asincrona. Questo aumenta la reattivit\u00e0 dell&#8217;applicazione consentendo al programma di eseguire attivit\u00e0 parallele a operazioni come <a href=\"https:\/\/kinsta.com\/it\/blog\/cos-e-una-richiesta-http\/\" target=\"_blank\" rel=\"noopener noreferrer\">richieste web<\/a>, operazioni di database e I\/O su disco. Python offre <a href=\"https:\/\/docs.python.org\/3\/library\/asyncio.html\" target=\"_blank\" rel=\"noopener noreferrer\">asyncio<\/a> come base per il suo framework di programmazione asincrona e la libreria <a href=\"https:\/\/docs.aiohttp.org\/en\/stable\/\" target=\"_blank\" rel=\"noopener noreferrer\">aiohttp<\/a> \u00e8 costruita su <strong>asyncio<\/strong> per offrire accesso asincrono alle operazioni HTTP Client\/Server effettuate in Python.<\/p>\n<p>La funzione <code>ClientSession<\/code> qui sopra viene eseguita in modo asincrono e restituisce un oggetto <code>session<\/code>, che il nostro programma usa per eseguire un&#8217;operazione HTTP GET contro l&#8217;endpoint <code>\/wp-json\/wp\/v2\/posts<\/code>. L&#8217;unica differenza tra una richiesta per recuperare tutti i post e una richiesta per uno specifico post \u00e8 che quest&#8217;ultima richiesta passa un parametro <code>post id<\/code> nel percorso URL: <code>\/wp-json\/wp\/v2\/posts\/{id}<\/code>.<\/p>\n<p>Ora sprite il file <strong>app.py<\/strong> e aggiungete la dichiarazione <code>import<\/code>:<\/p>\n<pre><code class=\"language-python\">from wordpress_api_helper import get_all_posts, get_post<\/code><\/pre>\n<p>Quindi, modificate la funzione <code>main<\/code> per chiamare le funzioni <code>get_all_posts<\/code> e <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>Quindi eseguite l&#8217;applicazione:<\/p>\n<pre><code class=\"language-bash\">python app.py<\/code><\/pre>\n<p>Vedrete il menu dell&#8217;applicazione:<\/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=\"Avvio dell'applicazione Python collegata a WordPress.\" width=\"804\" height=\"114\"><figcaption class=\"wp-caption-text\">Menu dell&#8217;applicazione Python.<\/figcaption><\/figure><\/figure>\n<p>Ora provate l&#8217;opzione 1 per visualizzare l&#8217;elenco dei post recuperati dalla vostra applicazione Python e l&#8217;opzione 2 per selezionare un post:<\/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=\"Provate l'opzione 1 per visualizzare l'elenco dei post recuperati dall'applicazione Python e l'opzione 2 per selezionare un post.\" width=\"670\" height=\"624\"><figcaption class=\"wp-caption-text\">L&#8217;applicazione Python mostra l&#8217;elenco dei post e un singolo post selezionato dall&#8217;utente.<\/figcaption><\/figure><\/figure>\n<h2>Creare Post in Codice<\/h2>\n<p>Per creare un post di WordPress in Python, iniziate aprendo il file <strong>wordpress_api_helper.py<\/strong> e aggiungete la funzione <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>Questo codice richiama la funzione <code>post<\/code> nell&#8217;oggetto <code>session<\/code>, passando il parametro <code>auth<\/code> accanto all&#8217;URL dell&#8217;endpoint dell&#8217;API REST. L&#8217;oggetto <code>auth<\/code> contiene ora l&#8217;utente WordPress e la password che avete creato con Application Passwords. Ora, aprite il file <strong>app.py<\/strong> e aggiungete il codice per importare <code>create_post<\/code> e il 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>Poi aggiungi una terza opzione di 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>Quindi, avviate l&#8217;applicazione e provate l&#8217;opzione 3, passando un titolo e un contenuto per creare un nuovo post in 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:\/\/kinsta.com\/wp-content\/uploads\/2022\/10\/create-a-WordPress-post-Python-app.png\" alt=\"Creare un post di WordPress con Python.\" width=\"671\" height=\"335\"><figcaption class=\"wp-caption-text\">L&#8217;applicazione Python visualizza il post WordPress appena creato.<\/figcaption><\/figure><\/figure>\n<p>Scegliendo di nuovo l&#8217;opzione 1, otterrete l&#8217;id e il titolo del post appena aggiunto:<\/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=\"Restituzione dell'id e del titolo del post appena aggiunto.\" width=\"672\" height=\"333\"><figcaption class=\"wp-caption-text\">L&#8217;applicazione Python restituisce il titolo e l&#8217;id del nuovo post.<\/figcaption><\/figure><\/figure>\n<p>Potete anche aprire il vostro sito web WordPress per visualizzare il nuovo post:<\/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=\"Il post appena creato nel browser.\" width=\"754\" height=\"600\"><figcaption class=\"wp-caption-text\">Immagine del browser del nuovo post di WordPress.<\/figcaption><\/figure><\/figure>\n<h2>Aggiornare i Post nel Codice<\/h2>\n<p>Aprite il file <strong>wordpress_api_helper.py<\/strong> e aggiungietela funzione <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>Poi aprite il file <strong>app.py<\/strong> e aggiungete il codice per importare <code>update_post<\/code> e il 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>Quindi aggiungete una quarta opzione di 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>Eseguite l&#8217;applicazione e provate l&#8217;opzione 4, passando l&#8217;id di un post, il titolo e il contenuto per aggiornare un post esistente.<\/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=\"Aggiornamento di un post di WordPress.\" width=\"670\" height=\"338\"><figcaption class=\"wp-caption-text\">Python mostra il menu aggiornato.<\/figcaption><\/figure><\/figure>\n<p>Scegliendo l&#8217;opzione 2 e passando l&#8217;id del post aggiornato, otterrete i dettagli del nuovo post aggiunto:<\/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=\"Restituzione dei dettagli del post appena aggiornato.\" width=\"673\" height=\"318\"><figcaption class=\"wp-caption-text\">L&#8217;applicazione Python mostra il post aggiornato.<\/figcaption><\/figure><\/figure>\n<h2>Eliminare i Post nel Codice<\/h2>\n<p>Potete passare l&#8217;id del post all&#8217;API REST per eliminare un post.<\/p>\n<p>Aprite il file <strong>wordpress_api_helper.py<\/strong> e aggiungete la funzione <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>Ora aprite il file <strong>app.py<\/strong> e aggiungete il codice per importare <code>delete_post<\/code> e il 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>Quindi aggiungete una quinta opzione di 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>Ora eseguite l&#8217;applicazione e provate l&#8217;opzione 5, passando un id per eliminare il post esistente in 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:\/\/kinsta.com\/wp-content\/uploads\/2022\/10\/deleting-WordPress-Post-Python-app.png\" alt=\"Eliminare un post di WordPress con l'applicazione Python.\" width=\"651\" height=\"120\"><figcaption class=\"wp-caption-text\">L&#8217;applicazione Python mostra la cancellazione del post selezionato.<\/figcaption><\/figure><\/figure>\n<p>Nota: il post cancellato potrebbe ancora apparire se eseguite l&#8217;opzione <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:\/\/kinsta.com\/wp-content\/uploads\/2022\/10\/Python-app-listing-posts.png\" alt=\"App Python che elenca i post.\" width=\"671\" height=\"288\"><figcaption class=\"wp-caption-text\">L&#8217;applicazione Python mostra l&#8217;elenco dei post originali.<\/figcaption><\/figure><\/figure>\n<p>Per confermare l&#8217;eliminazione del post, attendete qualche secondo e riprovate l&#8217;opzione <strong>List Posts<\/strong>. Ed ecco fatto!<\/p>\n<h2>Riepilogo<\/h2>\n<p>Grazie all&#8217;API REST di WordPress e alle librerie client HTTP di Python, le applicazioni Python e WordPress possono collaborare e dialogare. Il vantaggio dell&#8217;API REST \u00e8 che vi permette di usare WordPress in remoto da un&#8217;applicazione Python, dove il potente linguaggio di Python consente la creazione automatica di contenuti che seguono la struttura e la frequenza desiderate.<\/p>\n<p>DevKinsta rende facile e veloce la creazione e lo sviluppo di un sito WordPress locale. Fornisce un ambiente locale per lo sviluppo di temi e plugin WordPress e offre un modello di distribuzione semplificato grazie al suo modello di installazione autonomo basato su Docker.<\/p>\n<p>Qual \u00e8 la vostra esperienza di lavoro con Python e WordPress?<\/p>\n<p><em>Se volete approfondire questa esperienza, potete leggere la <a href=\"https:\/\/kinsta.com\/it\/blog\/rest-api-wordpress\/\" target=\"_blank\" rel=\"noopener noreferrer\">Guida completa alle API REST di WordPress<\/a> per esplorare altre possibilit\u00e0.<\/em><\/p>\n","protected":false},"excerpt":{"rendered":"<p>WordPress \u00e8 diventato il sistema di gestione dei contenuti (CMS) pi\u00f9 utilizzato grazie soprattutto alla sua interfaccia di programmazione delle applicazioni (API). L\u2019API REST di WordPress &#8230;<\/p>\n","protected":false},"author":117,"featured_media":61353,"comment_status":"open","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"_kinsta_gated_content":false,"_kinsta_gated_content_redirect":"","footnotes":""},"tags":[25596,67],"topic":[26090,25945,26215,25873],"class_list":["post-60943","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","tag-python","tag-webdev","topic-devkinsta","topic-linguaggi-sviluppo-web","topic-python","topic-sviluppo-wordpress"],"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>Migliora le Tue Competenze su Python Collegando la Tua App a WordPress<\/title>\n<meta name=\"description\" content=\"Scopri come le applicazioni Python e WordPress possono collaborare e dialogare tra loro utilizzando le API REST di WordPress e le librerie client HTTP di 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\/it\/blog\/python-wordpress\/\" \/>\n<meta property=\"og:locale\" content=\"it_IT\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Migliora le Tue Competenze su Python Collegando la Tua App a WordPress\" \/>\n<meta property=\"og:description\" content=\"Scopri come le applicazioni Python e WordPress possono collaborare e dialogare tra loro utilizzando le API REST di WordPress e le librerie client HTTP di Python.\" \/>\n<meta property=\"og:url\" content=\"https:\/\/kinsta.com\/it\/blog\/python-wordpress\/\" \/>\n<meta property=\"og:site_name\" content=\"Kinsta\u00ae\" \/>\n<meta property=\"article:publisher\" content=\"https:\/\/www.facebook.com\/kinstaitalia\/\" \/>\n<meta property=\"article:published_time\" content=\"2022-10-24T08:17:20+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2023-02-21T16:36:55+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/kinsta.com\/it\/wp-content\/uploads\/sites\/2\/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=\"Scopri come le applicazioni Python e WordPress possono collaborare e dialogare tra loro utilizzando le API REST di WordPress e le librerie client HTTP di Python.\" \/>\n<meta name=\"twitter:image\" content=\"https:\/\/kinsta.com\/it\/wp-content\/uploads\/sites\/2\/2022\/10\/python-wordpress-1.png\" \/>\n<meta name=\"twitter:creator\" content=\"@salmanravoof\" \/>\n<meta name=\"twitter:site\" content=\"@Kinsta_IT\" \/>\n<meta name=\"twitter:label1\" content=\"Scritto da\" \/>\n\t<meta name=\"twitter:data1\" content=\"Salman Ravoof\" \/>\n\t<meta name=\"twitter:label2\" content=\"Tempo di lettura stimato\" \/>\n\t<meta name=\"twitter:data2\" content=\"14 minuti\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\/\/kinsta.com\/it\/blog\/python-wordpress\/#article\",\"isPartOf\":{\"@id\":\"https:\/\/kinsta.com\/it\/blog\/python-wordpress\/\"},\"author\":{\"name\":\"Salman Ravoof\",\"@id\":\"https:\/\/kinsta.com\/it\/#\/schema\/person\/9cafd2eedd617e640eeea4cf3a5fd987\"},\"headline\":\"Migliora le Tue Competenze su Python Collegando la Tua App a WordPress\",\"datePublished\":\"2022-10-24T08:17:20+00:00\",\"dateModified\":\"2023-02-21T16:36:55+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\/\/kinsta.com\/it\/blog\/python-wordpress\/\"},\"wordCount\":2105,\"commentCount\":0,\"publisher\":{\"@id\":\"https:\/\/kinsta.com\/it\/#organization\"},\"image\":{\"@id\":\"https:\/\/kinsta.com\/it\/blog\/python-wordpress\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/kinsta.com\/it\/wp-content\/uploads\/sites\/2\/2022\/10\/python-wordpress-1.png\",\"keywords\":[\"python\",\"webdev\"],\"inLanguage\":\"it-IT\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\/\/kinsta.com\/it\/blog\/python-wordpress\/#respond\"]}]},{\"@type\":\"WebPage\",\"@id\":\"https:\/\/kinsta.com\/it\/blog\/python-wordpress\/\",\"url\":\"https:\/\/kinsta.com\/it\/blog\/python-wordpress\/\",\"name\":\"Migliora le Tue Competenze su Python Collegando la Tua App a WordPress\",\"isPartOf\":{\"@id\":\"https:\/\/kinsta.com\/it\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\/\/kinsta.com\/it\/blog\/python-wordpress\/#primaryimage\"},\"image\":{\"@id\":\"https:\/\/kinsta.com\/it\/blog\/python-wordpress\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/kinsta.com\/it\/wp-content\/uploads\/sites\/2\/2022\/10\/python-wordpress-1.png\",\"datePublished\":\"2022-10-24T08:17:20+00:00\",\"dateModified\":\"2023-02-21T16:36:55+00:00\",\"description\":\"Scopri come le applicazioni Python e WordPress possono collaborare e dialogare tra loro utilizzando le API REST di WordPress e le librerie client HTTP di Python.\",\"breadcrumb\":{\"@id\":\"https:\/\/kinsta.com\/it\/blog\/python-wordpress\/#breadcrumb\"},\"inLanguage\":\"it-IT\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/kinsta.com\/it\/blog\/python-wordpress\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"it-IT\",\"@id\":\"https:\/\/kinsta.com\/it\/blog\/python-wordpress\/#primaryimage\",\"url\":\"https:\/\/kinsta.com\/it\/wp-content\/uploads\/sites\/2\/2022\/10\/python-wordpress-1.png\",\"contentUrl\":\"https:\/\/kinsta.com\/it\/wp-content\/uploads\/sites\/2\/2022\/10\/python-wordpress-1.png\",\"width\":1460,\"height\":730,\"caption\":\"Migliora le Tue Competenze su Python Collegando la Tua App a WordPress\"},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/kinsta.com\/it\/blog\/python-wordpress\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\/\/kinsta.com\/it\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Sviluppo di WordPress\",\"item\":\"https:\/\/kinsta.com\/it\/argomenti\/sviluppo-wordpress\/\"},{\"@type\":\"ListItem\",\"position\":3,\"name\":\"Migliora le Tue Competenze su Python Collegando la Tua App a WordPress\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\/\/kinsta.com\/it\/#website\",\"url\":\"https:\/\/kinsta.com\/it\/\",\"name\":\"Kinsta\u00ae\",\"description\":\"Soluzioni di hosting premium, veloci e sicure\",\"publisher\":{\"@id\":\"https:\/\/kinsta.com\/it\/#organization\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\/\/kinsta.com\/it\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"it-IT\"},{\"@type\":\"Organization\",\"@id\":\"https:\/\/kinsta.com\/it\/#organization\",\"name\":\"Kinsta\",\"url\":\"https:\/\/kinsta.com\/it\/\",\"logo\":{\"@type\":\"ImageObject\",\"inLanguage\":\"it-IT\",\"@id\":\"https:\/\/kinsta.com\/it\/#\/schema\/logo\/image\/\",\"url\":\"https:\/\/kinsta.com\/it\/wp-content\/uploads\/sites\/2\/2023\/12\/kinsta-logo.jpeg\",\"contentUrl\":\"https:\/\/kinsta.com\/it\/wp-content\/uploads\/sites\/2\/2023\/12\/kinsta-logo.jpeg\",\"width\":500,\"height\":500,\"caption\":\"Kinsta\"},\"image\":{\"@id\":\"https:\/\/kinsta.com\/it\/#\/schema\/logo\/image\/\"},\"sameAs\":[\"https:\/\/www.facebook.com\/kinstaitalia\/\",\"https:\/\/x.com\/Kinsta_IT\",\"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\/it\/#\/schema\/person\/9cafd2eedd617e640eeea4cf3a5fd987\",\"name\":\"Salman Ravoof\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"it-IT\",\"@id\":\"https:\/\/kinsta.com\/it\/#\/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\/it\/blog\/author\/salmanravoof\/\"}]}<\/script>\n<!-- \/ Yoast SEO Premium plugin. -->","yoast_head_json":{"title":"Migliora le Tue Competenze su Python Collegando la Tua App a WordPress","description":"Scopri come le applicazioni Python e WordPress possono collaborare e dialogare tra loro utilizzando le API REST di WordPress e le librerie client HTTP di 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\/it\/blog\/python-wordpress\/","og_locale":"it_IT","og_type":"article","og_title":"Migliora le Tue Competenze su Python Collegando la Tua App a WordPress","og_description":"Scopri come le applicazioni Python e WordPress possono collaborare e dialogare tra loro utilizzando le API REST di WordPress e le librerie client HTTP di Python.","og_url":"https:\/\/kinsta.com\/it\/blog\/python-wordpress\/","og_site_name":"Kinsta\u00ae","article_publisher":"https:\/\/www.facebook.com\/kinstaitalia\/","article_published_time":"2022-10-24T08:17:20+00:00","article_modified_time":"2023-02-21T16:36:55+00:00","og_image":[{"width":1460,"height":730,"url":"https:\/\/kinsta.com\/it\/wp-content\/uploads\/sites\/2\/2022\/10\/python-wordpress-1.png","type":"image\/png"}],"author":"Salman Ravoof","twitter_card":"summary_large_image","twitter_description":"Scopri come le applicazioni Python e WordPress possono collaborare e dialogare tra loro utilizzando le API REST di WordPress e le librerie client HTTP di Python.","twitter_image":"https:\/\/kinsta.com\/it\/wp-content\/uploads\/sites\/2\/2022\/10\/python-wordpress-1.png","twitter_creator":"@salmanravoof","twitter_site":"@Kinsta_IT","twitter_misc":{"Scritto da":"Salman Ravoof","Tempo di lettura stimato":"14 minuti"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/kinsta.com\/it\/blog\/python-wordpress\/#article","isPartOf":{"@id":"https:\/\/kinsta.com\/it\/blog\/python-wordpress\/"},"author":{"name":"Salman Ravoof","@id":"https:\/\/kinsta.com\/it\/#\/schema\/person\/9cafd2eedd617e640eeea4cf3a5fd987"},"headline":"Migliora le Tue Competenze su Python Collegando la Tua App a WordPress","datePublished":"2022-10-24T08:17:20+00:00","dateModified":"2023-02-21T16:36:55+00:00","mainEntityOfPage":{"@id":"https:\/\/kinsta.com\/it\/blog\/python-wordpress\/"},"wordCount":2105,"commentCount":0,"publisher":{"@id":"https:\/\/kinsta.com\/it\/#organization"},"image":{"@id":"https:\/\/kinsta.com\/it\/blog\/python-wordpress\/#primaryimage"},"thumbnailUrl":"https:\/\/kinsta.com\/it\/wp-content\/uploads\/sites\/2\/2022\/10\/python-wordpress-1.png","keywords":["python","webdev"],"inLanguage":"it-IT","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/kinsta.com\/it\/blog\/python-wordpress\/#respond"]}]},{"@type":"WebPage","@id":"https:\/\/kinsta.com\/it\/blog\/python-wordpress\/","url":"https:\/\/kinsta.com\/it\/blog\/python-wordpress\/","name":"Migliora le Tue Competenze su Python Collegando la Tua App a WordPress","isPartOf":{"@id":"https:\/\/kinsta.com\/it\/#website"},"primaryImageOfPage":{"@id":"https:\/\/kinsta.com\/it\/blog\/python-wordpress\/#primaryimage"},"image":{"@id":"https:\/\/kinsta.com\/it\/blog\/python-wordpress\/#primaryimage"},"thumbnailUrl":"https:\/\/kinsta.com\/it\/wp-content\/uploads\/sites\/2\/2022\/10\/python-wordpress-1.png","datePublished":"2022-10-24T08:17:20+00:00","dateModified":"2023-02-21T16:36:55+00:00","description":"Scopri come le applicazioni Python e WordPress possono collaborare e dialogare tra loro utilizzando le API REST di WordPress e le librerie client HTTP di Python.","breadcrumb":{"@id":"https:\/\/kinsta.com\/it\/blog\/python-wordpress\/#breadcrumb"},"inLanguage":"it-IT","potentialAction":[{"@type":"ReadAction","target":["https:\/\/kinsta.com\/it\/blog\/python-wordpress\/"]}]},{"@type":"ImageObject","inLanguage":"it-IT","@id":"https:\/\/kinsta.com\/it\/blog\/python-wordpress\/#primaryimage","url":"https:\/\/kinsta.com\/it\/wp-content\/uploads\/sites\/2\/2022\/10\/python-wordpress-1.png","contentUrl":"https:\/\/kinsta.com\/it\/wp-content\/uploads\/sites\/2\/2022\/10\/python-wordpress-1.png","width":1460,"height":730,"caption":"Migliora le Tue Competenze su Python Collegando la Tua App a WordPress"},{"@type":"BreadcrumbList","@id":"https:\/\/kinsta.com\/it\/blog\/python-wordpress\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/kinsta.com\/it\/"},{"@type":"ListItem","position":2,"name":"Sviluppo di WordPress","item":"https:\/\/kinsta.com\/it\/argomenti\/sviluppo-wordpress\/"},{"@type":"ListItem","position":3,"name":"Migliora le Tue Competenze su Python Collegando la Tua App a WordPress"}]},{"@type":"WebSite","@id":"https:\/\/kinsta.com\/it\/#website","url":"https:\/\/kinsta.com\/it\/","name":"Kinsta\u00ae","description":"Soluzioni di hosting premium, veloci e sicure","publisher":{"@id":"https:\/\/kinsta.com\/it\/#organization"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/kinsta.com\/it\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"it-IT"},{"@type":"Organization","@id":"https:\/\/kinsta.com\/it\/#organization","name":"Kinsta","url":"https:\/\/kinsta.com\/it\/","logo":{"@type":"ImageObject","inLanguage":"it-IT","@id":"https:\/\/kinsta.com\/it\/#\/schema\/logo\/image\/","url":"https:\/\/kinsta.com\/it\/wp-content\/uploads\/sites\/2\/2023\/12\/kinsta-logo.jpeg","contentUrl":"https:\/\/kinsta.com\/it\/wp-content\/uploads\/sites\/2\/2023\/12\/kinsta-logo.jpeg","width":500,"height":500,"caption":"Kinsta"},"image":{"@id":"https:\/\/kinsta.com\/it\/#\/schema\/logo\/image\/"},"sameAs":["https:\/\/www.facebook.com\/kinstaitalia\/","https:\/\/x.com\/Kinsta_IT","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\/it\/#\/schema\/person\/9cafd2eedd617e640eeea4cf3a5fd987","name":"Salman Ravoof","image":{"@type":"ImageObject","inLanguage":"it-IT","@id":"https:\/\/kinsta.com\/it\/#\/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\/it\/blog\/author\/salmanravoof\/"}]}},"acf":[],"_links":{"self":[{"href":"https:\/\/kinsta.com\/it\/wp-json\/wp\/v2\/posts\/60943","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/kinsta.com\/it\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/kinsta.com\/it\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/kinsta.com\/it\/wp-json\/wp\/v2\/users\/117"}],"replies":[{"embeddable":true,"href":"https:\/\/kinsta.com\/it\/wp-json\/wp\/v2\/comments?post=60943"}],"version-history":[{"count":9,"href":"https:\/\/kinsta.com\/it\/wp-json\/wp\/v2\/posts\/60943\/revisions"}],"predecessor-version":[{"id":61360,"href":"https:\/\/kinsta.com\/it\/wp-json\/wp\/v2\/posts\/60943\/revisions\/61360"}],"alternate":[{"embeddable":true,"hreflang":"en","title":"English","href":"https:\/\/kinsta.com\/it\/wp-json\/kinsta\/v1\/posts\/60943\/translations\/en"},{"embeddable":true,"hreflang":"it","title":"Italian","href":"https:\/\/kinsta.com\/it\/wp-json\/kinsta\/v1\/posts\/60943\/translations\/it"},{"embeddable":true,"hreflang":"pt","title":"Portuguese","href":"https:\/\/kinsta.com\/it\/wp-json\/kinsta\/v1\/posts\/60943\/translations\/pt"},{"embeddable":true,"hreflang":"fr","title":"French","href":"https:\/\/kinsta.com\/it\/wp-json\/kinsta\/v1\/posts\/60943\/translations\/fr"},{"embeddable":true,"hreflang":"de","title":"German","href":"https:\/\/kinsta.com\/it\/wp-json\/kinsta\/v1\/posts\/60943\/translations\/de"},{"embeddable":true,"hreflang":"ja","title":"Japanese","href":"https:\/\/kinsta.com\/it\/wp-json\/kinsta\/v1\/posts\/60943\/translations\/jp"},{"embeddable":true,"hreflang":"nl","title":"Dutch","href":"https:\/\/kinsta.com\/it\/wp-json\/kinsta\/v1\/posts\/60943\/translations\/nl"},{"embeddable":true,"hreflang":"es","title":"Spanish","href":"https:\/\/kinsta.com\/it\/wp-json\/kinsta\/v1\/posts\/60943\/translations\/es"},{"embeddable":true,"hreflang":"sv","title":"Swedish","href":"https:\/\/kinsta.com\/it\/wp-json\/kinsta\/v1\/posts\/60943\/translations\/se"},{"embeddable":true,"hreflang":"da","title":"Danish","href":"https:\/\/kinsta.com\/it\/wp-json\/kinsta\/v1\/posts\/60943\/translations\/dk"},{"href":"https:\/\/kinsta.com\/it\/wp-json\/kinsta\/v1\/posts\/60943\/tree"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/kinsta.com\/it\/wp-json\/wp\/v2\/media\/61353"}],"wp:attachment":[{"href":"https:\/\/kinsta.com\/it\/wp-json\/wp\/v2\/media?parent=60943"}],"wp:term":[{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/kinsta.com\/it\/wp-json\/wp\/v2\/tags?post=60943"},{"taxonomy":"topic","embeddable":true,"href":"https:\/\/kinsta.com\/it\/wp-json\/wp\/v2\/topic?post=60943"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}