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:

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.

  1. Ve al Editor de Archivos de Temas desde la sección Apariencia de tu panel de Administración de WordPress.
  2. 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ódigo add_action hook llama a la función de callback create_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.

  3. Haz clic en Actualizar archivo para guardar los cambios.
    Captura de pantalla del código en el archivo functions.php, creando un tipo de entrada personalizado 'testimonial'
    Creación de un tipo de entrada custom_testimonial.

    Actualiza el panel de control para ver la opción Testimonios añadida a tu panel de control de WordPress.

    Captura de pantalla que muestra el tipo de entrada testimonial recién creado
    El tipo de entrada testimonial recién creado.

  4. 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:

Captura de pantalla de los dos testimonios creados con el bloque párrafo de cita
Testimonios recién creados.

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 nombres custom/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.

  1. Declara tu función callback get_testimonials utilizando el siguiente código:
    function get_testimonials(){
    
    }
  2. Inicializa un array vacío de testimonios para almacenar los datos recuperados de los testimonios de WordPress:
    $testimonials = array();
  3. Configura un array llamado $args con parámetros de consulta para una llamada WP_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
    ),
  4. 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)
  5. 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 testimonios title y content.
    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 );
    }
  6. Prueba tu endpoint utilizando Postman para verificar si puedes acceder a tus datos.
    Captura de pantalla de una llamada exitosa de la API de Postman al endpoint personalizado de testimonios
    Postman muestra una respuesta correcta.

    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.

    Captura de pantalla del endpoint accediendo con éxito en un navegador web
    El resultado del navegador que aparece cuando se accede al endpoint.

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.

Jeremy Holcombe Kinsta

Content & Marketing 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 ;).