Mostrar ultimos tweets php

A veces por estética, otras por mantener informado al lector o por incitar a que nos sigan en Twitter es necesario mostrar los últimos Tweets en la plantilla de nuestro tema o en nuestros sitios web.

Para poder colocar estos últimos tweets en nuestro tema tendremos que tener una forma de extraerlos de nuestro perfil de Twitter.

Hay muchas maneras de sustraer los tweets de un perfil de Twitter; JQuery, Javascript, php… Pero nosotros, por ahora, nos centraremos en la última; php.

Para quien no lo sepa, podemos agregar funciones propias (además de las que ya tieneWordPress) editando el fichero functions.php de la carpeta wp-content/themes/nuestrotema/, donde nuestrotema es el nombre del tema al que queremos añadirle dicha función.

La función que tenemos que añadir es la siguiente:

function get_tweets($usuario, $tweets) {
 	$feed = "http://search.twitter.com/search.atom?q=from:" . $usuario . "&rpp=" . $tweets;
 	$xml = simplexml_load_file($feed);
 	$boleano = 0;
	foreach($xml->children() as $child) {
		foreach ($child as $value) {
			if($value->getName() == "content") {
				$content = $value . "";
				echo "<p class='twit".$boleano."'>".$content."</p>";
			}
		}
		if($boleano == 0){
			$boleano = 1;
		}
		else if($boleano ==1){
			$boleano = 0;
		}
	}
}

Podríamos pararnos aquí, decirte cómo utilizar esta función en tu tema y terminar la entrada; pero iremos más allá y explicaremos cómo funciona para que la puedas entender y editar a tu gusto.

Declarando la función

function get_tweets($usuario,$tweets) {

Esta es la primera línea de nuestra función y su funcionalidad es declararla y decirle los parámetros que va a recibir como argumento.

Vamos a verlo con un poco más de detalle:

Definiendo las variables

$feed = "http://search.twitter.com/search.atom?q=from:" . $usuario . "&rpp=" . $tweets;
$xml = simplexml_load_file($feed);
$boleano = 0;

En esta parte del código estamos definiendo las variables que vamos a utilizar a lo largo de la función.

El búcle

Como en toda función que reitera la misma acción numeradas veces, ha de haber un búcle.
En este caso utilizamos un búcle foreach (¿Quieres saber cómo funciona un búcle foreach?).

foreach($xml->children() as $child) {
	foreach ($child as $value) {
		if($value->getName() == "content") {
			$content = $value . "";
			echo "<p class='twit".$boleano."'>".$content."</p>";
		}
	}
	if($boleano == 0){
		$boleano = 1;
	}
	else if($boleano ==1){
		$boleano = 0;
	}
}

En realidad se trata de un doble búcle foreach; el primero gestiona cada objeto que recogimos previamente en la variable $xml y el segundo gestiona esos elementos, recoge su contenido y hace un echo con él.

Si no eres muy conocedor de php o los lenguajes de programación en general, no voy a pedirte que sepas todo lo que hace el código anterior, sólo quiero que entiendas la siguiente línea:

echo "<p class='twit".$boleano."'>".$content."</p>";

Esta línea es la que mostrará los tweets.
En mi caso, los puse como párrafos porque me resultaba más cómodo a la hora de maquetar nuestro tema de wordpress, pero también se podría hacer en forma de lista desordenada, ordenada… Esto es muy flexible.

Si te das cuenta, le estamos añadiendo una clase un tanto extraña al párrafo que muestra nuestros tweets.

class='twit".$boleano."'

Como explicaba arriba en las variables que definíamos, yo había creado un booleano que valdrá aleatoreamente 1 o 0 dependiendo del orden del tweet.

if($boleano == 0){
	$boleano = 1;
}
else if($boleano ==1){
	$boleano = 0;
}

Con esta parte del código, por cada vuelta del búcle superior (el que cambia de tweet), el booleano cambia su valor; con esto logramos que el primer tweet tenga siempre una clase llamada twit0, el segundo twit1, el tercero vuelva a tener una clase twit0 y así sucesivamente.

El efecto logrado con un poco de CSS es que cada tweet tendrá un estilo, alternándose y mejorando la forma en que los mostramos.

Te diría que revises mi página de autor pero si en un futuro cambiamos el tema y eliminamos esta función (cosa imprevisible) no podrías ver un ejemplo del funcionamiento; es por esto por lo que te dejo una imágen de cómo debería verse:
Ultimos tweets katharsix dariobf

¡MANTENME INFORMADO!

¡Gracias por tu interés en estar informado del próximo lanzamiento de mis cursos! 😎

¡No hago spam! Lee la política de privacidad para tener más información.

20 comentarios en “Mostrar ultimos tweets php

  1. Hola Darío, qué tal? Muy interesante el tutorial realmente! Pero personalmente quiero añadirle una pequeña «modificación» que no sé si es posible: en lugar de mostrar los tweets de un usuario, me gustaría que se vea un listado de tweets relacionados con los distintos artículos de mi blog. Pienso que tal vez modificando «$feed = «http://search.twitter.com/search.atom?q=from:» . $usuario . «&rpp=» . $tweets».

    De todos modos, todavía no pude implementarlo bien! Si podés ayudarme, te lo agradecería! :)

    1. Hola Santiago,
      Todo un placer servirte de ayuda.
      Efectivamente, para adaptar la función a tus intereses habría que modificar la sentencia que comentas (variable $feed en el ejemplo). La manera más sencilla que se me ocurre sería haciendo una búsqueda en twitter y cogiendo el query que retorna su URL.

      Me explico: si te das cuenta, para construir el feed usamos la siguiente url: http://search.twitter.com/search.atom?q=from. el q= corresponde con tu búsqueda, por lo que si buscas algo concreto en la web de twitter te retornará una sentencia nueva con la que poder editar esa url del feed.

      No sé si me explico correctamente, pero te enseñaré un ejemplo:
      Mi nombre es Dario, y quiero saber qué sucede en twitter con ese nombre. Voy a la web de twitter y en el buscador escribo «Dario»; eso me da una URL como esta: https://twitter.com/#!/search/dario. Hasta aquí todo perfecto, pero… ¿cómo convierto esa URL en un feed para la función? Cojo la palabra de búsqueda y la añado tras el q= de la primera sentencia, quedando de la siguiente manera: «$feed = «http://search.twitter.com/search.atom?q=dario».

      No sé si realmente te funcionará, pero debería.

      El segundo problema que me comentas es que no eres capaz de implementar la función.

      Como explico en el post, basta con copiar la función a tu functions.php (si no existe crealo dentro de la carpeta del tema de wordpress que estás utilizando)
      Después de haber copiado la función, sólo tendrás que llamarla desde donde quieres que se muestren tus tweets de la siguiente manera:
      < ?php get_tweets(TU_USUARIO, NUMERO_DE_TWEETS_A_MOSTRAR); ?>

      Con eso queda instalada y funcionando la función.

      Cualquier duda aquí estamos.

      Un saludo.

  2. Muchísimas gracias, Darío! Valoro mucho que te hayas tomado el trabajo de responder a mi comentario, cuando posiblemente otro no lo hubiera hecho, gracias por eso! :)

    Mi idea es «mostrar conversaciones sobre temas relacionados a un post». Un ejemplo, tengo un artículo que es «Hola cómo andás». Lo que me gustaría lograr es que el feed de Twitter sea para cada post en particular, es decir que al entrar a ese artículo se muestre todo lo hablado en la red social acerca de «Hola cómo andas».

    Porque se me ocurre que en el search no podría poner «http://search.twitter.com/search.atom?q=»

    Sé que es algo bastante raro lo que quiero hacer jaja, si no se puede o es demasiado complejo no te preocupes eh! Muchísimas gracias!

  3. Carajo, no puedo poner la búsqueda que me gustaría hacer! Te la explico: se me ocurre que en el search no podría poner “http://search.twitter.com/search.atom?q= *llamada a the_title()*”

  4. Más me agrada a mi ver que le sirve a alguien el contenido de nuestro sitio.

    En primer lugar, creo que por ahí van los tiros (utilizando el the_title();), pero te metes en terreno embarrado.

    ¿Realmente crees que tú serás el primero y único que ponga cierta consecución de palabras en twitter (como en el ejemplo que pones de «Hola como estás?»? Con ese script que mencionas estarías sacando toda la información de Twitter que mencione las palabras del título de tu entrada tal cual, cosa que, bajo mi punto de vista, es una locura…

    Aún así, los tiros irían por ahí… o por tweet. Si te fijas en nuestro twitter, cada entrada está relacionada con un tweet. Una idea que me viene a la cabeza es asociar de alguna manera en la base de datos de tu wordpress esas dos cosas (enlace y tweet) y con una función mostrar en cada entrada, los RT correspondientes a esa entrada.

    De todas formas, escapa a mis conocimientos dado que desconozco si en la API de Twitter existen cosas tan específicas…

    Siento no poder ayudarte más, pero realmente lo que quieres hacer es un poquito locura.

  5. Jaja sí, realmente pensé que lo sería! Pero por otra parte pensé que en una de esas el buscador de Twitter sería como el de Google (es decir, que utiliza operadores «OR» en lugar de «AND» cuando no encuentra resultados exactos sobre lo que estoy buscando). Sin embargo pude observar que no es así, así que la idea va a quedar dilapidada, creo :)

    Realmente muchísimas gracias por tu ayuda, en serio! :)

  6. Hola, ¿sabes alguna forma de hacer que se mustren más de 100 tweets?. Necesito acceder al menos a los últimos 500 pero con esta forma solo permite ver 100.

  7. Hola Dario!
    Primero que todo te felicito por tu excelente blog.
    Segundo quería pedirte ayuda en este tema del mostrar los últimos tweets en mi sitio.
    Sucede que tenía un codigo que mostraba todos los tweets que deseaba, pero me solicitaron poner el efecto de tipo carrousel vertical en esa sección y mientars estaba probando en el sitio ingrese un código que al parecer fuinciona con la API de Twitter y como mencionas tú al parecer tiene límite de tweets, por lo que resulta que no puedo mostrar los tweets en el sitio.
    ¿Como puedo solucionar esto? he intentado poner el código que muestras en este post pero no muestra nada en mi caso.
    Por favor ayúdame

  8. Hola Alberto,
    No entiendo realmente tu problema, pero en la función que se menciona aquí puedes pasarle como parámetro el número de tuits a mostrar (variable $tweets).

    Saludos.

  9. Hola Darío:

    Gracias por tu post! muy útil! lo he aplicado y funciona perfectamente para mostrar el último tweet en una web, pero lo malo es que al cabo de unos días, si no se publica en twitter, se borra de la web ¿sabes si están limitado a unos días?

    Gracias!

    1. Hola Pablo,
      pues exactamente no lo sé. Concretamente desde la última actualización del API de Twitter se experimenta este error y no sé si efectivamente tiene caducidad o qué…

      Saludos.

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

*

*

DARÍO BALBONTÍN FERNÁNDEZ es el Responsable del tratamiento de los datos personales del usuario y le informa que estos datos serán tratados de conformidad con lo dispuesto en el Reglamento (UE) 2016/679 de 27 de abril (GDPR) y la Ley Orgánica 3/2018 de 5 de diciembre (LOPDGDD), por lo que se le facilita la siguiente información del tratamiento: Fin del tratamiento: mantener una relación comercial y el envío de comunicaciones sobre nuestros productos y servicios. Criterios de conservación de los datos: se conservarán mientras exista un interés mutuo para mantener el fin del tratamiento y cuando ya no sea necesario para tal fin, se suprimirán con medidas de seguridad adecuadas para garantizar la seudonimización de los datos o la destrucción total de los mismos.Comunicación de los datos: No se comunicarán los datos a terceros, salvo obligación legal. Derechos que asisten al usuario: Derecho a retirar el consentimiento en cualquier momento. Derecho de acceso, rectificación, portabilidad y supresión de sus datos y a la limitación u oposición al su tratamiento. Derecho a presentar una reclamación ante la Autoridad de control (agpd.es) si considera que el tratamiento no se ajusta a la normativa vigente. Datos de contacto para ejercer sus derechos: contacto@dariobf.com.