Vamos a ver el modo de usar una API externa en WordPress.
Conceptos básicos
Bien como he comentado al principio este es el segundo capítulo al que hacemos mención a las APIs, y en el vamos a obtener información externa por medio de una API.
En nuestro primer capítulo vimos cómo usar la REST API de WordPress para disponer de nuestro contenido en un app de móvil por ejemplo.
Y en nuestro tercer capítulo veremos cómo crear una REST API desde php y MYSQL. para contenido específico.
Aclarado esto vamos a comenzar:
- Usaremos las funciones de WordPress para conectarse a esta API de manera simple.
- Vamos a usar un API gratuita RapidAPI o Sampleapis para avanzar en este ejemplo.
- Los resultados lo mostraremos en una página específica de WordPress.
Código para leer datos desde la API externa
<?php // Creamos esta Función que se encarga de recuperar los datos de la API externa y pintarla en una tabla function get_data_api(){ $url = 'https://api.sampleapis.com/beers/ale'; $response = wp_remote_get($url); if (is_wp_error($response)) { error_log("Error: ". $response->get_error_message()); return false; } $body = wp_remote_retrieve_body($response); $data = json_decode($body); $template = ' <table class="table-data"> <tr> <th></th> <th>Cerveza</th> <th>Precio</th> </tr> {data} </table>'; if ( $data ){ $str = ''; foreach ($data as $beer) { $str .= "<tr>"; $str .= "<td><img src='{$beer->image}' width='120'/></td>"; $str .= "<td>{$beer->name}</td>"; $str .= "<td>{$beer->price}</td>"; } } $html = str_replace('{data}', $str, $template); return $html; } // Creamos un Shortcode para agregar contenido capturado desde la API a nuestra página de WordPress add_shortcode( 'contenido', 'shortcode_contenido'); function shortcode_contenido() { $html = get_data_api(); return $html; }
En el código anterior:
- 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 de la API, esta es una función basada en la función wp_remote_request()
- Comprobamos si existe algún error con la función is_wp_error()
- Obtenemos los datos con la función wp_remote_retrieve_body() de la respuesta recibida
- Llamamos a función json_decode() para decodificar la cadena de texto json
- Los datos tienen la estructura de un array por lo que podemos recorrer el array en PHP 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
- Usamos el Hook ShortCode para agregar contenido en nuestra página
- Finalmente mostramos la tabla construida en HTML añadiendo [contenido] a nuestra página
Conclusión
Como has podido comprobar, a pesar de existir diferentes formas de leer datos desde una API usando PHP, si estás 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.