{"id":58522,"date":"2022-10-24T10:16:49","date_gmt":"2022-10-24T08:16:49","guid":{"rendered":"https:\/\/kinsta.com\/es\/?p=58522&#038;preview=true&#038;preview_id=58522"},"modified":"2023-08-21T10:24:34","modified_gmt":"2023-08-21T08:24:34","slug":"python-wordpress","status":"publish","type":"post","link":"https:\/\/kinsta.com\/es\/blog\/python-wordpress\/","title":{"rendered":"Perfecciona Tus Conocimientos de Python Conectando Tu Aplicaci\u00f3n con WordPress"},"content":{"rendered":"<p>WordPress se ha convertido en el sistema de gesti\u00f3n de contenidos (CMS) m\u00e1s utilizado debido en gran medida a su interfaz de programaci\u00f3n de aplicaciones (API). La <a href=\"https:\/\/kinsta.com\/es\/blog\/rest-api-de-wordpress\/\">API REST de WordPress<\/a> permite a WordPress \u00abhablar\u00bb con otras aplicaciones escritas en varios lenguajes, incluido Python.<\/p>\n<p><a href=\"https:\/\/kinsta.com\/es\/blog\/tutoriales-python\/#what-is-python\" target=\"_blank\" rel=\"noopener noreferrer\">Python<\/a> es un lenguaje de programaci\u00f3n extensible con diversos usos y una sintaxis legible para el ser humano, lo que lo convierte en una poderosa herramienta para gestionar a distancia el contenido de WordPress.<\/p>\n<p>Aqu\u00ed tienes algunos casos de uso de la API REST de WordPress para tus aplicaciones y c\u00f3mo puedes utilizar Python para darles soporte:<\/p>\n<ul>\n<li>Utiliza plantillas predefinidas para que tu aplicaci\u00f3n convierta r\u00e1pidamente los datos brutos en publicaciones con formato y explicaciones.<\/li>\n<li>Construye una aplicaci\u00f3n de back-office en Django y Python que muestre ofertas por tiempo limitado a tus clientes cada vez que se produzca un descuento o evento de venta espec\u00edfico.<\/li>\n<li>Integra scripts de Python para que se ejecuten dentro de tu sitio de WordPress<\/li>\n<\/ul>\n<p>Este tutorial te ayudar\u00e1 a crear una sencilla aplicaci\u00f3n de consola en Python que se comunica con la API REST de WordPress y ejecuta operaciones en ella. Tambi\u00e9n est\u00e1 disponible el c\u00f3digo completo del proyecto.<\/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>Instalaci\u00f3n y configuraci\u00f3n de WordPress<\/h2>\n<p>En primer lugar, vamos a instalar y ejecutar un sitio web de WordPress localmente en tu m\u00e1quina de desarrollo. Esta es una forma excelente de empezar con WordPress, ya que no tienes que crear una cuenta ni comprar un nombre de dominio para el alojamiento web.<\/p>\n<p>Antes de instalar WordPress localmente, es necesario que algunos componentes se ejecuten en tu ordenador, como el servidor web Apache, una base de datos local y el lenguaje PHP en el que est\u00e1 escrito WordPress.<\/p>\n<p>Afortunadamente, podemos utilizar <a href=\"https:\/\/kinsta.com\/es\/devkinsta\/\" target=\"_blank\" rel=\"noopener noreferrer\">DevKinsta<\/a>, una suite de desarrollo local de WordPress gratuita disponible para los principales sistemas operativos (no tienes que ser cliente de Kinsta para utilizarla).<\/p>\n<p>DevKinsta est\u00e1 disponible para Windows, Mac y Linux, e instala WordPress y todas sus dependencias en tu m\u00e1quina local.<\/p>\n<p>Antes de instalar DevKinsta, debes tener Docker funcionando localmente, as\u00ed que descarga e <a href=\"https:\/\/docs.docker.com\/engine\/install\/\" target=\"_blank\" rel=\"noopener noreferrer\">instala el Docker Engine<\/a> si a\u00fan no lo has hecho.<\/p>\n<p>Despu\u00e9s de instalar Docker Desktop, puedes <a href=\"https:\/\/kinsta.com\/es\/devkinsta\/download\/\" target=\"_blank\" rel=\"noopener noreferrer\">descargar autom\u00e1ticamente<\/a> el paquete que se adapte a tu 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=\"P\u00e1gina de instalaci\u00f3n de DevKinsta.\" width=\"826\" height=\"570\"><figcaption class=\"wp-caption-text\">P\u00e1gina de instalaci\u00f3n de DevKinsta.<\/figcaption><\/figure><\/figure>\n<p>Cuando ejecutas el instalador de DevKinsta, Docker comienza a inicializarse inmediatamente:<\/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=\"DevKinsta inicia Docker localmente.\" width=\"546\" height=\"368\"><figcaption class=\"wp-caption-text\">DevKinsta inicia Docker localmente.<\/figcaption><\/figure><\/figure>\n<p>A continuaci\u00f3n, elige <strong>Nuevo sitio WordPress<\/strong> en el men\u00fa <strong>Crear nuevo sitio<\/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=\"Men\u00fa Crear nuevo sitio de DevKinsta.\" width=\"905\" height=\"521\"><figcaption class=\"wp-caption-text\">Men\u00fa Crear nuevo sitio de DevKinsta.<\/figcaption><\/figure><\/figure>\n<p>Ahora el instalador de DevKinsta te pide que crees las credenciales de la cuenta de administrador de WordPress:<\/p>\n<figure style=\"text-align: center\">\n<p><figure style=\"width: 501px\" class=\"wp-caption alignnone\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/kinsta.com\/wp-content\/uploads\/2022\/10\/DevKinsta-new-WordPress-site-creation-screen.png\" alt=\"DevKinsta mostrando el formulario de Nuevo Sitio WordPress..\" width=\"501\" height=\"463\"><figcaption class=\"wp-caption-text\">DevKinsta mostrando el formulario de Nuevo Sitio WordPress.<\/figcaption><\/figure><\/figure>\n<p>Una vez instalado, DevKinsta es una aplicaci\u00f3n independiente. Ahora puedes acceder tanto al sitio de WordPress (mediante el bot\u00f3n <strong>Abrir sitio<\/strong>) como al panel de administraci\u00f3n de WordPress (bot\u00f3n <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=\"Panel de Control del sitio de DevKinsta.\" width=\"969\" height=\"550\"><figcaption class=\"wp-caption-text\">Panel de Control del sitio de DevKinsta.<\/figcaption><\/figure><\/figure>\n<p>A continuaci\u00f3n, tienes que activar el <a href=\"https:\/\/kinsta.com\/es\/blog\/como-funciona-ssl\/\" target=\"_blank\" rel=\"noopener noreferrer\">SSL y el HTTPS<\/a> para tu sitio web. Esto mejora la seguridad de tu sitio web a trav\u00e9s de un certificado 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=\"Opci\u00f3n \"SSL y HTTPS\" de DevKinsta.\" width=\"969\" height=\"550\"><figcaption class=\"wp-caption-text\">Opci\u00f3n \u00abSSL y HTTPS\u00bb de DevKinsta.<\/figcaption><\/figure><\/figure>\n<p>Ahora ve a la aplicaci\u00f3n de DevKinsta y haz clic en el bot\u00f3n<strong> Abrir sitio<\/strong>. Una nueva pesta\u00f1a del navegador mostrar\u00e1 la p\u00e1gina de inicio de tu sitio de 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=\"P\u00e1gina de inicio de WordPress.\" width=\"827\" height=\"612\"><figcaption class=\"wp-caption-text\">P\u00e1gina de inicio de WordPress.<\/figcaption><\/figure><\/figure>\n<p>Este es tu blog de WordPress, donde puedes empezar a escribir. Pero para que Python pueda acceder y utilizar la API REST de WordPress, primero debemos configurar el Admin de WordPress.<\/p>\n<p>Ahora haz clic en el bot\u00f3n <strong>WP Admin<\/strong> en la aplicaci\u00f3n DevKinsta, y luego proporciona tu usuario y contrase\u00f1a para acceder al <strong>panel de control<\/strong> <strong>de WordPress<\/strong>:<\/p>\n<figure style=\"text-align: center\">\n<p><figure style=\"width: 357px\" class=\"wp-caption alignnone\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/kinsta.com\/wp-content\/uploads\/2022\/10\/WordPress-admin-dashboard-login-screen.png\" alt=\"Formulario de acceso a WordPress.\" width=\"357\" height=\"385\"><figcaption class=\"wp-caption-text\">Formulario de acceso a WordPress.<\/figcaption><\/figure><\/figure>\n<p>Una vez que hayas iniciado la sesi\u00f3n, ver\u00e1s el <strong>Panel de control<\/strong> <strong>de WordPress<\/strong>:<\/p>\n<figure style=\"text-align: center\">\n<p><figure style=\"width: 989px\" class=\"wp-caption alignnone\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/kinsta.com\/wp-content\/uploads\/2022\/10\/welcome-to-WordPress-admin-screen.png\" alt=\"P\u00e1gina del panel de control de WordPress.\" width=\"989\" height=\"612\"><figcaption class=\"wp-caption-text\">P\u00e1gina del panel de control de WordPress.<\/figcaption><\/figure><\/figure>\n<p>WordPress utiliza la autenticaci\u00f3n por cookies como m\u00e9todo est\u00e1ndar. Pero si quieres controlarlo mediante la API REST, debes autenticarte con una t\u00e9cnica que te permita acceder a la API REST de WordPress.<\/p>\n<p>Para ello, utilizar\u00e1s <a href=\"https:\/\/make.wordpress.org\/core\/2020\/11\/05\/application-passwords-integration-guide\/\" target=\"_blank\" rel=\"noopener noreferrer\">contrase\u00f1as de aplicaci\u00f3n<\/a>. Se trata de cadenas de 24 caracteres de longitud que WordPress genera y asocia a un perfil de usuario que tiene permiso para gestionar su sitio web.<\/p>\n<p>Para utilizar las Contrase\u00f1as de Aplicaci\u00f3n, haz clic en el men\u00fa <strong>Plugin<\/strong> del Panel de Control, y luego busca el plugin con el mismo nombre. A continuaci\u00f3n, instala y activa el plugin de 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=\"Plugin Application Passwords para WordPress.\" width=\"752\" height=\"445\"><figcaption class=\"wp-caption-text\">Plugin Application Passwords para WordPress.<\/figcaption><\/figure><\/figure>\n<p>Para comenzar a crear tu contrase\u00f1a de aplicaci\u00f3n, empieza por expandir el men\u00fa <strong>Usuarios<\/strong> y hacer clic en <strong>Todos los usuarios<\/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=\"Men\u00fa Usuarios expandido.\" width=\"272\" height=\"205\"><figcaption class=\"wp-caption-text\">Men\u00fa Usuarios expandido.<\/figcaption><\/figure><\/figure>\n<p>Ahora, haz clic en <strong>Editar<\/strong> debajo de tu nombre de usuario administrador:<\/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=\"Interfaz WP-Admin de WordPress. \" width=\"1015\" height=\"471\"><figcaption class=\"wp-caption-text\">Interfaz WP-Admin de WordPress.<\/figcaption><\/figure><\/figure>\n<p>Despl\u00e1zate hacia abajo en la p\u00e1gina <strong>Editar<\/strong> <strong>usuario<\/strong> y encuentra la secci\u00f3n <strong>Contrase\u00f1as de<\/strong>\u00a0<strong>aplicaci\u00f3n<\/strong>. Aqu\u00ed, proporciona un nombre para la Contrase\u00f1a de la Aplicaci\u00f3n, que utilizar\u00e1s m\u00e1s tarde para autenticar las peticiones de tu aplicaci\u00f3n Python y consumir la 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=\"P\u00e1gina de Application Passwords\" width=\"761\" height=\"362\"><figcaption class=\"wp-caption-text\">P\u00e1gina de Application Passwords<\/figcaption><\/figure><\/figure>\n<p>Haz clic en <strong>A\u00f1adir nueva<\/strong> <strong>contrase\u00f1a<\/strong> de aplicaci\u00f3n para que WordPress pueda generar una contrase\u00f1a aleatoria de 24 caracteres para ti:<\/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=\"P\u00e1gina de la nueva contrase\u00f1a de la aplicaci\u00f3n.\" width=\"771\" height=\"110\"><figcaption class=\"wp-caption-text\">P\u00e1gina de la nueva contrase\u00f1a de la aplicaci\u00f3n.<\/figcaption><\/figure><\/figure>\n<p>A continuaci\u00f3n, copia esta contrase\u00f1a y gu\u00e1rdala en un lugar seguro para utilizarla m\u00e1s tarde. Recuerda que no podr\u00e1s recuperar esta contrase\u00f1a una vez que cierres esta p\u00e1gina.<\/p>\n<p>Por \u00faltimo, debes configurar los enlaces permanentes. WordPress te permite crear una estructura de URL personalizada para tus enlaces permanentes y archivos. Vamos a cambiarlo para que se pueda acceder a una entrada de WordPress titulada, por ejemplo, \u00abTu primer sitio web de WordPress\u00bb a trav\u00e9s de la intuitiva URL https:\/\/your-website.local:port\/your-first-wordpress-website\/. Este enfoque aporta varias ventajas, como la mejora de la usabilidad y la est\u00e9tica.<\/p>\n<p>Para configurar los enlaces permanentes, despliega la secci\u00f3n <strong>Ajustes<\/strong>\u00a0y haz clic en el men\u00fa <strong>Enlaces permanentes<\/strong>. Aqu\u00ed, cambia la <strong>Ajustes comunes<\/strong>\u00a0por el <strong>N<\/strong><strong>ombre de la entrada<\/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=\"Changing WordPress permalink settings. \"><\/figure>\n<p>Configurar la estructura de enlaces permanentes utilizando la estructura de <strong>Nombre de la entrada\u00a0<\/strong>tambi\u00e9n es necesario porque nos permitir\u00e1 recuperar las publicaciones m\u00e1s adelante en nuestro c\u00f3digo Python utilizando el formato JSON. De lo contrario, se producir\u00e1 un error de decodificaci\u00f3n JSON.<\/p>\n<h2>C\u00f3mo controlar WordPress desde Python<\/h2>\n<p>WordPress est\u00e1 escrito en PHP, pero tiene una API REST que permite a otros lenguajes de programaci\u00f3n, sitios y aplicaciones consumir su contenido. La exposici\u00f3n del contenido de WordPress en la arquitectura REST hace que est\u00e9 disponible en formato JSON. Por tanto, otros servicios pueden integrarse con WordPress y realizar operaciones de Crear, Leer, Actualizar y Borrar (CRUD) sin necesidad de una instalaci\u00f3n local de WordPress.<\/p>\n<p>A continuaci\u00f3n, construir\u00e1s una sencilla aplicaci\u00f3n en Python para ver c\u00f3mo puedes utilizar la API REST de WordPress para crear, recuperar, actualizar y eliminar entradas.<\/p>\n<p>Crea un nuevo directorio para tu nuevo y sencillo proyecto de Python y ll\u00e1malo algo as\u00ed como <code>PythonWordPress<\/code>:<\/p>\n<pre><code class=\"language-bash\">..\/PythonWordPress<\/code><\/pre>\n<p>Ahora, crear\u00e1s un entorno virtual para tu proyecto, lo que te permitir\u00e1 mantener un conjunto independiente de paquetes Python instalados, aisl\u00e1ndolos de los directorios de tu sistema y evitando conflictos de versiones. Crea un entorno virtual ejecutando el comando <code>venv<\/code>:<\/p>\n<pre><code class=\"language-bash\">python3 -m venv .venv<\/code><\/pre>\n<p>Ahora, ejecuta un comando para activar el entorno virtual <strong>.venv<\/strong>. Este comando var\u00eda seg\u00fan el 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>A continuaci\u00f3n, guarda la configuraci\u00f3n relacionada con tu cuenta de WordPress. Para separar la configuraci\u00f3n de la aplicaci\u00f3n de tu c\u00f3digo Python, crea un archivo <strong>.env<\/strong> en el directorio de tu proyecto, y a\u00f1ade estas variables de entorno al archivo:<\/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>Afortunadamente, leer los datos anteriores de una aplicaci\u00f3n Python es f\u00e1cil. Puedes instalar el paquete <strong>Python-dotenv<\/strong> para que tu aplicaci\u00f3n pueda leer la configuraci\u00f3n desde el archivo <strong>.env<\/strong>:<\/p>\n<pre><code class=\"language-bash\">pip install python-dotenv<\/code><\/pre>\n<p>A continuaci\u00f3n, instala <strong>aiohttp<\/strong>, un cliente\/servidor HTTP as\u00edncrono para Python:<\/p>\n<pre><code class=\"language-bash\">pip install aiohttp<\/code><\/pre>\n<p>Ahora a\u00f1ade un archivo llamado <strong>app.py<\/strong> con el siguiente c\u00f3digo:<\/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>El c\u00f3digo anterior muestra un men\u00fa de consola y te pide que introduzcas un n\u00famero para elegir una opci\u00f3n. A continuaci\u00f3n, ampliar\u00e1s este proyecto e implementar\u00e1s el c\u00f3digo que te permite listar todas las entradas y recuperar una entrada espec\u00edfica utilizando su id de entrada.<\/p>\n<h2>Obtener entradas en c\u00f3digo<\/h2>\n<p>Para interactuar con la API REST de WordPress, debes crear un nuevo archivo Python. Crea un archivo llamado <strong>wordpress_api_helper.py<\/strong> con el siguiente contenido:<\/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>F\u00edjate en el uso de la biblioteca <strong>aiohttp<\/strong> de arriba. Los lenguajes modernos proporcionan sintaxis y herramientas que permiten la programaci\u00f3n as\u00edncrona. Esto aumenta la capacidad de respuesta de la aplicaci\u00f3n al permitir que el programa realice tareas junto con operaciones como <a href=\"https:\/\/kinsta.com\/es\/blog\/que-es-una-peticion-http\/\" target=\"_blank\" rel=\"noopener noreferrer\">peticiones web<\/a>, operaciones de base de datos y E\/S de disco. Python ofrece <a href=\"https:\/\/docs.python.org\/3\/library\/asyncio.html\" target=\"_blank\" rel=\"noopener noreferrer\">asyncio<\/a> como base para su marco de programaci\u00f3n as\u00edncrona, y la biblioteca <a href=\"https:\/\/docs.aiohttp.org\/en\/stable\/\" target=\"_blank\" rel=\"noopener noreferrer\">aiohttp<\/a> est\u00e1 construida sobre<strong> asyncio<\/strong> para aportar acceso as\u00edncrono a las operaciones Cliente\/Servidor HTTP realizadas en Python.<\/p>\n<p>La funci\u00f3n <code>ClientSession<\/code> anterior se ejecuta de forma as\u00edncrona y devuelve un objeto <code>session<\/code>, que nuestro programa utiliza para realizar una operaci\u00f3n HTTP GET contra el punto final <code>\/wp-json\/wp\/v2\/posts<\/code>. La \u00fanica diferencia entre una solicitud para recuperar todos los puestos y una solicitud para uno en concreto es que esta \u00faltima solicitud pasa un par\u00e1metro <code>post id<\/code> en la ruta URL: <code>\/wp-json\/wp\/v2\/posts\/{id}<\/code>.<\/p>\n<p>Ahora, abre el archivo <strong>app.py<\/strong> y a\u00f1ade la sentencia <code>import<\/code>:<\/p>\n<pre><code class=\"language-python\">from wordpress_api_helper import get_all_posts, get_post<\/code><\/pre>\n<p>A continuaci\u00f3n, modifica la funci\u00f3n <code>main<\/code> para llamar a las funciones <code>get_all_posts<\/code> y <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>A continuaci\u00f3n, ejecuta la aplicaci\u00f3n:<\/p>\n<pre><code class=\"language-bash\">python app.py<\/code><\/pre>\n<p>Entonces ver\u00e1s el men\u00fa de la aplicaci\u00f3n:<\/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=\"Men\u00fa de la aplicaci\u00f3n Python.\" width=\"804\" height=\"114\"><figcaption class=\"wp-caption-text\">Men\u00fa de la aplicaci\u00f3n Python.<\/figcaption><\/figure><\/figure>\n<p>Ahora prueba la opci\u00f3n 1 para ver la lista de entradas que recupera tu aplicaci\u00f3n Python, y la opci\u00f3n 2 para seleccionar una entrada:<\/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=\"La aplicaci\u00f3n Python muestra la lista de posts y un \u00fanico post seleccionado por el usuario.\" width=\"670\" height=\"624\"><figcaption class=\"wp-caption-text\">La aplicaci\u00f3n Python muestra la lista de posts y un \u00fanico post seleccionado por el usuario.<\/figcaption><\/figure><\/figure>\n<h2>Crear entradas en c\u00f3digo<\/h2>\n<p>Para crear una entrada de WordPress en Python, empieza por abrir el archivo <strong>wordpress_api_helper.py<\/strong> y a\u00f1ade la funci\u00f3n <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>Este c\u00f3digo llama a la funci\u00f3n <code>post<\/code> en el objeto <code>session<\/code>, pasando el par\u00e1metro <code>auth<\/code> junto a la URL del punto final de la API REST. El objeto <code>auth<\/code> contiene ahora el usuario de WordPress y la contrase\u00f1a que creaste con las contrase\u00f1as de la aplicaci\u00f3n. Ahora, abre el archivo <strong>app.py<\/strong> y a\u00f1ade c\u00f3digo para importar <code>create_post<\/code> y el men\u00fa:<\/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>A continuaci\u00f3n, a\u00f1ade una tercera opci\u00f3n de men\u00fa:<\/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>A continuaci\u00f3n, ejecuta la aplicaci\u00f3n y prueba la opci\u00f3n 3, pasando un t\u00edtulo y un contenido para crear una nueva entrada en 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=\"Aplicaci\u00f3n Python mostrando el post de WordPress reci\u00e9n creado.\" width=\"671\" height=\"335\"><figcaption class=\"wp-caption-text\">Aplicaci\u00f3n Python mostrando el post de WordPress reci\u00e9n creado.<\/figcaption><\/figure><\/figure>\n<p>Si vuelves a elegir la opci\u00f3n 1, te devolver\u00e1 el id y el t\u00edtulo de la entrada reci\u00e9n a\u00f1adida:<\/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=\"La aplicaci\u00f3n Python devuelve el t\u00edtulo y el id del nuevo post.\" width=\"672\" height=\"333\"><figcaption class=\"wp-caption-text\">La aplicaci\u00f3n Python devuelve el t\u00edtulo y el id del nuevo post.<\/figcaption><\/figure><\/figure>\n<p>Tambi\u00e9n puedes abrir tu sitio web de WordPress para ver la nueva entrada:<\/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=\"Imagen del navegador del nuevo post de WordPress.\" width=\"754\" height=\"600\"><figcaption class=\"wp-caption-text\">Imagen del navegador del nuevo post de WordPress.<\/figcaption><\/figure><\/figure>\n<h2>Actualizar entradas en c\u00f3digo<\/h2>\n<p>Abre el archivo <strong>wordpress_api_helper.py<\/strong> y a\u00f1ade la funci\u00f3n <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>A continuaci\u00f3n, abre el archivo <strong>app.py<\/strong> y a\u00f1ade el c\u00f3digo para importar <code>update_post<\/code> y el men\u00fa:<\/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>A continuaci\u00f3n, a\u00f1ade una cuarta opci\u00f3n de men\u00fa:<\/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>A continuaci\u00f3n, ejecuta la aplicaci\u00f3n y prueba la opci\u00f3n 4, pasando un id de entrada, un t\u00edtulo y un contenido para actualizar una entrada existente.<\/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=\"Aplicaci\u00f3n Python mostrando el men\u00fa actualizado.\" width=\"670\" height=\"338\"><figcaption class=\"wp-caption-text\">Aplicaci\u00f3n Python mostrando el men\u00fa actualizado.<\/figcaption><\/figure><\/figure>\n<p>Si eliges la opci\u00f3n 2 y pasas el id de la entrada actualizada, te devolver\u00e1 los detalles de la nueva entrada a\u00f1adida:<\/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=\"Aplicaci\u00f3n Python mostrando la entrada actualizada.\" width=\"673\" height=\"318\"><figcaption class=\"wp-caption-text\">Aplicaci\u00f3n Python mostrando la entrada actualizada.<\/figcaption><\/figure><\/figure>\n<h2>Borrar entradas en c\u00f3digo<\/h2>\n<p>Puedes pasar el id de la entrada a la API REST para eliminar una entrada.<\/p>\n<p>Abre el archivo <strong>wordpress_api_helper.py<\/strong> y a\u00f1ade la funci\u00f3n <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>Ahora abre el archivo <strong>app.py<\/strong> y a\u00f1ade el c\u00f3digo para importar <code>delete_post<\/code> y el men\u00fa:<\/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>A continuaci\u00f3n, a\u00f1ade una quinta opci\u00f3n de men\u00fa:<\/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>Ahora ejecuta la aplicaci\u00f3n y prueba la opci\u00f3n 5, pasando un id para eliminar la entrada existente en 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=\"La aplicaci\u00f3n Python muestra la eliminaci\u00f3n del post seleccionado.\" width=\"651\" height=\"120\"><figcaption class=\"wp-caption-text\">La aplicaci\u00f3n Python muestra la eliminaci\u00f3n del post seleccionado.<\/figcaption><\/figure><\/figure>\n<p>Nota: El post eliminado puede seguir apareciendo si ejecutas la opci\u00f3n <strong>Lista de Entradas<\/strong>:<\/p>\n<figure style=\"text-align: center\">\n<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=\"La aplicaci\u00f3n Python muestra la lista de publicaciones originales.\" width=\"671\" height=\"288\"><figcaption class=\"wp-caption-text\">La aplicaci\u00f3n Python muestra la lista de publicaciones originales.<\/figcaption><\/figure>\n<p>La aplicaci\u00f3n Python muestra la lista de publicaciones originales.<\/figure>\n<p>Para confirmar que has eliminado la publicaci\u00f3n, espera unos segundos y vuelve a probar la opci\u00f3n <strong>Listar<\/strong> <strong>publicaciones<\/strong>. \u00a1Y ya est\u00e1!<\/p>\n<h2>Resumen<\/h2>\n<p>Gracias a la API REST de WordPress y a las librer\u00edas cliente HTTP de Python, las aplicaciones de Python y WordPress pueden asociarse y hablar entre s\u00ed. La ventaja de la API REST es que te permite manejar WordPress de forma remota desde una aplicaci\u00f3n de Python, donde el potente lenguaje de Python permite la creaci\u00f3n automatizada de contenido que siga la estructura y frecuencia que desees.<\/p>\n<p>DevKinsta hace que crear y desarrollar un sitio local de WordPress sea r\u00e1pido y f\u00e1cil. Proporciona un entorno local para el desarrollo de temas y plugins de WordPress y ofrece un modelo de despliegue simplificado gracias a su modelo de instalaci\u00f3n aut\u00f3nomo basado en Docker.<\/p>\n<p>\u00bfCu\u00e1l es tu experiencia trabajando con Python y WordPress?<\/p>\n<p><em>Cuando est\u00e9s preparado para ampliar esa experiencia, puedes leer <a href=\"https:\/\/kinsta.com\/es\/blog\/rest-api-de-wordpress\/\" target=\"_blank\" rel=\"noopener noreferrer\">La gu\u00eda completa de los fundamentos de API REST de WordPress<\/a><\/em> <em>para explorar otras posibilidades.<\/em><\/p>\n","protected":false},"excerpt":{"rendered":"<p>WordPress se ha convertido en el sistema de gesti\u00f3n de contenidos (CMS) m\u00e1s utilizado debido en gran medida a su interfaz de programaci\u00f3n de aplicaciones (API). &#8230;<\/p>\n","protected":false},"author":117,"featured_media":58523,"comment_status":"open","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"_kinsta_gated_content":false,"_kinsta_gated_content_redirect":"","footnotes":""},"tags":[822,414],"topic":[1281],"class_list":["post-58522","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","tag-python","tag-webdev","topic-devkinsta"],"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>Perfecciona Tus Conocimientos de Python Conectando Tu Aplicaci\u00f3n con WordPress<\/title>\n<meta name=\"description\" content=\"Aprende c\u00f3mo las aplicaciones de Python y WordPress pueden conectarse y comunicarse entre s\u00ed utilizando la API REST de WordPress y las bibliotecas de cliente HTTP de Python.\" \/>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/kinsta.com\/es\/blog\/python-wordpress\/\" \/>\n<meta property=\"og:locale\" content=\"es_ES\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Perfecciona Tus Conocimientos de Python Conectando Tu Aplicaci\u00f3n con WordPress\" \/>\n<meta property=\"og:description\" content=\"Aprende c\u00f3mo las aplicaciones de Python y WordPress pueden conectarse y comunicarse entre s\u00ed utilizando la API REST de WordPress y las bibliotecas de cliente HTTP de Python.\" \/>\n<meta property=\"og:url\" content=\"https:\/\/kinsta.com\/es\/blog\/python-wordpress\/\" \/>\n<meta property=\"og:site_name\" content=\"Kinsta\u00ae\" \/>\n<meta property=\"article:publisher\" content=\"https:\/\/www.facebook.com\/kinsta.es\/\" \/>\n<meta property=\"article:published_time\" content=\"2022-10-24T08:16:49+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2023-08-21T08:24:34+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/kinsta.com\/es\/wp-content\/uploads\/sites\/8\/2022\/10\/python-wordpress.png\" \/>\n\t<meta property=\"og:image:width\" content=\"1460\" \/>\n\t<meta property=\"og:image:height\" content=\"730\" \/>\n\t<meta property=\"og:image:type\" content=\"image\/png\" \/>\n<meta name=\"author\" content=\"Salman Ravoof\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:description\" content=\"Aprende c\u00f3mo las aplicaciones de Python y WordPress pueden conectarse y comunicarse entre s\u00ed utilizando la API REST de WordPress y las bibliotecas de cliente HTTP de Python.\" \/>\n<meta name=\"twitter:image\" content=\"https:\/\/kinsta.com\/es\/wp-content\/uploads\/sites\/8\/2022\/10\/python-wordpress.png\" \/>\n<meta name=\"twitter:creator\" content=\"@salmanravoof\" \/>\n<meta name=\"twitter:site\" content=\"@Kinsta_ES\" \/>\n<meta name=\"twitter:label1\" content=\"Escrito por\" \/>\n\t<meta name=\"twitter:data1\" content=\"Salman Ravoof\" \/>\n\t<meta name=\"twitter:label2\" content=\"Tiempo de lectura\" \/>\n\t<meta name=\"twitter:data2\" content=\"17 minutos\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\/\/kinsta.com\/es\/blog\/python-wordpress\/#article\",\"isPartOf\":{\"@id\":\"https:\/\/kinsta.com\/es\/blog\/python-wordpress\/\"},\"author\":{\"name\":\"Salman Ravoof\",\"@id\":\"https:\/\/kinsta.com\/es\/#\/schema\/person\/9cafd2eedd617e640eeea4cf3a5fd987\"},\"headline\":\"Perfecciona Tus Conocimientos de Python Conectando Tu Aplicaci\u00f3n con WordPress\",\"datePublished\":\"2022-10-24T08:16:49+00:00\",\"dateModified\":\"2023-08-21T08:24:34+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\/\/kinsta.com\/es\/blog\/python-wordpress\/\"},\"wordCount\":2479,\"commentCount\":0,\"publisher\":{\"@id\":\"https:\/\/kinsta.com\/es\/#organization\"},\"image\":{\"@id\":\"https:\/\/kinsta.com\/es\/blog\/python-wordpress\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/kinsta.com\/es\/wp-content\/uploads\/sites\/8\/2022\/10\/python-wordpress.png\",\"keywords\":[\"python\",\"webdev\"],\"inLanguage\":\"es\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\/\/kinsta.com\/es\/blog\/python-wordpress\/#respond\"]}]},{\"@type\":\"WebPage\",\"@id\":\"https:\/\/kinsta.com\/es\/blog\/python-wordpress\/\",\"url\":\"https:\/\/kinsta.com\/es\/blog\/python-wordpress\/\",\"name\":\"Perfecciona Tus Conocimientos de Python Conectando Tu Aplicaci\u00f3n con WordPress\",\"isPartOf\":{\"@id\":\"https:\/\/kinsta.com\/es\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\/\/kinsta.com\/es\/blog\/python-wordpress\/#primaryimage\"},\"image\":{\"@id\":\"https:\/\/kinsta.com\/es\/blog\/python-wordpress\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/kinsta.com\/es\/wp-content\/uploads\/sites\/8\/2022\/10\/python-wordpress.png\",\"datePublished\":\"2022-10-24T08:16:49+00:00\",\"dateModified\":\"2023-08-21T08:24:34+00:00\",\"description\":\"Aprende c\u00f3mo las aplicaciones de Python y WordPress pueden conectarse y comunicarse entre s\u00ed utilizando la API REST de WordPress y las bibliotecas de cliente HTTP de Python.\",\"breadcrumb\":{\"@id\":\"https:\/\/kinsta.com\/es\/blog\/python-wordpress\/#breadcrumb\"},\"inLanguage\":\"es\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/kinsta.com\/es\/blog\/python-wordpress\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"es\",\"@id\":\"https:\/\/kinsta.com\/es\/blog\/python-wordpress\/#primaryimage\",\"url\":\"https:\/\/kinsta.com\/es\/wp-content\/uploads\/sites\/8\/2022\/10\/python-wordpress.png\",\"contentUrl\":\"https:\/\/kinsta.com\/es\/wp-content\/uploads\/sites\/8\/2022\/10\/python-wordpress.png\",\"width\":1460,\"height\":730},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/kinsta.com\/es\/blog\/python-wordpress\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\/\/kinsta.com\/es\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"DevKinsta\",\"item\":\"https:\/\/kinsta.com\/es\/secciones\/devkinsta\/\"},{\"@type\":\"ListItem\",\"position\":3,\"name\":\"Perfecciona Tus Conocimientos de Python Conectando Tu Aplicaci\u00f3n con WordPress\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\/\/kinsta.com\/es\/#website\",\"url\":\"https:\/\/kinsta.com\/es\/\",\"name\":\"Kinsta\u00ae\",\"description\":\"Soluciones de alojamiento premium, r\u00e1pidas y seguras\",\"publisher\":{\"@id\":\"https:\/\/kinsta.com\/es\/#organization\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\/\/kinsta.com\/es\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"es\"},{\"@type\":\"Organization\",\"@id\":\"https:\/\/kinsta.com\/es\/#organization\",\"name\":\"Kinsta\",\"url\":\"https:\/\/kinsta.com\/es\/\",\"logo\":{\"@type\":\"ImageObject\",\"inLanguage\":\"es\",\"@id\":\"https:\/\/kinsta.com\/es\/#\/schema\/logo\/image\/\",\"url\":\"https:\/\/kinsta.com\/es\/wp-content\/uploads\/sites\/8\/2023\/12\/kinsta-logo.jpeg\",\"contentUrl\":\"https:\/\/kinsta.com\/es\/wp-content\/uploads\/sites\/8\/2023\/12\/kinsta-logo.jpeg\",\"width\":500,\"height\":500,\"caption\":\"Kinsta\"},\"image\":{\"@id\":\"https:\/\/kinsta.com\/es\/#\/schema\/logo\/image\/\"},\"sameAs\":[\"https:\/\/www.facebook.com\/kinsta.es\/\",\"https:\/\/x.com\/Kinsta_ES\",\"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\/es\/#\/schema\/person\/9cafd2eedd617e640eeea4cf3a5fd987\",\"name\":\"Salman Ravoof\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"es\",\"@id\":\"https:\/\/kinsta.com\/es\/#\/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\/es\/blog\/author\/salmanravoof\/\"}]}<\/script>\n<!-- \/ Yoast SEO Premium plugin. -->","yoast_head_json":{"title":"Perfecciona Tus Conocimientos de Python Conectando Tu Aplicaci\u00f3n con WordPress","description":"Aprende c\u00f3mo las aplicaciones de Python y WordPress pueden conectarse y comunicarse entre s\u00ed utilizando la API REST de WordPress y las bibliotecas de cliente HTTP de Python.","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/kinsta.com\/es\/blog\/python-wordpress\/","og_locale":"es_ES","og_type":"article","og_title":"Perfecciona Tus Conocimientos de Python Conectando Tu Aplicaci\u00f3n con WordPress","og_description":"Aprende c\u00f3mo las aplicaciones de Python y WordPress pueden conectarse y comunicarse entre s\u00ed utilizando la API REST de WordPress y las bibliotecas de cliente HTTP de Python.","og_url":"https:\/\/kinsta.com\/es\/blog\/python-wordpress\/","og_site_name":"Kinsta\u00ae","article_publisher":"https:\/\/www.facebook.com\/kinsta.es\/","article_published_time":"2022-10-24T08:16:49+00:00","article_modified_time":"2023-08-21T08:24:34+00:00","og_image":[{"width":1460,"height":730,"url":"https:\/\/kinsta.com\/es\/wp-content\/uploads\/sites\/8\/2022\/10\/python-wordpress.png","type":"image\/png"}],"author":"Salman Ravoof","twitter_card":"summary_large_image","twitter_description":"Aprende c\u00f3mo las aplicaciones de Python y WordPress pueden conectarse y comunicarse entre s\u00ed utilizando la API REST de WordPress y las bibliotecas de cliente HTTP de Python.","twitter_image":"https:\/\/kinsta.com\/es\/wp-content\/uploads\/sites\/8\/2022\/10\/python-wordpress.png","twitter_creator":"@salmanravoof","twitter_site":"@Kinsta_ES","twitter_misc":{"Escrito por":"Salman Ravoof","Tiempo de lectura":"17 minutos"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/kinsta.com\/es\/blog\/python-wordpress\/#article","isPartOf":{"@id":"https:\/\/kinsta.com\/es\/blog\/python-wordpress\/"},"author":{"name":"Salman Ravoof","@id":"https:\/\/kinsta.com\/es\/#\/schema\/person\/9cafd2eedd617e640eeea4cf3a5fd987"},"headline":"Perfecciona Tus Conocimientos de Python Conectando Tu Aplicaci\u00f3n con WordPress","datePublished":"2022-10-24T08:16:49+00:00","dateModified":"2023-08-21T08:24:34+00:00","mainEntityOfPage":{"@id":"https:\/\/kinsta.com\/es\/blog\/python-wordpress\/"},"wordCount":2479,"commentCount":0,"publisher":{"@id":"https:\/\/kinsta.com\/es\/#organization"},"image":{"@id":"https:\/\/kinsta.com\/es\/blog\/python-wordpress\/#primaryimage"},"thumbnailUrl":"https:\/\/kinsta.com\/es\/wp-content\/uploads\/sites\/8\/2022\/10\/python-wordpress.png","keywords":["python","webdev"],"inLanguage":"es","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/kinsta.com\/es\/blog\/python-wordpress\/#respond"]}]},{"@type":"WebPage","@id":"https:\/\/kinsta.com\/es\/blog\/python-wordpress\/","url":"https:\/\/kinsta.com\/es\/blog\/python-wordpress\/","name":"Perfecciona Tus Conocimientos de Python Conectando Tu Aplicaci\u00f3n con WordPress","isPartOf":{"@id":"https:\/\/kinsta.com\/es\/#website"},"primaryImageOfPage":{"@id":"https:\/\/kinsta.com\/es\/blog\/python-wordpress\/#primaryimage"},"image":{"@id":"https:\/\/kinsta.com\/es\/blog\/python-wordpress\/#primaryimage"},"thumbnailUrl":"https:\/\/kinsta.com\/es\/wp-content\/uploads\/sites\/8\/2022\/10\/python-wordpress.png","datePublished":"2022-10-24T08:16:49+00:00","dateModified":"2023-08-21T08:24:34+00:00","description":"Aprende c\u00f3mo las aplicaciones de Python y WordPress pueden conectarse y comunicarse entre s\u00ed utilizando la API REST de WordPress y las bibliotecas de cliente HTTP de Python.","breadcrumb":{"@id":"https:\/\/kinsta.com\/es\/blog\/python-wordpress\/#breadcrumb"},"inLanguage":"es","potentialAction":[{"@type":"ReadAction","target":["https:\/\/kinsta.com\/es\/blog\/python-wordpress\/"]}]},{"@type":"ImageObject","inLanguage":"es","@id":"https:\/\/kinsta.com\/es\/blog\/python-wordpress\/#primaryimage","url":"https:\/\/kinsta.com\/es\/wp-content\/uploads\/sites\/8\/2022\/10\/python-wordpress.png","contentUrl":"https:\/\/kinsta.com\/es\/wp-content\/uploads\/sites\/8\/2022\/10\/python-wordpress.png","width":1460,"height":730},{"@type":"BreadcrumbList","@id":"https:\/\/kinsta.com\/es\/blog\/python-wordpress\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/kinsta.com\/es\/"},{"@type":"ListItem","position":2,"name":"DevKinsta","item":"https:\/\/kinsta.com\/es\/secciones\/devkinsta\/"},{"@type":"ListItem","position":3,"name":"Perfecciona Tus Conocimientos de Python Conectando Tu Aplicaci\u00f3n con WordPress"}]},{"@type":"WebSite","@id":"https:\/\/kinsta.com\/es\/#website","url":"https:\/\/kinsta.com\/es\/","name":"Kinsta\u00ae","description":"Soluciones de alojamiento premium, r\u00e1pidas y seguras","publisher":{"@id":"https:\/\/kinsta.com\/es\/#organization"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/kinsta.com\/es\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"es"},{"@type":"Organization","@id":"https:\/\/kinsta.com\/es\/#organization","name":"Kinsta","url":"https:\/\/kinsta.com\/es\/","logo":{"@type":"ImageObject","inLanguage":"es","@id":"https:\/\/kinsta.com\/es\/#\/schema\/logo\/image\/","url":"https:\/\/kinsta.com\/es\/wp-content\/uploads\/sites\/8\/2023\/12\/kinsta-logo.jpeg","contentUrl":"https:\/\/kinsta.com\/es\/wp-content\/uploads\/sites\/8\/2023\/12\/kinsta-logo.jpeg","width":500,"height":500,"caption":"Kinsta"},"image":{"@id":"https:\/\/kinsta.com\/es\/#\/schema\/logo\/image\/"},"sameAs":["https:\/\/www.facebook.com\/kinsta.es\/","https:\/\/x.com\/Kinsta_ES","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\/es\/#\/schema\/person\/9cafd2eedd617e640eeea4cf3a5fd987","name":"Salman Ravoof","image":{"@type":"ImageObject","inLanguage":"es","@id":"https:\/\/kinsta.com\/es\/#\/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\/es\/blog\/author\/salmanravoof\/"}]}},"acf":[],"_links":{"self":[{"href":"https:\/\/kinsta.com\/es\/wp-json\/wp\/v2\/posts\/58522","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/kinsta.com\/es\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/kinsta.com\/es\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/kinsta.com\/es\/wp-json\/wp\/v2\/users\/117"}],"replies":[{"embeddable":true,"href":"https:\/\/kinsta.com\/es\/wp-json\/wp\/v2\/comments?post=58522"}],"version-history":[{"count":14,"href":"https:\/\/kinsta.com\/es\/wp-json\/wp\/v2\/posts\/58522\/revisions"}],"predecessor-version":[{"id":58953,"href":"https:\/\/kinsta.com\/es\/wp-json\/wp\/v2\/posts\/58522\/revisions\/58953"}],"alternate":[{"embeddable":true,"hreflang":"en","title":"English","href":"https:\/\/kinsta.com\/es\/wp-json\/kinsta\/v1\/posts\/58522\/translations\/en"},{"embeddable":true,"hreflang":"it","title":"Italian","href":"https:\/\/kinsta.com\/es\/wp-json\/kinsta\/v1\/posts\/58522\/translations\/it"},{"embeddable":true,"hreflang":"pt","title":"Portuguese","href":"https:\/\/kinsta.com\/es\/wp-json\/kinsta\/v1\/posts\/58522\/translations\/pt"},{"embeddable":true,"hreflang":"fr","title":"French","href":"https:\/\/kinsta.com\/es\/wp-json\/kinsta\/v1\/posts\/58522\/translations\/fr"},{"embeddable":true,"hreflang":"de","title":"German","href":"https:\/\/kinsta.com\/es\/wp-json\/kinsta\/v1\/posts\/58522\/translations\/de"},{"embeddable":true,"hreflang":"ja","title":"Japanese","href":"https:\/\/kinsta.com\/es\/wp-json\/kinsta\/v1\/posts\/58522\/translations\/jp"},{"embeddable":true,"hreflang":"nl","title":"Dutch","href":"https:\/\/kinsta.com\/es\/wp-json\/kinsta\/v1\/posts\/58522\/translations\/nl"},{"embeddable":true,"hreflang":"es","title":"Spanish","href":"https:\/\/kinsta.com\/es\/wp-json\/kinsta\/v1\/posts\/58522\/translations\/es"},{"embeddable":true,"hreflang":"sv","title":"Swedish","href":"https:\/\/kinsta.com\/es\/wp-json\/kinsta\/v1\/posts\/58522\/translations\/se"},{"embeddable":true,"hreflang":"da","title":"Danish","href":"https:\/\/kinsta.com\/es\/wp-json\/kinsta\/v1\/posts\/58522\/translations\/dk"},{"href":"https:\/\/kinsta.com\/es\/wp-json\/kinsta\/v1\/posts\/58522\/tree"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/kinsta.com\/es\/wp-json\/wp\/v2\/media\/58523"}],"wp:attachment":[{"href":"https:\/\/kinsta.com\/es\/wp-json\/wp\/v2\/media?parent=58522"}],"wp:term":[{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/kinsta.com\/es\/wp-json\/wp\/v2\/tags?post=58522"},{"taxonomy":"topic","embeddable":true,"href":"https:\/\/kinsta.com\/es\/wp-json\/wp\/v2\/topic?post=58522"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}