Cómo crear un punto final personalizado para la API REST (en 4 pasos)

Índice
  1. Qué es un punto final REST personalizado (y por qué es posible que quieras crear uno)
  2. Cómo crear un punto final personalizado para la API REST (en 4 pasos)
    1. 1. Crea un tema secundario
    2. 2. Define tu ruta
    3. 3. Implementar la función de devolución de llamadapara su punto final REST personalizado
    4. 4. Pruebe su punto final
  3. Conclusión

La interfaz de programación de aplicaciones (API) de transferencia de estado representacional (REST) ​​de WordPress abrió un mundo de posibilidades para los propietarios y desarrolladores de sitios web. Sin embargo, a veces es posible que necesite trabajar con contenido y servicios que REST no admite de manera predeterminada.

Afortunadamente, es posible ampliar esta potente API con un punto de conexión REST personalizado. Al definir sus propios puntos de conexión, puede hacer que WordPress se comunique con prácticamente cualquier aplicación o servicio, incluidas sus propias aplicaciones móviles personalizadas.

En esta publicación, analizaremos por qué es posible que desee crear un punto final personalizado para la API REST de WordPress y luego le mostraremos cómo hacerlo. ¡Comencemos!

Qué es un punto final REST personalizado (y por qué es posible que quieras crear uno)

La API REST ofrece una manera sencilla de enviar y recibir datos de WordPress. Esto le brinda la flexibilidad de integrar la plataforma con una amplia gama de aplicaciones y servicios de terceros.

También es popular entre los desarrolladores que desean utilizar WordPress como parte de unSistema de gestión de contenidos (CMS) sin interfaz gráficaTambién es una gran solución para cualquiera que trabaje con herramientas basadas en React, comoMarco de Frontityo elGenerador de sitios Gatsby.

La API REST de WordPress proporciona un conjunto de rutas y puntos finales integrados. Estos representan las publicaciones, páginas, taxonomías y otros tipos de datos estándar de WordPress predeterminados. Puede utilizar estas rutas y puntos finales para interactuar con su sitio mediante el envío y la recepción de objetos de notación de objetos JavaScript (JSON). Esta es una gran noticia si desea interactuar con su contenido de WordPress mediante servicios y aplicaciones externos.

Sin embargo, también es posible crear un punto de conexión REST personalizado. Estos puntos de conexión indican a la API REST que responda a una solicitud determinada con una función definida por usted. Este puede ser un método eficaz para integrar WordPress con aplicaciones y servicios adicionales, y para trabajar con tipos de publicaciones personalizados.

Un punto final personalizado también puede ser útil si estás desarrollando una aplicación móvil y quieres usar datos de WordPress dentro de ella. Por ejemplo, es posible que estés creando una aplicación de comercio electrónico para tu tienda en línea con tecnología WooCommerce y quieras extraer datos de WordPress para usarlos en esta aplicación móvil.

Cómo crear un punto final personalizado para la API REST (en 4 pasos)

Para crear un punto final personalizado es necesario escribir algo de código, pero también se abre un mundo completamente nuevo de posibilidades para los datos de WordPress. En esta publicación, usamosTutorial REST de Ahmed Bouchefracomo referencia de código, para crear un punto final personalizado en cuatro sencillos pasos.

1. Crea un tema secundario

Siempre que quieras personalizar un tema, se recomienda que crees un tema secundario y le apliques los cambios. Si editas el tema original, perderás todas las personalizaciones cada vez que lo actualices. Si usas un tema secundario, podrás agregar puntos finales personalizados sin perder la opción de actualizar.

Puedes crear un tema secundario usando unCliente de Protocolo de transferencia de archivos (FTP) como FileZillaEn su cliente FTP, navegue hasta elaplicación/público/wp-content/temas/carpeta y crear un nuevo directorio.

Al nombrar su carpeta, es una buena idea usar el nombre del tema principal, adjunto con-niño:

A continuación, es el momento de crear una hoja de estilo, a la que llamaremosestilo.cssPuede crearlo como un archivo de texto normal y luego convertirlo en un archivo CSS cambiándole el nombre con la extensión.css, como se muestra a continuación:

Una hoja de estilo contiene el código que determina el diseño de tu tema. Para crear un tema secundario atractivo y atractivo, normalmente tendrás que ponerte manos a la obra y escribir algo de código.Códice de WordPressproporciona un código estándar que puedes usar para crear rápidamente un tema secundario básico.

A continuación es el momento de crear unfunciones.phparchivo, que usarás para agregar funciones a tu tema. Nuevamente, puedes crearlo como un archivo de texto sin formato y luego cambiarle el nombre afunciones.php.

Dentro de tufunciones.phparchivo, agregue el siguiente código:

?php add_action( 'wp_enqueue_scripts', 'enqueue_parent_styles' ); function enqueue_parent_styles() {   wp_enqueue_style( 'parent-style', get_template_directory_uri().'/style.css' ); }

Aquí, heredamos información de la hoja de estilo del tema principal. Ahora que tienes los elementos básicos en su lugar, navega hastaApariencia TemasEn tu panel de WordPress:

El tema de tu hijo debería estar visible en el panel. Dale elActivarHaga clic en un botón y su nuevo tema estará listo para usar.

2. Define tu ruta

En esta sección vamos a crear una nueva ruta que nos permitirá recuperar las últimas publicaciones por ID de categoría. Usaremos la siguiente URL:

http://localhost/wp-json/twentytwentyone-child/v1/latest-posts/category-ID

Recuerda modificar esta URL para que apunte a tu propio dominio o sitio local. También tendrás que reemplazarcategoría-idcon la categoría real que desea consultar. Por ejemplo, aquí recuperamos todas las publicaciones de la categoría “1”:

http://localhost/wp-json/twentytwentyone-child/v1/latest-posts/1

Si no está seguro del ID de una categoría, puede verificar este valor en el panel de WordPress. Vaya aEntradas Categoríasy verás una lista:

Ahora puedes pasar el cursor sobre la categoría que deseas consultar y abrirla para editarla. Encontrarás el ID de la categoría en la URL. En la siguiente captura de pantalla, el ID de la categoría es “1”:

Ahora puede agregar esta ID de categoría a su punto final. En este punto, si ingresa la URL completa en su navegador web, verá un mensaje de error:

Esto se debe a que aún no hemos definido esta ruta. En FileZilla, abre el temafunciones.phparchivo y agregue lo siguiente:

add_action('rest_api_init', function () {  register_rest_route( 'twentytwentyone-child/v1', 'latest-posts/(?Pcategory_idd+)',array(                'methods'  = 'GET',                'callback' = 'get_latest_posts_by_category'      ));});

Ahora puede guardar los cambios y salir de este archivo. En su navegador, intente volver a cargar la URL. Su navegador debería responder con un error 500:

Como hemos definido esta ruta, WordPress ahora la reconoce. Sin embargo, todavía tenemos que especificar laobtener_últimas_publicaciones_por_categoría()funcionar como nuestra devolución de llamada, así que hagámoslo ahora.

3. Implementar la función de devolución de llamadapara su punto final REST personalizado

Nuestra próxima tarea es implementar elfunción de devolución de llamada, que utilizaremos para procesar y gestionar nuestra solicitud GET. Dentro de sufunciones.phparchivo, comience recuperando elid de categoríaargumento de la$solicitudparámetro:

function get_latest_posts_by_category($request) {

A continuación, necesitamos crear un$argumentosmatriz con la clave de categoría establecida en el valor deid_de_categoría.Este ID se extraerá de la ruta:

    $args = array(            'category' = $request['category_id']    );

A continuación, busque publicaciones con el ID de categoría especificado. Puede lograr esto llamando alobtener_publicaciones()método:

    $posts = get_posts($args);

Si la matriz está vacía, mostraremos un mensaje de error que contiene elcategoría vacíacódigo, más un código de estado 404. Puede personalizarlo según sus requisitos. Pasaremos toda esta información al constructor delError de WPclase:

    if (empty($posts)) {    return new WP_Error( 'empty_category', 'There are no posts to display', array('status' = 404) );

Después de completar esta configuración, es hora de crear una nueva instancia deRespuesta WP_REST_clase. Luego podemos pasar a la$publicacionesmatriz y devolver la respuesta REST. Al utilizar elRespuesta WP_REST_yError de WPclases, podemos asegurarnos de que nuestro punto final devuelva una respuesta JSON válida:

    $response = new WP_REST_Response($posts);    $response-set_status(200);    return $response;}

Si has estado siguiendo el procedimiento, tu código completo debería verse así:

function get_latest_posts_by_category($request) {    $args = array(            'category' = $request['category_id']    );    $posts = get_posts($args);    if (empty($posts)) {    return new WP_Error( 'empty_category', 'There are no posts to display', array('status' = 404) );    }    $response = new WP_REST_Response($posts);    $response-set_status(200);    return $response;}

Después de agregar este código afunciones.php, guarde y cierre el archivo. Ahora, lo único que queda es poner a prueba su endpoint personalizado.

4. Pruebe su punto final

En la pestaña de su navegador, intente visitar la URL que definimos en el paso anterior. Asegúrese de reemplazarcategoría-idcon cualquier ID de categoría válida registrada en su sitio web de WordPress, por ejemplo:http://localhost/wp-json/twentytwentyone-child/v1/últimas-publicaciones/1:

Ahora debería ver una lista de todas las publicaciones que pertenecen a esta categoría. También vale la pena ingresar un ID de categoría que no esté registrado en su sitio web. Si su punto de conexión personalizado funciona correctamente, el navegador debería mostrar el mensaje de error que definió en sufunciones.phparchivo:

Esto es todo lo que necesita para crear un punto final personalizado simple para la API REST. Si desea continuar desarrollando este proyecto, le recomendamos que proporcione devoluciones de llamadas de saneamiento y validación además de su devolución de llamada principal. Esto puede ayudar a proteger su sitio contrainyecciones de código, incluidoAtaques de secuencias de comandos entre sitios (XSS).

Para proteger aún más su sitio y sus datos, le recomendamos restringir el acceso a su punto final personalizado. Puede lograrlo utilizando elFunción permission_callback().

Conclusión

La interfaz de programación de aplicaciones (API) de transferencia de estado representacional (REST) ​​fue un punto de inflexión para la comunidad de WordPress. Sin embargo, incluso esta poderosa API tiene sus límites y es posible que REST no satisfaga exactamente sus necesidades.

Si tiene dificultades con las limitaciones de esta API, puede crear un punto final personalizado en cuatro sencillos pasos:

  1. Crear un tema secundario.
  2. Define tu ruta.
  3. Implemente la función de devolución de llamada para su punto final REST personalizado.
  4. Pon a prueba tu punto final.

¿Tiene alguna pregunta sobre cómo crear un punto final personalizado para la API REST? ¡Háganoslo saber en la sección de comentarios a continuación!

SUSCRÍBETE A NUESTRO BOLETÍN 
No te pierdas de nuestro contenido ni de ninguna de nuestras guías para que puedas avanzar en los juegos que más te gustan.

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

Subir

Este sitio web utiliza cookies para mejorar tu experiencia mientras navegas por él. Este sitio web utiliza cookies para mejorar tu experiencia de usuario. Al continuar navegando, aceptas su uso. Mas informacion