Entradas etiquetadas como ‘Twitter’

Escrito por Iván Alonso el Viernes 18 de Diciembre de 2009

200912181358.jpg

Vía Nunca me entero de nada

Escrito por Iván Alonso el Viernes 27 de Noviembre de 2009

Esto ha costado por el modo en que se manejan los strings, pero al final se ha conseguido.

Este post de WPRecipes explica cómo conseguirlo, pero el problema viene cuando en tu estado de Twitter se incluye algún enlace. En ese caso el enlace reconstruido no se verá correctamente ya que las comillas dobles aparecerán dos veces (“”), y se añadirá al inicio del enlace el nombre de tu propio dominio para intentar solucionarlo, por lo que tus enlaces siempre serán algo del tipo:

http://www.tudominio.com/"enlace/de/twitter"

Y eso, lógicamente, no funciona. Gracias a un comentario de Nick Heer en este otro post de Smashing Magazine, al respecto de este tema, conseguí llegar a un trozo de código escrito por él… pero que tampoco funciona correctamente.

Al final, la solución ha sido (y por el amor del espagueti volador, con comillas simples, que parece que la gente no sepa cómo funciona PHP):

function nb_parse_feed($feed)
{
    $stepOne = explode('<content type="html">', $feed);
    $stepTwo = explode('</content>', $stepOne[1]);
    $tweet = $stepTwo[0];
 
    $tweet = str_replace('&lt;', '<', $tweet);
    $tweet = str_replace('&gt;', '>', $tweet);
    $tweet = str_replace('&quot;', '"', $tweet);
    $tweet = str_replace('&amp;', '&', $tweet);
    $tweet = str_replace('&lt;a href', '<a href', $tweet);
    $tweet = str_replace('"&gt;', '">', $tweet);
    $tweet = str_replace('&lt;/a&gt;', '</a>', $tweet);
 
    return $tweet;
}
 
function nb_twitter_status()
{
    // Tu usuario de Twitter
    $username = 'neverbot';
    $feed = 'http://search.twitter.com/search.atom?q=from:' . $username . '&rpp=1';
    $twitterFeed = file_get_contents($feed);
    return nb_parse_feed($twitterFeed);
}

Y, donde lo necesites:

<?php echo nb_twitter_status(); ?>

Lógicamente, puedes cambiar los nombres de las funciones, yo he utilizado el prefijo nb porque las he incluido en un archivo de funciones comunes que tengo para los themes de WordPress, que incluyo con:

include_once('nb_funcs.php');