Advertisement
  1. Code
  2. Creative Coding

Un vistazo a la API HTTP de WordPress: Un ejemplo práctico de wp_remote_get

Scroll to top
Read Time: 13 min
This post is part of a series called A Look at the WordPress HTTP API.
A Look at the WordPress HTTP API: A Brief Survey of wp_remote_get
A Look at the WordPress HTTP API: wp_remote_get - the Response

Spanish (Español) translation by Eva Collados Pascual (you can also view the original English article)

En el último artículo de esta serie, echamos un vistazo a las funciones PHP que están disponibles para realizar solicitudes remotas.

En concreto, revisamos lo siguiente:

  • file_get_contents
  • cURL

Y también hablamos sobre la función de WordPress wp_remote_get.

En este artículo, vamos a poner wp_remote_get a trabajar. Esta función forma parte de la API HTTP, y la vamos a usar en un caso práctico para recuperar las dos siguientes cosas:

  1. El número de seguidores que tenemos en Twitter
  2. Nuestro Tweet más reciente

Lo bueno es que no necesitaremos usar ningún OAuth ni nigún mecanismo de autenticación, solo tendremos que aprovechar las respuestas de Twitter y la funcionalidad JSON de PHP.

Así que en este artículo, vamos a echar un vistazo a cómo llevar exactamente esto a la práctica, luego terminaremos la serie revisando toda la información que wp_remote_get devuelve para que sepamos cómo manejarla correctamente en futuros proyectos.


Preparar el directorio del plugin

Al igual que con todos los plugins, lo primero que tenemos que hacer es crear un nuevo directorio en nuestro propio directorio wp-content/plugins. Para los fines de esta demostración, llamaremos a nuestro plugin Twitter Demo.

Por lo tanto, vamos a nombrar el directorio del plugin twitter-demo y al archivo del plugin asociado lo denominaremos twitter-demo.php.

Twitter DemoTwitter DemoTwitter Demo

A continuación, tenemos que seguir adelante y crear el encabezado del plugin para que WordPress sea capaz de detectar el archivo del mismo, así que hagamos eso ahora.


Crear el plugin

En primer lugar, coloca el siguiente código en el encabezado del archivo twitter-demo.php:

Ten en cuenta que no vamos a internacionalizar este plugin. Hemos tratado este tema en otro tutorial y es algo que está más allá del alcance de lo que estamos tratando de hacer en este artículo.

En este punto, ya deberías ser capaz de ver el plugin mostrándose en el panel Plugins de tu instalación de WordPress. Puedes activarlo aunque, en realidad no hará nada.

Al menos, aún no.


Dar vida al plugin

Al igual que con el resto de los plugins de demostración que publico aquí, creo que es importante describir primero qué es lo que va a hacer el plugin antes de empezar a trabajar con el código.

Por tanto, esto es lo que podemos esperar:

  • En la parte inferior de cada entrada, mostraremos una pequeña notificación que diga: Tengo un número X de seguidores en Twitter. Mi último tweet fue Y.
  • Nos aseguraremos de hacer esto solo en la página de entrada individual para que no se muestre en el índice principal o en las páginas de archivo del sitio.

Evidentemente, es un poco desagradable mostrar esto en la parte inferior de una entrada, pero recuerda que el propósito de este plugin es demostrar cómo utilizar wp_remote_get, cómo analizar una respuesta de Twitter, y cómo mostrarla.

Dónde se muestre el contenido es algo que nos preocupa mucho menos.

Por lo tanto, vamos a seguir adelante creando la clase que proporcionará esta funcionalidad.

1. Crear la clase Twitter de demostración

Antes de hacer nada, vamos a crear la clase que usaremos para realizar la solicitud a Twitter. He incluido todo el siguiente código junto con la documentación para cada atributo y método.

Ten en cuenta que vamos a llenar el resto de estos métodos a medida que avancemos, y también tendré el código fuente completo del plugin al final del artículo.

Antes de ir más lejos, me gustaría señalar que vamos a usar el patrón Singleton para este plugin. Hemos cubierto este patrón de diseño en un artículo anterior, y aunque sus ventajas están fuera del alcance de este artículo, recomiendo que leas el artículo relacionado para asegurarme de que entiendas completamente por qué estamos configurando nuestro plugin de esta manera.

A continuación, echemos un vistazo a las funciones que hemos establecido para ser conscientes de hacia dónde nos dirigimos exactamente:

  • En el constructor añadiremos una acción para anexar nuestra información de Twitter a una entrada individual
  • display_twitter_information se utilizará para representar el mensaje en la parte inferior de la entrada
  • make_twitter_request solicitará y devolverá los datos de Twitter (o null si se produce un error en la solicitud)
  • get_follower_count devolverá el número de seguidores para el usuario especificado (o -1 si hay un problema)
  • get_last_tweet devolverá el último tweet del usuario o un mensaje si el plugin falla

¿Ha quedado suficientemente claro? En este punto, vamos a trabajar en la solicitud de información a Twitter para que podamos procesarla.

2. Solicitar datos a Twitter

En primer lugar, vamos a rellenar la función make_twitter_request con el siguiente código. Ten en cuenta que lo explicaré después del código:

En la primera línea del código estamos aprovechando wp_remote_get para hacer nuestra solicitud. Ten en cuenta que estamos usando el parámetro $username para recuperar el feed JSON del usuario. Observa lo sencillo que es realizar una solicitud mediante la función wp_remote_get.

Este nombre de usuario se pasa desde una función distinta que veremos en breve.

A continuación, ten en cuenta que ajustamos el código en un try/catch. Esto se debe a que la solicitud a Twitter podría fallar. Si no falla, usaremos la función json_decode de PHP para decodificar el cuerpo de la respuesta; de lo contrario, estableceremos la respuesta a null.

Esto hará que resulte fácil crear un condicional en la función de llamada.

Antes de ir más allá, es importante tener en cuenta que aquí hay un sutil aporte: Advierte que estamos decodificando la clave 'body' de la matriz $response que es devuelta. Para aquellos de vosotros que tengáis más curiosidad por esto, en el siguiente artículo vamos a echar un minucioso vistazo a la respuesta que recibimos al usar wp_remote_get.

Por ahora, ten en cuenta simplemente que el índice de body de la matriz $response es solo una pieza de información que tenemos a nuestra disposición.

3. Llamada a la función de solicitud

Ahora que hemos definido la función responsable de hacer una solicitud a Twitter, vamos a definir la función que solicitará datos de Twitter y luego los mostrará bajo el contenido de la entrada.

Una vez más, aquí tienes el código, así que ahora voy a explicar qué está haciendo exactamente:

En primer lugar, indicarte que esta es la función más larga de todo el plugin. Si puedes entenderla, es que estás preparado para completarlo.

Recuerda: Esta función es lo que será invocado durante la acción the_content que será definida en nuestro constructor una vez que el plugin esté terminado.

Por tanto, la función comprueba primero si estamos en una entrada individual. Si no es así, simplemente devolverá el contenido; de lo contrario, hará lo siguiente:

  • Intentos de hacer una solicitud a Twitter
  • Si se produce un error en la solicitud, se mostrará un mensaje indicándolo
  • De lo contrario, imprimirá un mensaje que muestre el número de seguidores y el último tweet que la persona dejó
  • Añadirá el mensaje al contenido de la entrada

Una nota importante: En esta función, especifica el nombre de usuario para del que deseas recuperar la información. Por ejemplo, observa que estoy intentando recuperar información para @WPTuts invocando a $this->make_twitter_request('wptuts').

4. Leer la información

En este punto, estamos listos para leer la información y concatenar las cadenas en nuestro mensaje para mostrar al usuario. Haremos esto usando el método get_follower_count y get_last_tweet.

Debido a que estos métodos son tan similares, echaremos un vistazo a ambos y luego los explicaré después del código:

Ten en cuenta que las dos funciones son similares en el sentido en que ambas aceptan los anteriores datos $json del plugin. A continuación, ambos usan un operador ternario para determinar si deben devolver el texto solicitado o un mensaje predeterminado.

En otras palabras, si pretendemos mostrar el número de seguidores (followers_count) y el valor es mayor que -1, sabremos que tenemos un valor a mostrar, así que lo devolveremos; de lo contrario, devolveremos -1 a modo de indicador de que el valor no está configurado correctamente.

Esto nos permite codificar defensivamente contra algo que puede salir mal cuando se procesen los datos.


El plugin de demostración de Twitter

Como prometí, aquí está el código fuente en su totalidad acompañado de su correspondiente documentación:

En realidad es relativamente simple, ¿verdad? De hecho, hay tantos comentarios de código como líneas de código real, por lo que el plugin en sí es muy pequeño.


Conclusión

Esta demo pretende mostrar lo fácil que es usar wp_remote_get para interactuar con servicios de terceros, analizar su respuesta e integrarla en un plugin. Concedido, esto se queda muy en la superficie, pero aun así muestra el concepto.

En el siguiente artículo de esta parte de la serie, echaremos un vistazo a toda la información que podemos pasar a wp_remote_get para ver cuán flexible es el método. Después de eso, echaremos un detallado vistazo a los datos de respuesta para que podamos escribir solicitudes más complejas y escribir más código defensivo, más defensivamente.

Advertisement
Did you find this post useful?
Want a weekly email summary?
Subscribe below and we’ll send you a weekly email summary of all new Code tutorials. Never miss out on learning about the next big thing.
Advertisement
Looking for something to help kick start your next project?
Envato Market has a range of items for sale to help get you started.