En un artículo anterior habíamos visto cómo usar la API Rest de WordPress, sin embargo en este artículo veremos como leer desde WordPress una API Rest de un servicio externo.
Resultado Final
Al final lo que queremos obtener será algo similar a lo que se muestra en la siguiente imagen:

Generalidades
- Accederemos a una API gratuita del sitio Sampleapis.
- Usaremos las funciones de WordPress para conectarse a esta API de manera simple.
- Los resultados lo mostraremos en una página específica de WordPress.
Código para leer datos desde una API externa
En el código anterior:
- Usamos el Hook de filtro the_content para agregar contenido adicional en una página específica
- La comprobación de la página la hacemos con la función is_page() y usuando el slug de la página
- La recuperación de los datos de la API externa lo hacemos en la función get_data_api()
- Usamos la función wp_remote_get() para obtener los datos de la url pública de la API
- Si existe algún error lo comprobamos con la función is_wp_error()
- De la respuesta recibida obtenemos los datos con la función wp_remote_retrieve_body()
- Usamos la función json_decode() para decodificar la cadena de texto devuelta y trabajarlo en PHP
- Los datos tienen la estructura de un array por lo que podemos recorrer el array y mostrar los datos en formato de tabla HTML
- Usamos una variable de $template y la función str_replace() para reemplazar la estructura de tabla
- Finalmente retornamos el HTML de la tabla construída
En el código he usado la función wp_remote_get(), esta es una función basada en la función wp_remote_request()
Conclusión
Como has podido comprobar, a pesar de existir diferentes formas de leer datos desde una API usando PHP, si estas en el entorno de WordPress puedes usar las propias funciones de WordPress, las cuales te facilitarán la labor de obtener y gestionar recursos de una API externa.
¿Aún con dudas?, en el siguiente video se detallan los puntos anteriores.
Suscríbete a DecodeCMS:
Habrá alguna manera de hacerlo partiendo de un formulario por ejemplo para una autenticación en una api externa. Saludos
Hola
Usualmente si es una Api con autenticación se realizará a través de tokens, espero hablar sobre esto en futuros videos.
Excelente articulo, pero tengo una duda, como se haria en caso de que la informacion obtenida se muestre en una parte especifica de la pagina y no en toda?
Hola, podrías crear un Shortcode e insertarlo en donde lo requieras, revisa el siguiente artículo de referencia: https://decodecms.com/shortcode-para-busqueda-en-tabla-personalizada-en-wordpress/
Saludos.
Hola, muchas gracias por tus videos y artículos. Gracias a ellos, estoy aprendiendo muuucho !!!.
Una consulta: La variable $content es alguna variable reservada de la API de WordPress que toma el contenido existente en la página en cuestión ?. O está definida previamente para poder usarla ?. En definitiva, cómo sé que contiene “el contenido” previo que tenía la página a la cual quiero concatenarle el contenido que ahora estoy llamando de la API externa ?. Espero que entieda mi pregunta. Y desde ya, muchísimas gracias !!!.
Hola, si, efectivamente $content es un parámetro ya existente que te brinda WordPress. Te sugiero revisar el artículo de Hooks para que entiendas como es que WordPress gestiona el código externo: https://decodecms.com/los-hooks-wordpress-usarlos/
Saludos.
Buen articulo, gracias.
Una pregunta:
¿si quisiera rellenar un formulario con los datos extraídos de la api valdría este código?
Hola Victor, supongo que te refieres a que cuando cargue un formulario los valores que se muestran por defecto o los valores de algunos controles, como los de selección, se llenen con datos de la API, si es posible, ya que sería una lectura de la API pero adaptada para mostrarse como parte de un formulario.
Hola Jhon, muchas gracias por compartir tus conocimientos.
tengo una duda, cómo puedo filtrar los datos, que solo muestre por ejemplo los vinos de solo un país?
Hola, usualmente los filtros deberían estar a nivel de la propia API, es decir en el código sólo cambiarías la url. Revisa la documentación de la API externa con la que estes trabajando.