¿Cómo incorporar la API y mostrar novedades en nuestra interfaz?
En el mundo del desarrollo web, es crucial saber cómo integrar y manejar datos a través de APIs, especialmente cuando trabajamos con plataformas como WordPress. Una API adecuada no solo permite gestionar los datos de manera eficiente, sino que también mejora la interacción con el usuario final al mostrar la información actualizada de manera ordenada y dinámica.
¿Cómo estructurar la salida de novedades en nuestra página?
Para empezar, necesitas crear una sección adecuada en el archivo front-page.php donde se desplegarán las novedades. Esto implica modificar el HTML para añadir las estructuras necesarias:
<divclass="row"><divclass="col"><h1>Novedades</h1></div></div><divid="resultadoNovedades"class="row"><!-- Aquí se imprimen las novedades --></div>
Crear una fila dentro de la estructura de tu página para añadir el título "Novedades".
Asignar un ID a la nueva fila creada, como resultadoNovedades, que servirá para recuperar y mostrar las novedades dinámicamente usando JavaScript.
¿Cómo configurar la URL de la API?
Para enlazar la interfaz con la API es fundamental configurar adecuadamente la URL. Esto se realiza agregando y gestionando parámetros mediante funciones PHP:
Definir la URL base usando home_url(), seguido por la dirección de tu espacio de nombres del API (tu_namespace) y el endpoint específico (tu_endpoint).
Incorporar parámetros requeridos según la estructura de tu API, tal como ?per_page=3 si necesitas limitar la cantidad de novedades mostradas.
¿Cómo se gestionan los datos con AJAX?
Para actualizar automáticamente las novedades cuando la página termina de cargar, es esencial utilizar AJAX. Primero, crea un script en JavaScript que realice esta solicitud:
jQuery(document).ready(function($){ $.ajax({url: apiURL,method:'GET',success:function(data){// Usa la estructura HTML para mostrar las novedadeslet html =''; $.each(data,function(index, item){ html +='<div class="novedad">'+ item.title.rendered+'</div>';});$('#resultadoNovedades').html(html);}});});
Activar el proceso AJAX al finalizar la carga del documento para obtener los datos necesarios.
Configurar el método para enviar la solicitud y, en caso de éxito, manipular directamente el DOM con los datos recuperados.
Modificar elementos del DOM usando jQuery. Aquí, estamos especificando que los resultados serán añadidos al contenedor con el ID resultadoNovedades.
¿Cómo asegurar una experiencia fluida para el usuario?
Es recomendable hacer uso de indicadores que muestren que se están cargando datos, como por ejemplo un aviso temporal:
Implementar estos mensajes proporciona al usuario un indicativo visual de que la aplicación aún está procesando información, evitando así confusiones o clics excesivos por falta de respuesta inmediata.
Al entender estos fundamentos, no solo logras integrar una API de manera efectiva, sino que también mejoras la experiencia del usuario con una interfaz intuitiva y reactiva. Continúa explorando cómo mejorar y personalizar estas interacciones para llevar tus habilidades de desarrollo al siguiente nivel.
Sería muy bueno que Lucio o Cristian Ramanzin hicieran un curso de Wordpress especializado en el consumo de APIS externas y tal vez integrarlo en una tienda online. Es un poco el deseo que me quedó después de hacer el curso de Woocommerce.
Saludos
Excelente idea Cristobal!
Vamos a proponerla para ver si armamos algo.
Saludos!
Apruebo la idea!!! En verdad estaría super bien un curso así Lucio!!!
quiero lograr algo asi para un sistema externo queq uiero comercializar, pero no tiene sentido decirle a la gente que instale ese plugin y tenga que hacer todo eso de configuraciones, he estudiado otros plugins como Application passwords y no logro entender su funcionamiento interno para crear mi propio plugin de autenticacion mas directo como "Application passwords ", me pueden dar una guia de donde leer o que aprender? entiendo los conceptos basicos de API REST pero me ve perdido al querer aplicar esto en un plugin de wordpress
Hola oscar, cómo estás?
Acá te dejo el link al Handbook de WordPress para la API.
Para lograr hacer tu desarrollo, de forma segura, deberías implementar algún tipo de servicio que generara JWT por medio de nonces en WordPress. Acá te dejo el link al uso de Nonces desde un plugin.
Va a ser complejo, porque de alguna forma tenés que garantizar que las personas que accedan realmente sean quienes dicen ser y tengan permisos. No tiene tanto que ver con WordPress en si, sino con la estructura de seguridad general.
Mi recomendación es que por medio de la API generes el registro de los usuarios y los valides o generes un endpoint para generar TOKENS y con eso validar el usu de la API.
Espero que te sirva esta info.
Saludos!
Hagamos el primer llamado a la API
Ahora vamos a hacer un llamado a la API que creamos así:
Se puede agregar autenticación, tokens o algo para usar el API desde una aplicación externa? quiero dar permiso a estas URLS solo a determinado "usuarios"
Sería bueno hacer una validación para saber si está en el home o si el div donde se cargarán los datos AJAX existe, de esa manera no se hace el llamado en todas las páginas del sitio. Algo como:
if ( $( body ).hasClass( 'home' ) ) { o if ( $( '#resultado-novedades' ).length ) {
Es una buena opción para este caso que tenemos un solo archivo..
Por lo general se divide el JS en diferentes archivos por páginas y sólo se utiliza el que corresponde a esa página haciendo una validación en el functions.php para agregar o no el script a la cola, dependiendo de la página en la que esté.
Saludos!
¿Como se logra identificar la página que se esta mostrando para poder hacer esa separación de JS?
hola excelente ahora tengo esta duda: quiero lograr algo asi para un sistema externo queq uiero comercializar, pero no tiene sentido decirle a la gente que instale ese plugin y tenga que hacer todo eso de configuraciones, he estudiado otros plugins como Application passwords y no logro entender su funcionamiento interno para crear mi propio plugin de autenticacion mas directo como "Application passwords ", me pueden dar una guia de donde leer o que aprender? entiendo los conceptos basicos de API REST pero me ve perdido al querer aplicar esto en un plugin de wordpress
Hola oscar, cómo estás?
Acá te dejo el link al Handbook de WordPress para la API.
Para lograr hacer tu desarrollo, de forma segura, deberías implementar algún tipo de servicio que generara JWT por medio de nonces en WordPress. Acá te dejo el link al uso de Nonces desde un plugin.
Va a ser complejo, porque de alguna forma tenés que garantizar que las personas que accedan realmente sean quienes dicen ser y tengan permisos. No tiene tanto que ver con WordPress en si, sino con la estructura de seguridad general.
Mi recomendación es que por medio de la API generes el registro de los usuarios y los valides o generes un endpoint para generar TOKENS y con eso validar el usu de la API.
Espero que te sirva esta info.
Saludos!
Para el que quiera profundizar un poco más aquí está la documentación oficial de WordPress:
Aquí en esta secesión podrás encontrar como interactuar con los “Posts” pudiendo hacer filtros avanzados, crear, actualizar y eliminar un Post. Todo esto con la API.
Quería compartir esto porque cundo necesite trabajar con esto me di cuenta que los articulos que hablan del tema están desactualizados y solo sirven con versiones anteriores al WP 4.7.
Aquí también comparto un filtro avanzado por fechas, para que te ballas familiarizando.
No entiendo lo de method POST, GET etc. Qué curso de Platzi me recomiendan para entender eso bien? Gracias!
Hola Esteban, cñomo estás?
Creo que el Curso de API REST te puede ayudar a comprenderlo mejor.
En las diferentes clases se van a crear las funciones para los diferentes métodos de la API.
Espero que te sirva.
Saludos!
La reviso tambien Prof @whoisnegrello Muchas ghracias por todo el feedback!!! =D
Cual es la diferencia entre hacer un llamado a la API como en el video y hacerlo a una API externa?
Hola Facundo, cómo estás?
No hay diferencia. Lo que permite WordPress es crear los endpoints de forma simple dentro del mismo sistema de administración de contenidos. Pero no deja de ser una API como cualquier otra.
Saludos!
Ejemplo de lo aprendido en el curso
Lucio, nos podrías compartir tus archivos custom.js front.page.php y functions php pára hacer un rastreo de mis errores, de otra manera es sumamente complejo identificarlos mediante el video en especial porque las lineas por lo general no se ven completas.
Te lo agradecería mil veces y me ahorrarías una gran cantidad de tiempo que he estado dedicando en este curso a buscar errores.
Hola Carlos, cómo estás?
Te comparto el link al repo para que puedas revisar todos los archivos.
Dentro de los TAGS y los RELEASES están los archivos actualizados por clases.
Saludos!
¡Bárbaro! Gracias Lucio, sincero reconocimiento a tus respuestas con tanta prontitud.
Si cambio 3 por 1 o por cualquier numero no hay ningun cambio, me muestra siempre todas las novedades 😕
Hola esteban, cómo estás?
Compartinos tu código, para revisarlo y ver dónde puede estar el problema.
Seguramente no se esté enviando el parámetro en la función de callback al loop.
Saludos!
Gracias Lucio, acá está el repo del tema como lo tengo hasta el momento
estoy perdido, en otros tutoriales me dice por todo lado que para usar el API se deben instalar un plugin, tener un token que da el mismo y ese usarlo para autenticarse antesss de hacer todo esto desde afuera de wordpress, porque aqui no lo muestran?
Hola Oscar, cómo estás?
En este caso estamos usando la API abiertamente en nuestro sitio.
Con información que queremos que sea pública, por eso no usamos ningún tipo de autenticación.
En el caso de querer limitar el acceso sólo a determinados usuarios, se requiere hacer una autenticación. El plugin del que hablás, probablemente sea el Application Passwords, que se utiliza para generar passwords diferentes a los de los usuarios y agregar una capa más de seguridad.
Hay también otros mecanismos y también se puede generar un sistema de autenticación personalizado.
Como todo, depende del caso de uso.
Saludos!
buenas tienen el repositorio actualizado ??
Hola, cómo estás?
En este link está el estado final del proyecto.
Podés ir viendo clase por clase desde los tags de Github.
Saludos!
Hola no reconoce la nueva function, paso las imágenes para alguna sugerencia.
)
Hola Diego, cómo estás?
Acá te dejo un link para que veas cómo linkear jQuery dentro de WordPress.
Hay que pasar el $ como parámetro para que se reconozca dentro del script.
Saludos!
He repasado el código muchas veces y no entiendo por qué en el front page el listado de las Novedades aparecen en vertical a diferencia de los productos que aparece en horizontal.
Screenshot
Igualé el código al que hizo el profe y el que está en git hub pero ninguno entrega el resultado deseado, además me resulta curioso que con las mismas opciones la lista de productos está en horizontal :C
Hola djure, cómo estás?
Podrías mandar tu código para revisarlo?
Claramente es algo relacionado con los estilos, pero sin el código no puedo revisarlo para decirte qué puede estar generando ese problema.
Te pido el código de JS y el PHP, para ver el proceso completo.
A priori, diría que falta una clase row en el contenedor.
Saludos!
Aquí está el repo del profe. Específicamente la implementación de la API.
Hasta ahora todos mis fallos han sido por un punto, una coma, o un numeral mal puesto... todo me ha funcionado re bien.
¡A por Gutenberg!
Utilizando WordPress seguramente has escuchado que es un software muy flexible ya que podemos extender funcionalidades a nivel de plugins, themes, etc.
Sin embargo hay otra característica que hace de WordPress un software muy flexible y es precisamente que viene integrado con una funcionalidad de API REST.
El uso de este CMS no está limitado a consultar un sitio web en un navegador, sino que a través de la REST API de WordPress es posible consultar los datos de tu sitio, por ejemplo: desde una aplicación de escritorio, una aplicación móvil u otro servicio web externo.
no me ha resultado, se queda en pending y luego falla. investigare por otro lado
Brother yo también estoy estudiando recientemente, por que clase vas de este curso?