WordPress es uno de los sistemas de gestión de contenidos (CMS) más populares del mundo, que ayuda a pequeñas y grandes empresas a establecer y crear diversas formas de contenido web. Pero WordPress ha evolucionado más allá de ser sólo compatible con el contenido tradicional de un blog, y eso es en gran parte gracias a la API REST de WordPress.
La API REST de WordPress conecta WordPress y otras aplicaciones web externas. Facilita una comunicación más accesible y te ayuda a crear experiencias web inmersivas y atractivas que se integran a la perfección con la plataforma CMS.
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 administración de WordPress, aportando flexibilidad y ampliando la funcionalidad de WordPress más allá de sus características principales.
Esta guía explora qué es la API REST de WordPress, sus ventajas, cómo amplía las capacidades básicas de WordPress y cómo crear, registrar y acceder a un endpoint personalizado.
Requisitos previos
Para seguir este tutorial, necesitas:
- Conocimientos de API REST
- Un sitio de WordPress configurado (puedes configurar uno fácilmente con el panel de MyKinsta)
- Conocimientos de uso de WordPress y PHP
Comprensión de la API REST de WordPress
La API REST de WordPress es una potente interfaz que te permite interactuar con los sitios de WordPress mediante programación utilizando métodos HTTP estándar.
Sus capacidades predeterminadas incluyen acceder y manipular varios tipos de datos de WordPress, como entradas, páginas, comentarios, usuarios y taxonomías, en un formato JSON estructurado. También puedes realizar remotamente acciones CRUD sobre el contenido.
Sin embargo, el verdadero valor de la API REST de WordPress reside en su extensibilidad a través de endpoints personalizados. Puedes crear endpoints personalizados para adaptar la API a necesidades específicas, como integrar funcionalidades adicionales, servicios de terceros o estructuras de datos únicas. Esta flexibilidad te permite crear aplicaciones altamente personalizadas y ricas en funciones sobre WordPress.
Cómo planificar tu endpoint personalizado de la API
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íficas requieren una cuidadosa consideración para garantizar una funcionalidad óptima. La planificación estratégica facilita la escalabilidad y la adaptabilidad, protegiendo a futuro los endpoints para adaptarse a la evolución de los requisitos empresariales.
Planificación los endpoints personalizados de tu API antes de la implementación:
- Claridad de la función del endpoint — La planificación de endpoint aclara la función específica del endpoint, sus tipos de datos esperados y su uso.
- Coherencia y eficacia de desarrollo — La planificación también garantiza la coherencia en el uso de los endpoints, los tipos de respuesta y el formato, lo que mejora la interacción con la API. Además, conocer el propósito de la API permite una implementación adecuada, reduciendo el tiempo de desarrollo y el riesgo de errores.
- Escalabilidad y adaptabilidad — 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ño completo.
- Seguridad — Una planificación adecuada del endpoint ayuda a determinar la necesidad de autenticación para acceder a los datos o manipularlos. Obtener contenido a través de la API a veces no implica autenticación del usuario. Aún así, para el contenido que contenga datos sensibles o no autorizados, es esencial definir los requisitos de seguridad e implantar medidas como la autorización y los controles de acceso para ayudar a garantizar la seguridad de los datos.
Las siguientes secciones prácticas explican cómo puedes crear un endpoint personalizado que esté disponible en site-domain/wp-json/custom/v2/testimonials
para recuperar testimonios de clientes de un sitio de base de datos de WordPress.
Tras enviar una solicitud, el endpoint devuelve un objeto JSON que contiene información sobre los testimonios de tu sitio de WordPress, tal y como se define en tu función de devolución de llamada.
¡Manos a la obra!
Crea un tipo de entrada personalizado para tu endpoint
En primer lugar, tienes que crear un tipo de entrada personalizado.
- Ve al Editor de Archivos de Temas desde la sección Apariencia de tu panel de Administración de WordPress.
- Abre el archivo function.php de tu tema y añade el siguiente código:
function create_custom_testimonial_type() { register_post_type('testimonials', array( 'labels' => array( 'name' => 'Testimonials', 'singular_name' => 'Testimonial', ), 'public' => true, 'has_archive' => true, 'show_in_rest' => true, // This enables REST API support )); } add_action('init', 'create_custom_testimonial_type');
Este código crea un tipo de entrada personalizada «testimonios» y activa la compatibilidad con la API REST de WordPress (
'show_in_rest' => true
). El códigoadd_action hook
llama a la función de callbackcreate_testimonial_type
y la lanza durante la ejecución.Puedes personalizar las etiquetas y los argumentos eliminándolos o añadiéndolos para adaptarlos a tus necesidades.
- Haz clic en Actualizar archivo para guardar los cambios.
Actualiza el panel de control para ver la opción Testimonios añadida a tu panel de control de WordPress.
- Crea una nueva entrada que contenga testimonios haciendo clic en Testimonios > Añadir nueva entrada. Puedes utilizar el bloque Párrafo de Cita. Dependiendo de cómo presentes tu testimonio, también puedes utilizar otros bloques.
Aquí tienes dos ejemplos de testimonios creados utilizando los bloques Párrafo de Cita:
Registrar un endpoint personalizado en WordPress
Registrar un endpoint personalizado hace que esté disponible para su consumo a través de la API REST. Esto implica utilizar la función register_rest_route
, llamarla en el hook rest_api_init
y proporcionar un método callback que se invocará cuando se llame a la ruta.
Pega el siguiente código en el archivo function.php de tu tema:
add_action( 'rest_api_init', 'register_testimonial_rest_route' );
function register_testimonial_rest_route(){
register_rest_route(
'custom/v2',
'/testimonials',
array(
'methods' => 'GET',
'callback' => 'get_testimonials',
)
);
}
Este register_rest_route()
recibe tres parámetros:
- Espacio de nombres de ruta (
$route_namespace
) — Es la primera parte del segmento URL y debe seguir el patrón vendor/version. «Vendor» 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 nombrescustom/v2
. - La URL base (
$route
) — Sigue al espacio de nombres y es una URL asignada a un método. Puedes registrar más de un endpoint para tu ruta. Para este tutorial, utilizas la ruta/testimonials
, que indica al endpoint que recupere testimonios. - Las opciones del endpoint (
$args
) — Aquí, se trata de un array que contiene el método HTTP utilizado al llamar a la ruta y la función de callback que el endpoint invocará cuando envíe una solicitud. Repasaremos esta función callback en la siguiente sección.
Por último, anota la dirección de tu endpoint. El formato de un endpoint es site-address/wp-json/namespace/route
. Así que, en este ejemplo, el endpoint será https://www.staging.kidspartysanctuary.co.uk/wp-json/custom/v2/testimonials
.
Implementar la función de callback para el endpoint
Tras crear el tipo de entrada personalizado y registrar tu endpoint personalizado, el siguiente paso es escribir tu función callback. Esta función callback se invoca cada vez que se accede al endpoint.
- Declara tu función callback
get_testimonials
utilizando el siguiente código:function get_testimonials(){ }
- Inicializa un array vacío de testimonios para almacenar los datos recuperados de los testimonios de WordPress:
$testimonials = array();
- Configura un array llamado
$args
con parámetros de consulta para una llamadaWP_Query
.$args = array( 'post_type' => 'testimonials', //specifies you want to query the custom post type 'testimonial', 'nopaging' => true, // no pagination, but retrieve all testimonials at once ),
- Crea una instancia de la clase
WP_Query
que reciba el array$args
, realice una consulta basada en los parámetros especificados y almacene los resultados de la consulta WordPress en la variable$query
.$query = new WP_Query($args)
- Escribe una sentencia condicional para comprobar si hay alguna entrada con testimonios. A continuación, crea un bucle
while
para iterar a través de las entradas y devolver las entradas de testimoniostitle
ycontent
.if ( $query->have_posts() ) { while ( $query->have_posts() ) { $query->the_post(); $testimonial_data = array( /*an array that stores the title and content of every post*/ 'title' => get_the_title(), 'content' => get_the_content(), // Add other fields as needed ); $testimonials[] = $testimonial_data; } wp_reset_postdata(); /* restores $post global to the current post to avoid any conflicts in subsequent queries*/ } return rest_ensure_response( $testimonials ); /*ensures response is correctly set as a response object for consistency*/
Aquí tienes el código completo:
function get_testimonials() { $testimonials = array(); $args = array( 'post_type' => 'testimonials', 'nopaging' => true, ); $query = new WP_Query( $args ); if ( $query->have_posts() ) { while ( $query->have_posts() ) { $query->the_post(); $testimonial_data = array( 'title' => get_the_title(), 'content' => get_the_content(), // Add other fields as needed ); $testimonials[] = $testimonial_data; } wp_reset_postdata(); } return rest_ensure_response( $testimonials ); }
- Prueba tu endpoint utilizando Postman para verificar si puedes acceder a tus datos.
También puedes probarlo utilizando un navegador. Accede al endpoint introduciendo la URL
site-domain/wp-json/custom/v2/testimonials
en la barra de direcciones de tu navegador.
Resumen
Este tutorial ha explicado cómo 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ólo tienes que registrar la ruta que implementa una función callback.
¿Quieres saber cómo maximizar WordPress para tu negocio? Kinsta ofrece numerosas opciones avanzadas como parte de nuestro servicio de Alojamiento Administrado de WordPress para ayudarte a satisfacer las necesidades únicas de tu negocio. Una opción destacada es el plugin Kinsta MU (imprescindible), que gestiona e implementa el almacenamiento en caché de tu sitio para reducir la latencia y mejorar el rendimiento. ¡Prueba Kinsta hoy mismo!
¿Qué opinas sobre el desarrollo de endpoints personalizados de la API de WordPress? ¿Alguna vez has diseñado alguno? Nos encantaría conocer tus experiencias. Compártelas en la sección de comentarios más abajo.
Deja una respuesta