{"id":74497,"date":"2024-04-08T20:25:59","date_gmt":"2024-04-08T18:25:59","guid":{"rendered":"https:\/\/kinsta.com\/es\/?p=74497&#038;preview=true&#038;preview_id=74497"},"modified":"2024-04-11T15:05:36","modified_gmt":"2024-04-11T13:05:36","slug":"wp-rest-api-endpoints-personalizados","status":"publish","type":"post","link":"https:\/\/kinsta.com\/es\/blog\/wp-rest-api-endpoints-personalizados\/","title":{"rendered":"Personalizar WordPress para desarrolladores: desarrollar endpoints de API REST personalizados"},"content":{"rendered":"<p><a href=\"https:\/\/kinsta.com\/es\/blog\/que-es-wordpress\/\">WordPress<\/a> es uno de los <a href=\"https:\/\/kinsta.com\/es\/blog\/sitema-de-gestion-de-contenido\/\">sistemas de gesti\u00f3n de contenidos<\/a> (CMS) m\u00e1s populares del mundo, que ayuda a peque\u00f1as y grandes empresas a establecer y crear diversas formas de contenido web. Pero WordPress ha evolucionado m\u00e1s all\u00e1 de ser s\u00f3lo compatible con el contenido tradicional de un blog, y eso es en gran parte gracias a la API REST de WordPress.<\/p>\n<p>La <a href=\"https:\/\/kinsta.com\/es\/blog\/rest-api-de-wordpress\/\">API REST de WordPress<\/a> conecta WordPress y otras aplicaciones web externas. Facilita una comunicaci\u00f3n m\u00e1s accesible y te ayuda a crear experiencias web inmersivas y atractivas que se integran a la perfecci\u00f3n con la plataforma CMS.<\/p>\n<p>Esta API utiliza endpoints para recuperar y manipular el contenido de WordPress como objetos JSON. Con estos endpoints, puedes crear, leer, actualizar y eliminar (CRUD) contenido de WordPress de forma remota sin acceder a la cuenta de <a href=\"https:\/\/kinsta.com\/es\/blog\/panel-control-administracion-wordpress\/\">administraci\u00f3n de WordPress<\/a>, aportando flexibilidad y ampliando la funcionalidad de WordPress m\u00e1s all\u00e1 de sus caracter\u00edsticas principales.<\/p>\n<p>Esta gu\u00eda explora qu\u00e9 es la API REST de WordPress, sus ventajas, c\u00f3mo ampl\u00eda las capacidades b\u00e1sicas de WordPress y c\u00f3mo crear, registrar y acceder a un endpoint personalizado.<\/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>Requisitos previos<\/h2>\n<p>Para seguir este tutorial, necesitas:<\/p>\n<ul>\n<li>Conocimientos de API REST<\/li>\n<li>Un sitio de WordPress configurado (puedes <a href=\"https:\/\/kinsta.com\/es\/docs\/alojamiento-wordpress\/como-empezar-con-wordpress\/sitio-nuevo\/\">configurar uno f\u00e1cilmente con el panel de MyKinsta<\/a>)<\/li>\n<li>Conocimientos de uso de <a href=\"https:\/\/kinsta.com\/es\/blog\/que-es-wordpress\/\">WordPress<\/a> y <a href=\"https:\/\/kinsta.com\/es\/blog\/que-es-php\/\">PHP<\/a><\/li>\n<\/ul>\n<h2>Comprensi\u00f3n de la API REST de WordPress<\/h2>\n<p>La API REST de WordPress es una potente interfaz que te permite interactuar con los sitios de WordPress mediante programaci\u00f3n utilizando m\u00e9todos <a href=\"https:\/\/kinsta.com\/es\/secciones\/codigos-de-estado-http\/\">HTTP<\/a> est\u00e1ndar.<\/p>\n<p>Sus capacidades predeterminadas incluyen acceder y manipular varios tipos de datos de WordPress, como entradas, p\u00e1ginas, comentarios, usuarios y taxonom\u00edas, en un formato JSON estructurado. Tambi\u00e9n puedes realizar remotamente acciones CRUD sobre el contenido.<\/p>\n<p>Sin embargo, el verdadero valor de la API REST de WordPress reside en su extensibilidad a trav\u00e9s de endpoints personalizados. Puedes crear endpoints personalizados para adaptar la API a necesidades espec\u00edficas, como integrar funcionalidades adicionales, servicios de terceros o estructuras de datos \u00fanicas. Esta flexibilidad te permite crear aplicaciones altamente personalizadas y ricas en funciones sobre WordPress.<\/p>\n<h2>C\u00f3mo planificar tu endpoint personalizado de la API<\/h2>\n<p>Planificar la estructura y la finalidad de tus endpoints personalizados es clave para un desarrollo eficaz de la API. Los endpoints personalizados adaptados a tus necesidades espec\u00edficas requieren una cuidadosa consideraci\u00f3n para garantizar una funcionalidad \u00f3ptima. La planificaci\u00f3n estrat\u00e9gica facilita la escalabilidad y la adaptabilidad, protegiendo a futuro los endpoints para adaptarse a la evoluci\u00f3n de los requisitos empresariales.<\/p>\n<p>Planificaci\u00f3n los endpoints personalizados de tu API antes de la implementaci\u00f3n:<\/p>\n<ul>\n<li><strong>Claridad de la funci\u00f3n del<\/strong> <strong>endpoint<\/strong> \u2014 La planificaci\u00f3n de endpoint aclara la funci\u00f3n espec\u00edfica del endpoint, sus tipos de datos esperados y su uso.<\/li>\n<li><strong>Coherencia y eficacia de desarrollo<\/strong> \u2014 La planificaci\u00f3n tambi\u00e9n garantiza la coherencia en el uso de los endpoints, los tipos de respuesta y el formato, lo que mejora la interacci\u00f3n con la API. Adem\u00e1s, conocer el prop\u00f3sito de la API permite una implementaci\u00f3n adecuada, reduciendo el tiempo de desarrollo y el riesgo de errores.<\/li>\n<li><strong>Escalabilidad y adaptabilidad<\/strong> \u2014 Definir las necesidades de tu endpoint ayuda a prepararlo para el futuro, para que se adapte a las necesidades y requisitos cambiantes de la empresa sin requerir un redise\u00f1o completo.<\/li>\n<li><strong>Seguridad<\/strong> \u2014 Una planificaci\u00f3n adecuada del endpoint ayuda a determinar la necesidad de autenticaci\u00f3n para acceder a los datos o manipularlos. Obtener contenido a trav\u00e9s de la API a veces no implica autenticaci\u00f3n del usuario. A\u00fan as\u00ed, para el contenido que contenga datos sensibles o no autorizados, es esencial definir los requisitos de seguridad e implantar medidas como la autorizaci\u00f3n y los controles de acceso para ayudar a garantizar la seguridad de los datos.<\/li>\n<\/ul>\n<p>Las siguientes secciones pr\u00e1cticas explican c\u00f3mo puedes crear un endpoint personalizado que est\u00e9 disponible en <code>site-domain\/wp-json\/custom\/v2\/testimonials<\/code> para recuperar testimonios de clientes de un sitio de base de datos de WordPress.<\/p>\n<p>Tras enviar una solicitud, el endpoint devuelve un objeto JSON que contiene informaci\u00f3n sobre los testimonios de tu sitio de WordPress, tal y como se define en tu funci\u00f3n de devoluci\u00f3n de llamada.<\/p>\n<p>\u00a1Manos a la obra!<\/p>\n<h2>Crea un tipo de entrada personalizado para tu endpoint<\/h2>\n<p>En primer lugar, tienes que crear un tipo de entrada personalizado.<\/p>\n<ol start=\"1\">\n<li>Ve al <strong>Editor de Archivos de Temas<\/strong> desde la secci\u00f3n <strong>Apariencia<\/strong> de tu panel de <a href=\"https:\/\/kinsta.com\/es\/blog\/panel-control-administracion-wordpress\/\">Administraci\u00f3n de WordPress<\/a>.<\/li>\n<li>Abre el archivo <strong>function.php<\/strong> de tu tema y a\u00f1ade el siguiente c\u00f3digo:\n<pre><code class=\"language-php\">function create_custom_testimonial_type() {\n    register_post_type('testimonials', array(\n        'labels' =&gt; array(\n            'name' =&gt; 'Testimonials',\n            'singular_name' =&gt; 'Testimonial',\n        ),\n        'public' =&gt; true,\n        'has_archive' =&gt; true,\n        'show_in_rest' =&gt; true, \/\/ This enables REST API support\n    ));\n}\nadd_action('init', 'create_custom_testimonial_type');<\/code><\/pre>\n<p>Este c\u00f3digo crea un <a href=\"https:\/\/developer.wordpress.org\/reference\/functions\/register_post_type\/\" target=\"_blank\" rel=\"noopener noreferrer\">tipo de entrada<\/a> personalizada \u00abtestimonios\u00bb y activa la compatibilidad con la API REST de WordPress (<code>'show_in_rest' =&gt; true<\/code>). El c\u00f3digo <code><a href=\"https:\/\/developer.wordpress.org\/reference\/functions\/add_action\/\" target=\"_blank\" rel=\"noopener noreferrer\">add_action hook<\/a><\/code> llama a la funci\u00f3n de callback <code>create_testimonial_type<\/code> y la lanza durante la ejecuci\u00f3n.<\/p>\n<p>Puedes personalizar las etiquetas y los argumentos elimin\u00e1ndolos o a\u00f1adi\u00e9ndolos para adaptarlos a tus necesidades.<\/li>\n<li>Haz clic en <strong>Actualizar archivo<\/strong> para guardar los cambios.\n<figure style=\"width: 1001px\" class=\"wp-caption alignnone\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/kinsta.com\/wp-content\/uploads\/2024\/03\/creating-custom-testimonial-post-type.jpg\" alt=\"Captura de pantalla del c\u00f3digo en el archivo functions.php, creando un tipo de entrada personalizado 'testimonial'\" width=\"1001\" height=\"471\"><figcaption class=\"wp-caption-text\">Creaci\u00f3n de un tipo de entrada <code>custom_testimonial<\/code>.<\/figcaption><\/figure>\n<p>Actualiza el panel de control para ver la opci\u00f3n <strong>Testimonios<\/strong> a\u00f1adida a tu panel de control de WordPress.<\/p>\n<p><figure style=\"width: 1001px\" class=\"wp-caption alignnone\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/kinsta.com\/wp-content\/uploads\/2024\/03\/post-type-created.jpg\" alt=\"Captura de pantalla que muestra el tipo de entrada testimonial reci\u00e9n creado\" width=\"1001\" height=\"471\"><figcaption class=\"wp-caption-text\">El tipo de entrada testimonial reci\u00e9n creado.<\/figcaption><\/figure><\/li>\n<li>Crea una nueva entrada que contenga testimonios haciendo clic en <strong>Testimonios &gt; A\u00f1adir nueva entrada<\/strong>. Puedes utilizar el bloque <strong>P\u00e1rrafo de Cita<\/strong>. Dependiendo de c\u00f3mo presentes tu testimonio, tambi\u00e9n puedes utilizar otros bloques.<\/li>\n<\/ol>\n<p>Aqu\u00ed tienes dos ejemplos de testimonios creados utilizando los bloques P\u00e1rrafo de Cita:<\/p>\n<figure style=\"width: 1001px\" class=\"wp-caption alignnone\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/kinsta.com\/wp-content\/uploads\/2024\/03\/two-testimonials-added.jpg\" alt=\"Captura de pantalla de los dos testimonios creados con el bloque p\u00e1rrafo de cita\" width=\"1001\" height=\"471\"><figcaption class=\"wp-caption-text\">Testimonios reci\u00e9n creados.<\/figcaption><\/figure>\n<h2>Registrar un endpoint personalizado en WordPress<\/h2>\n<p>Registrar un endpoint personalizado hace que est\u00e9 disponible para su consumo a trav\u00e9s de la API REST. Esto implica utilizar la funci\u00f3n <code>register_rest_route<\/code>, llamarla en el hook <code><a href=\"https:\/\/developer.wordpress.org\/reference\/hooks\/rest_api_init\/\" target=\"_blank\" rel=\"noopener noreferrer\">rest_api_init<\/a><\/code> y proporcionar un m\u00e9todo callback que se invocar\u00e1 cuando se llame a la ruta.<\/p>\n<p>Pega el siguiente c\u00f3digo en el archivo <strong>function.php<\/strong> de tu tema:<\/p>\n<pre><code class=\"language-php\">add_action( 'rest_api_init', 'register_testimonial_rest_route' );\n \nfunction register_testimonial_rest_route(){\n\tregister_rest_route(\n\t\t'custom\/v2',\n\t\t'\/testimonials',\n\t\tarray(\n\t\t\t'methods' =&gt; 'GET',\n\t\t\t'callback' =&gt; 'get_testimonials',\n\t\t)\n\t);\n}<\/code><\/pre>\n<p>Este <code><a href=\"https:\/\/developer.wordpress.org\/reference\/functions\/register_rest_route\/\" target=\"_blank\" rel=\"noopener noreferrer\">register_rest_route()<\/a><\/code> recibe tres par\u00e1metros:<\/p>\n<ul>\n<li><strong>Espacio de nombres de ruta<\/strong> (<code>$route_namespace<\/code>) \u2014 Es la primera parte del segmento URL y debe seguir el patr\u00f3n vendor\/version. \u00abVendor\u00bb representa el slug del proveedor o del tema. El espacio de nombres ayuda a diferenciar los endpoints y ayuda a los clientes a ponerse en contacto con el servicio de soporte para tu endpoint personalizado. Este tutorial utiliza el espacio de nombres <code>custom\/v2<\/code>.<\/li>\n<li><strong>La URL base <\/strong> (<code>$route<\/code>) \u2014 Sigue al espacio de nombres y es una URL asignada a un m\u00e9todo. Puedes registrar m\u00e1s de un endpoint para tu ruta. Para este tutorial, utilizas la ruta <code>\/testimonials<\/code>, que indica al endpoint que recupere testimonios.<\/li>\n<li><strong>Las opciones del endpoint (<code>$args<\/code>) \u2014 Aqu\u00ed, se trata de un array que contiene el m\u00e9todo HTTP utilizado al llamar a la ruta y la funci\u00f3n de callback que el endpoint invocar\u00e1 cuando env\u00ede una solicitud. Repasaremos esta funci\u00f3n callback en la siguiente secci\u00f3n.<\/strong><\/li>\n<\/ul>\n<p>Por \u00faltimo, anota la direcci\u00f3n de tu endpoint. El formato de un endpoint es <code>site-address\/wp-json\/namespace\/route<\/code>. As\u00ed que, en este ejemplo, el endpoint ser\u00e1 <code>https:\/\/www.staging.kidspartysanctuary.co.uk\/wp-json\/custom\/v2\/testimonials<\/code>.<\/p>\n<h2>Implementar la funci\u00f3n de callback para el endpoint<\/h2>\n<p>Tras crear el tipo de entrada personalizado y registrar tu endpoint personalizado, el siguiente paso es escribir tu funci\u00f3n callback. Esta funci\u00f3n callback se invoca cada vez que se accede al endpoint.<\/p>\n<ol start=\"1\">\n<li>Declara tu funci\u00f3n callback <code>get_testimonials<\/code> utilizando el siguiente c\u00f3digo:\n<pre><code class=\"language-php\">function get_testimonials(){\n\n}<\/code><\/pre>\n<\/li>\n<li>Inicializa un array vac\u00edo de testimonios para almacenar los datos recuperados de los testimonios de WordPress:\n<pre><code class=\"language-php\">$testimonials = array();<\/code><\/pre>\n<\/li>\n<li>Configura un array llamado <code>$args<\/code> con par\u00e1metros de consulta para una llamada <code><a href=\"https:\/\/developer.wordpress.org\/reference\/classes\/wp_query\/\" target=\"_blank\" rel=\"noopener noreferrer\">WP_Query<\/a><\/code>.\n<pre><code class=\"language-php\">$args = array(\n    'post_type' =&gt; 'testimonials', \/\/specifies you want to query the custom post type   \n'testimonial',\n    'nopaging' =&gt; true,  \/\/ no pagination, but retrieve all testimonials at once\n),<\/code><\/pre>\n<\/li>\n<li>Crea una instancia de la clase <code>WP_Query<\/code> que reciba el array <code>$args<\/code>, realice una consulta basada en los par\u00e1metros especificados y almacene los resultados de la consulta WordPress en la variable <code>$query<\/code>.\n<pre><code class=\"language-php\">$query = new WP_Query($args)<\/code><\/pre>\n<\/li>\n<li>Escribe una sentencia condicional para comprobar si hay alguna entrada con testimonios. A continuaci\u00f3n, crea un bucle <code>while<\/code> para iterar a trav\u00e9s de las entradas y devolver las entradas de testimonios <code>title<\/code> y <code>content<\/code>.\n<pre><code class=\"language-php\">if ( $query-&gt;have_posts() ) {\n        while ( $query-&gt;have_posts() ) {\n            $query-&gt;the_post();\n            $testimonial_data = array( \/*an array that stores the title \nand content of every post*\/\n            'title' =&gt; get_the_title(),\n                'content' =&gt; get_the_content(),\n                \/\/ Add other fields as needed\n            );\n            $testimonials[] = $testimonial_data; \n        }\n        wp_reset_postdata(); \/* restores $post \nglobal to the current post to avoid any conflicts in subsequent queries*\/\n    }\n    return rest_ensure_response( $testimonials ); \/*ensures response is \ncorrectly set as a response object for consistency*\/<\/code><\/pre>\n<p>Aqu\u00ed tienes el c\u00f3digo completo:<\/p>\n<pre><code class=\"language-php\">function get_testimonials() {\n$testimonials = array();\n$args = array(\n    'post_type' =&gt; 'testimonials',\n    'nopaging' =&gt; true,\n);\n$query = new WP_Query( $args );\nif ( $query-&gt;have_posts() ) {\n    while ( $query-&gt;have_posts() ) {\n        $query-&gt;the_post();\n        $testimonial_data = array(\n            'title' =&gt; get_the_title(),\n            'content' =&gt; get_the_content(),\n            \/\/ Add other fields as needed\n        );\n        $testimonials[] = $testimonial_data;\n    }\n    wp_reset_postdata();\n}\nreturn rest_ensure_response( $testimonials );\n}<\/code><\/pre>\n<\/li>\n<li>Prueba tu endpoint utilizando <a href=\"https:\/\/www.postman.com\/\" target=\"_blank\" rel=\"noopener noreferrer\">Postman<\/a> para verificar si puedes acceder a tus datos.\n<figure style=\"width: 1001px\" class=\"wp-caption alignnone\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/kinsta.com\/wp-content\/uploads\/2024\/03\/testing-with-postman.png\" alt=\"Captura de pantalla de una llamada exitosa de la API de Postman al endpoint personalizado de testimonios\" width=\"1001\" height=\"471\"><figcaption class=\"wp-caption-text\">Postman muestra una respuesta correcta.<\/figcaption><\/figure>\n<p>Tambi\u00e9n puedes probarlo utilizando un navegador. Accede al endpoint introduciendo la URL <code>site-domain\/wp-json\/custom\/v2\/testimonials<\/code> en la barra de direcciones de tu navegador.<\/p>\n<p><figure style=\"width: 1001px\" class=\"wp-caption alignnone\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/kinsta.com\/wp-content\/uploads\/2024\/03\/testing-with-browser.png\" alt=\"Captura de pantalla del endpoint accediendo con \u00e9xito en un navegador web\" width=\"1001\" height=\"471\"><figcaption class=\"wp-caption-text\">El resultado del navegador que aparece cuando se accede al endpoint.<\/figcaption><\/figure><\/li>\n<\/ol>\n<h2>Resumen<\/h2>\n<p>Este tutorial ha explicado c\u00f3mo implementar un endpoint personalizado de la API de WordPress. Para que los usuarios puedan acceder e interactuar con los datos de tu base de datos de WordPress, s\u00f3lo tienes que registrar la ruta que implementa una funci\u00f3n callback.<\/p>\n<p>\u00bfQuieres saber c\u00f3mo maximizar WordPress para tu negocio? Kinsta ofrece numerosas opciones avanzadas como parte de nuestro <a href=\"https:\/\/kinsta.com\/es\/wordpress-hosting\/\">servicio de Alojamiento Administrado de WordPress<\/a> para ayudarte a satisfacer las necesidades \u00fanicas de tu negocio. Una opci\u00f3n destacada es el <a href=\"https:\/\/kinsta.com\/es\/docs\/alojamiento-wordpress\/plugin-kinsta-mu\/\">plugin Kinsta MU (imprescindible)<\/a>, que gestiona e implementa el almacenamiento en cach\u00e9 de tu sitio para reducir la latencia y mejorar el rendimiento. \u00a1<a href=\"https:\/\/kinsta.com\/es\/suscripcion\/wp\/\">Prueba Kinsta hoy mismo<\/a>!<\/p>\n<p><em>\u00bfQu\u00e9 opinas sobre el desarrollo de endpoints personalizados de la API de WordPress? \u00bfAlguna vez has dise\u00f1ado alguno? Nos encantar\u00eda conocer tus experiencias. Comp\u00e1rtelas en la secci\u00f3n de comentarios m\u00e1s abajo.<\/em><\/p>\n","protected":false},"excerpt":{"rendered":"<p>WordPress es uno de los sistemas de gesti\u00f3n de contenidos (CMS) m\u00e1s populares del mundo, que ayuda a peque\u00f1as y grandes empresas a establecer y crear &#8230;<\/p>\n","protected":false},"author":199,"featured_media":74498,"comment_status":"open","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"_kinsta_gated_content":false,"_kinsta_gated_content_redirect":"","footnotes":""},"tags":[],"topic":[1270,1345,1355],"class_list":["post-74497","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","topic-api","topic-desarrollo-wordpress","topic-temas-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>C\u00f3mo crear endpoints personalizados de la API REST de WordPress - Kinsta\u00ae<\/title>\n<meta name=\"description\" content=\"Aprende a mejorar tu sitio de WordPress creando tipos de entrada personalizados y configurando sus endpoints REST API.\" \/>\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\/wp-rest-api-endpoints-personalizados\/\" \/>\n<meta property=\"og:locale\" content=\"es_ES\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Personalizar WordPress para desarrolladores: desarrollar endpoints de API REST personalizados\" \/>\n<meta property=\"og:description\" content=\"Aprende a mejorar tu sitio de WordPress creando tipos de entrada personalizados y configurando sus endpoints REST API.\" \/>\n<meta property=\"og:url\" content=\"https:\/\/kinsta.com\/es\/blog\/wp-rest-api-endpoints-personalizados\/\" \/>\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=\"2024-04-08T18:25:59+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2024-04-11T13:05:36+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/kinsta.com\/es\/wp-content\/uploads\/sites\/8\/2024\/04\/wp-how-to-add-custom-endpoints-to-wordpress-rest-api.jpg\" \/>\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\/jpeg\" \/>\n<meta name=\"author\" content=\"Jeremy Holcombe\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:description\" content=\"Aprende a mejorar tu sitio de WordPress creando tipos de entrada personalizados y configurando sus endpoints REST API.\" \/>\n<meta name=\"twitter:image\" content=\"https:\/\/kinsta.com\/es\/wp-content\/uploads\/sites\/8\/2024\/04\/wp-how-to-add-custom-endpoints-to-wordpress-rest-api-1024x512.jpg\" \/>\n<meta name=\"twitter:creator\" content=\"@Kinsta_ES\" \/>\n<meta name=\"twitter:site\" content=\"@Kinsta_ES\" \/>\n<meta name=\"twitter:label1\" content=\"Escrito por\" \/>\n\t<meta name=\"twitter:data1\" content=\"Jeremy Holcombe\" \/>\n\t<meta name=\"twitter:label2\" content=\"Tiempo de lectura\" \/>\n\t<meta name=\"twitter:data2\" content=\"9 minutos\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\/\/kinsta.com\/es\/blog\/wp-rest-api-endpoints-personalizados\/#article\",\"isPartOf\":{\"@id\":\"https:\/\/kinsta.com\/es\/blog\/wp-rest-api-endpoints-personalizados\/\"},\"author\":{\"name\":\"Jeremy Holcombe\",\"@id\":\"https:\/\/kinsta.com\/es\/#\/schema\/person\/4eee42881d7b5a73ebb4f58dd5223b21\"},\"headline\":\"Personalizar WordPress para desarrolladores: desarrollar endpoints de API REST personalizados\",\"datePublished\":\"2024-04-08T18:25:59+00:00\",\"dateModified\":\"2024-04-11T13:05:36+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\/\/kinsta.com\/es\/blog\/wp-rest-api-endpoints-personalizados\/\"},\"wordCount\":1561,\"commentCount\":0,\"publisher\":{\"@id\":\"https:\/\/kinsta.com\/es\/#organization\"},\"image\":{\"@id\":\"https:\/\/kinsta.com\/es\/blog\/wp-rest-api-endpoints-personalizados\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/kinsta.com\/es\/wp-content\/uploads\/sites\/8\/2024\/04\/wp-how-to-add-custom-endpoints-to-wordpress-rest-api.jpg\",\"inLanguage\":\"es\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\/\/kinsta.com\/es\/blog\/wp-rest-api-endpoints-personalizados\/#respond\"]}]},{\"@type\":\"WebPage\",\"@id\":\"https:\/\/kinsta.com\/es\/blog\/wp-rest-api-endpoints-personalizados\/\",\"url\":\"https:\/\/kinsta.com\/es\/blog\/wp-rest-api-endpoints-personalizados\/\",\"name\":\"C\u00f3mo crear endpoints personalizados de la API REST de WordPress - Kinsta\u00ae\",\"isPartOf\":{\"@id\":\"https:\/\/kinsta.com\/es\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\/\/kinsta.com\/es\/blog\/wp-rest-api-endpoints-personalizados\/#primaryimage\"},\"image\":{\"@id\":\"https:\/\/kinsta.com\/es\/blog\/wp-rest-api-endpoints-personalizados\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/kinsta.com\/es\/wp-content\/uploads\/sites\/8\/2024\/04\/wp-how-to-add-custom-endpoints-to-wordpress-rest-api.jpg\",\"datePublished\":\"2024-04-08T18:25:59+00:00\",\"dateModified\":\"2024-04-11T13:05:36+00:00\",\"description\":\"Aprende a mejorar tu sitio de WordPress creando tipos de entrada personalizados y configurando sus endpoints REST API.\",\"breadcrumb\":{\"@id\":\"https:\/\/kinsta.com\/es\/blog\/wp-rest-api-endpoints-personalizados\/#breadcrumb\"},\"inLanguage\":\"es\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/kinsta.com\/es\/blog\/wp-rest-api-endpoints-personalizados\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"es\",\"@id\":\"https:\/\/kinsta.com\/es\/blog\/wp-rest-api-endpoints-personalizados\/#primaryimage\",\"url\":\"https:\/\/kinsta.com\/es\/wp-content\/uploads\/sites\/8\/2024\/04\/wp-how-to-add-custom-endpoints-to-wordpress-rest-api.jpg\",\"contentUrl\":\"https:\/\/kinsta.com\/es\/wp-content\/uploads\/sites\/8\/2024\/04\/wp-how-to-add-custom-endpoints-to-wordpress-rest-api.jpg\",\"width\":1460,\"height\":730},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/kinsta.com\/es\/blog\/wp-rest-api-endpoints-personalizados\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\/\/kinsta.com\/es\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"API\",\"item\":\"https:\/\/kinsta.com\/es\/secciones\/api\/\"},{\"@type\":\"ListItem\",\"position\":3,\"name\":\"Personalizar WordPress para desarrolladores: desarrollar endpoints de API REST personalizados\"}]},{\"@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\/4eee42881d7b5a73ebb4f58dd5223b21\",\"name\":\"Jeremy Holcombe\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"es\",\"@id\":\"https:\/\/kinsta.com\/es\/#\/schema\/person\/image\/\",\"url\":\"https:\/\/secure.gravatar.com\/avatar\/0e17001f3bb37dbbe54fceef9bb547fa?s=96&d=mm&r=g\",\"contentUrl\":\"https:\/\/secure.gravatar.com\/avatar\/0e17001f3bb37dbbe54fceef9bb547fa?s=96&d=mm&r=g\",\"caption\":\"Jeremy Holcombe\"},\"description\":\"Senior Editor at Kinsta, WordPress Web Developer, and Content Writer. Outside of all things WordPress, I enjoy the beach, golf, and movies. I also have tall people problems.\",\"sameAs\":[\"https:\/\/www.linkedin.com\/in\/jeremyholcombe\/\"],\"url\":\"https:\/\/kinsta.com\/es\/blog\/author\/jeremyholcombe\/\"}]}<\/script>\n<!-- \/ Yoast SEO Premium plugin. -->","yoast_head_json":{"title":"C\u00f3mo crear endpoints personalizados de la API REST de WordPress - Kinsta\u00ae","description":"Aprende a mejorar tu sitio de WordPress creando tipos de entrada personalizados y configurando sus endpoints REST API.","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\/wp-rest-api-endpoints-personalizados\/","og_locale":"es_ES","og_type":"article","og_title":"Personalizar WordPress para desarrolladores: desarrollar endpoints de API REST personalizados","og_description":"Aprende a mejorar tu sitio de WordPress creando tipos de entrada personalizados y configurando sus endpoints REST API.","og_url":"https:\/\/kinsta.com\/es\/blog\/wp-rest-api-endpoints-personalizados\/","og_site_name":"Kinsta\u00ae","article_publisher":"https:\/\/www.facebook.com\/kinsta.es\/","article_published_time":"2024-04-08T18:25:59+00:00","article_modified_time":"2024-04-11T13:05:36+00:00","og_image":[{"width":1460,"height":730,"url":"https:\/\/kinsta.com\/es\/wp-content\/uploads\/sites\/8\/2024\/04\/wp-how-to-add-custom-endpoints-to-wordpress-rest-api.jpg","type":"image\/jpeg"}],"author":"Jeremy Holcombe","twitter_card":"summary_large_image","twitter_description":"Aprende a mejorar tu sitio de WordPress creando tipos de entrada personalizados y configurando sus endpoints REST API.","twitter_image":"https:\/\/kinsta.com\/es\/wp-content\/uploads\/sites\/8\/2024\/04\/wp-how-to-add-custom-endpoints-to-wordpress-rest-api-1024x512.jpg","twitter_creator":"@Kinsta_ES","twitter_site":"@Kinsta_ES","twitter_misc":{"Escrito por":"Jeremy Holcombe","Tiempo de lectura":"9 minutos"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/kinsta.com\/es\/blog\/wp-rest-api-endpoints-personalizados\/#article","isPartOf":{"@id":"https:\/\/kinsta.com\/es\/blog\/wp-rest-api-endpoints-personalizados\/"},"author":{"name":"Jeremy Holcombe","@id":"https:\/\/kinsta.com\/es\/#\/schema\/person\/4eee42881d7b5a73ebb4f58dd5223b21"},"headline":"Personalizar WordPress para desarrolladores: desarrollar endpoints de API REST personalizados","datePublished":"2024-04-08T18:25:59+00:00","dateModified":"2024-04-11T13:05:36+00:00","mainEntityOfPage":{"@id":"https:\/\/kinsta.com\/es\/blog\/wp-rest-api-endpoints-personalizados\/"},"wordCount":1561,"commentCount":0,"publisher":{"@id":"https:\/\/kinsta.com\/es\/#organization"},"image":{"@id":"https:\/\/kinsta.com\/es\/blog\/wp-rest-api-endpoints-personalizados\/#primaryimage"},"thumbnailUrl":"https:\/\/kinsta.com\/es\/wp-content\/uploads\/sites\/8\/2024\/04\/wp-how-to-add-custom-endpoints-to-wordpress-rest-api.jpg","inLanguage":"es","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/kinsta.com\/es\/blog\/wp-rest-api-endpoints-personalizados\/#respond"]}]},{"@type":"WebPage","@id":"https:\/\/kinsta.com\/es\/blog\/wp-rest-api-endpoints-personalizados\/","url":"https:\/\/kinsta.com\/es\/blog\/wp-rest-api-endpoints-personalizados\/","name":"C\u00f3mo crear endpoints personalizados de la API REST de WordPress - Kinsta\u00ae","isPartOf":{"@id":"https:\/\/kinsta.com\/es\/#website"},"primaryImageOfPage":{"@id":"https:\/\/kinsta.com\/es\/blog\/wp-rest-api-endpoints-personalizados\/#primaryimage"},"image":{"@id":"https:\/\/kinsta.com\/es\/blog\/wp-rest-api-endpoints-personalizados\/#primaryimage"},"thumbnailUrl":"https:\/\/kinsta.com\/es\/wp-content\/uploads\/sites\/8\/2024\/04\/wp-how-to-add-custom-endpoints-to-wordpress-rest-api.jpg","datePublished":"2024-04-08T18:25:59+00:00","dateModified":"2024-04-11T13:05:36+00:00","description":"Aprende a mejorar tu sitio de WordPress creando tipos de entrada personalizados y configurando sus endpoints REST API.","breadcrumb":{"@id":"https:\/\/kinsta.com\/es\/blog\/wp-rest-api-endpoints-personalizados\/#breadcrumb"},"inLanguage":"es","potentialAction":[{"@type":"ReadAction","target":["https:\/\/kinsta.com\/es\/blog\/wp-rest-api-endpoints-personalizados\/"]}]},{"@type":"ImageObject","inLanguage":"es","@id":"https:\/\/kinsta.com\/es\/blog\/wp-rest-api-endpoints-personalizados\/#primaryimage","url":"https:\/\/kinsta.com\/es\/wp-content\/uploads\/sites\/8\/2024\/04\/wp-how-to-add-custom-endpoints-to-wordpress-rest-api.jpg","contentUrl":"https:\/\/kinsta.com\/es\/wp-content\/uploads\/sites\/8\/2024\/04\/wp-how-to-add-custom-endpoints-to-wordpress-rest-api.jpg","width":1460,"height":730},{"@type":"BreadcrumbList","@id":"https:\/\/kinsta.com\/es\/blog\/wp-rest-api-endpoints-personalizados\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/kinsta.com\/es\/"},{"@type":"ListItem","position":2,"name":"API","item":"https:\/\/kinsta.com\/es\/secciones\/api\/"},{"@type":"ListItem","position":3,"name":"Personalizar WordPress para desarrolladores: desarrollar endpoints de API REST personalizados"}]},{"@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\/4eee42881d7b5a73ebb4f58dd5223b21","name":"Jeremy Holcombe","image":{"@type":"ImageObject","inLanguage":"es","@id":"https:\/\/kinsta.com\/es\/#\/schema\/person\/image\/","url":"https:\/\/secure.gravatar.com\/avatar\/0e17001f3bb37dbbe54fceef9bb547fa?s=96&d=mm&r=g","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/0e17001f3bb37dbbe54fceef9bb547fa?s=96&d=mm&r=g","caption":"Jeremy Holcombe"},"description":"Senior Editor at Kinsta, WordPress Web Developer, and Content Writer. Outside of all things WordPress, I enjoy the beach, golf, and movies. I also have tall people problems.","sameAs":["https:\/\/www.linkedin.com\/in\/jeremyholcombe\/"],"url":"https:\/\/kinsta.com\/es\/blog\/author\/jeremyholcombe\/"}]}},"acf":[],"_links":{"self":[{"href":"https:\/\/kinsta.com\/es\/wp-json\/wp\/v2\/posts\/74497","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\/199"}],"replies":[{"embeddable":true,"href":"https:\/\/kinsta.com\/es\/wp-json\/wp\/v2\/comments?post=74497"}],"version-history":[{"count":7,"href":"https:\/\/kinsta.com\/es\/wp-json\/wp\/v2\/posts\/74497\/revisions"}],"predecessor-version":[{"id":74549,"href":"https:\/\/kinsta.com\/es\/wp-json\/wp\/v2\/posts\/74497\/revisions\/74549"}],"alternate":[{"embeddable":true,"hreflang":"en","title":"English","href":"https:\/\/kinsta.com\/es\/wp-json\/kinsta\/v1\/posts\/74497\/translations\/en"},{"embeddable":true,"hreflang":"it","title":"Italian","href":"https:\/\/kinsta.com\/es\/wp-json\/kinsta\/v1\/posts\/74497\/translations\/it"},{"embeddable":true,"hreflang":"pt","title":"Portuguese","href":"https:\/\/kinsta.com\/es\/wp-json\/kinsta\/v1\/posts\/74497\/translations\/pt"},{"embeddable":true,"hreflang":"fr","title":"French","href":"https:\/\/kinsta.com\/es\/wp-json\/kinsta\/v1\/posts\/74497\/translations\/fr"},{"embeddable":true,"hreflang":"ja","title":"Japanese","href":"https:\/\/kinsta.com\/es\/wp-json\/kinsta\/v1\/posts\/74497\/translations\/jp"},{"embeddable":true,"hreflang":"es","title":"Spanish","href":"https:\/\/kinsta.com\/es\/wp-json\/kinsta\/v1\/posts\/74497\/translations\/es"},{"embeddable":true,"hreflang":"nl","title":"Dutch","href":"https:\/\/kinsta.com\/es\/wp-json\/kinsta\/v1\/posts\/74497\/translations\/nl"},{"embeddable":true,"hreflang":"de","title":"German","href":"https:\/\/kinsta.com\/es\/wp-json\/kinsta\/v1\/posts\/74497\/translations\/de"},{"href":"https:\/\/kinsta.com\/es\/wp-json\/kinsta\/v1\/posts\/74497\/tree"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/kinsta.com\/es\/wp-json\/wp\/v2\/media\/74498"}],"wp:attachment":[{"href":"https:\/\/kinsta.com\/es\/wp-json\/wp\/v2\/media?parent=74497"}],"wp:term":[{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/kinsta.com\/es\/wp-json\/wp\/v2\/tags?post=74497"},{"taxonomy":"topic","embeddable":true,"href":"https:\/\/kinsta.com\/es\/wp-json\/wp\/v2\/topic?post=74497"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}