• Saltar a la navegación principal
  • Saltar al contenido principal
  • Saltar a la barra lateral principal

DecodeCMS

Tu WordPress a otro Nivel ...

  • Acerca de
  • Contacto
  • Inicio
  • Tutoriales
    • Themes
    • Plugins
    • Core
    • Recursos
  • Cursos
  • Acceder
    • Mis cursos
    • Mi Cuenta
    • Acceder
Inicio / Tutoriales / Core / Leer datos desde una API externa en WordPress

Leer datos desde una API externa en WordPress

[ 15 septiembre 2021 ] [ Autor: Jhon Marreros Guzmán ][ Core - Avanzado] [ ]

funcionalidad

Suscríbete a DecodeCMS:  

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:

Mostrar datos de API externa en una página

 

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.

 

¿Me ayudas a llegar a más gente?

Twittear Compartir LinkedIn WhatsApp

Artículos Relacionados

  • Agregar endpoints a la API REST de WordPressAgregar endpoints a la API REST de WordPress
  • REST API en WordPressCómo usar la REST API de WordPress
  • Ocultar las notificaciones en la administración de WordPressOcultar las notificaciones en la administración de WordPress
  • Roles y Capacidades en WordPressCómo usar Roles y Capacidades en WordPress
Valora este artículo : 1 barra2 barras3 barras4 barras5 barras (4 votos, promedio: 5,00 de 5)
Cargando...

Interacciones con los lectores

Comentarios

  1. Lazaro

    4 marzo, 2022

    Habrá alguna manera de hacerlo partiendo de un formulario por ejemplo para una autenticación en una api externa. Saludos

    • Jhon Marreros Guzmán

      4 marzo, 2022

      Hola
      Usualmente si es una Api con autenticación se realizará a través de tokens, espero hablar sobre esto en futuros videos.

  2. Erick Reyes

    5 marzo, 2022

    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?

    • Jhon Marreros Guzmán

      7 marzo, 2022

      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.

  3. Deptos

    5 marzo, 2022

    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 !!!.

    • Jhon Marreros Guzmán

      7 marzo, 2022

      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.

  4. Victor

    15 marzo, 2022

    Buen articulo, gracias.
    Una pregunta:
    ¿si quisiera rellenar un formulario con los datos extraídos de la api valdría este código?

    • Jhon Marreros Guzmán

      19 marzo, 2022

      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.

  5. Juan Pablo

    22 mayo, 2022

    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?

    • Jhon Marreros Guzmán

      23 mayo, 2022

      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.

  6. Abraham RomeroBernabe

    6 junio, 2022

    Hola bro una pregunta, estoy intentando usar un shortcode para agregar la tabla donde yo quiero pero no entiendo como quedaria la funcion.

    • Jhon Marreros Guzmán

      9 junio, 2022

      Hola revisa este artículo de referencia: https://decodecms.com/shortcode-para-busqueda-en-tabla-personalizada-en-wordpress/

  7. sergio

    11 diciembre, 2022

    Buenas

    He hecho tu ejemplo. no consigo mostrar un hook en una página.

    Un saludo

    • Jhon Marreros Guzmán

      12 diciembre, 2022

      Hola, supongo que te refieres al hook “the_content”, este también debería funcionar en una página. Podrías probar sólo mostrando un mensaje de ejemplo y ver si aparece.

  8. Joaquin

    3 enero, 2023

    Hola, tengo la api de me proveedor de productos y quiero agregarla a mi web cin WordPress con woocomerce como deberia hacer? O por donde deberia investigar para lograr lo que quiero. Muchas gracias

    • Jhon Marreros Guzmán

      3 enero, 2023

      Hola Joaquin. De manera general, lo primero sería leer la documentación de la API, ya que cada una tiene una estructura y políticas diferentes. Luego puedes hacer pruebas de conexión usando un programa como PostMan o Insomnia. Si tus pruebas van bien, entonces ya tienes una idea de cómo conectarte, incluso con esos programas te generan el código de conexión. Luego tendrías que crear un plugin para WooCommerce que use ese código y que tenga un Hook de cron que se ejecute cada X tiempo.

  9. Jorge

    12 mayo, 2023

    Hola Jhon, he visto este tuto y me ha parecido muy genial, yo estoy haciendo unos widgets y se me ha ocurrido crear uno para mostrar la data de un posts desde una API externa, asi que la consulto http://sitio/wp/v2/posts/ID_del_posts y me va a dar en json los valores. Yo he tratado de usar tu secuencia de algoritmo para mostrar en el widget la data formateada en html con css por supuesto. pero me da error.

    public function __construct() {
    $widget_ops = array(
    'classname' => 'rest-api-widget',
    'description' => 'A REST API widget that pulls posts from a different website'
    );
    parent::__construct( 'rest_api_widget', 'REST API Widget', $widget_ops );
    }

    /**
    * Outputs the content of the widget
    *
    * @param array $args
    * @param array $instance
    */
    public function widget( $args, $instance ) {
    // outputs the content of the widget

    $response = wp_remote_get( 'http://sitio/wp/v2/posts/ID_del_posts' );
    if( is_wp_error( $response ) ) {
    return;
    }

    $post = json_decode( wp_remote_retrieve_body( $response ) );

    if( !empty( $posts ) ) {

    foreach( $posts as $post ) {
    echo 'link. '">' . $post->title->rendered . '';

    }

    }
    echo $args['after_widget'];
    add_action( 'widgets_init', function(){
    register_widget( 'REST_API_Widget' );
    });

    Si alguioen de la comunidad ve algo agradecería que me dijeran.

    Gracias

    • Jhon Marreros Guzmán

      16 mayo, 2023

      Hola, te sugiero ir depurando el código, por ejemplo comprobar la respuesta, revisa este artículo para aprender como depurar https://decodecms.com/depurar-codigo-php-en-wordpress/

  10. debora

    28 agosto, 2023

    Hola Jhon muy bueno tu curso, muchisimas gracias por la información, tienes algún tutorial como hacer un filtro de busque de una api? o tienes una idea como puedo obtener ayuda.

    • Jhon Marreros Guzmán

      28 agosto, 2023

      Hola, en ese caso lo optimo es que el filtro te lo proporcione la misma API, ya que de otro modo no sería óptimo traerte todos los datos para filtrarlos localmente. Revisa la documentación de tu API, es posible que exista esa opción pasándole parámetros a la consulta remota.

Para escribir código envolver con: <pre class="language-xxx"><code> </code></pre> ,reemplaza las xxx (php, css, html)

*

* Gravatar habilitado

Barra lateral principal

Curso Decodifica WordPress

Únete a DecodeCMS

Recibirás como regalo:

Guia práctica con video:
¿Quieres agregar código a WordPress? Revisa las diferentes opciones que tienes.Ver más

Omnisend
Alojamiento Wordpress

Niveles

Básico Intermedio Avanzado

Etiquetas

accesibilidad css dashboard editor error funcionalidad herramientas imagen js librería mejoras optimización seguridad SEO social woocommerce

Populares

Metadata de imágenes en WordPress

Tabla de Contenidos en WordPress sin plugins

Usar un plugin para crear plugins

Cómo modificar una plantilla de WooCommerce

© logo decode pie
Política de Privacidad | Política de devoluciones
Copyrigth 2023 Todos los derechos reservados