Easily display your last Tweet

I wanted to show my latest tweet on the front page of this site, and although I know there are several plugins which probably could've helped me do this, I decided to see how easy the API was to use.

It turned out to be incredibly easy, as long as you have PHP 5.2 or higher, that is.

This is the code:

require_once(ABSPATH . 'wp-includes/class-snoopy.php');
$snoopy = new Snoopy;
$snoopy->fetch("http://twitter.com/statuses/user_timeline/jdevalk.json?count=1");
$twitterdata = json_decode($snoopy->results,true);
echo "<p>\"".$twitterdata[0]["text"]."\"</p>";

As you can see, I use the Snoopy library to fetch the data, as that comes with WordPress by default. Than I decode the JSON results by using the json_decode function. This is the reason you need PHP 5.2 or up, as this was only included with this version of PHP.

Next, we output it. Of course, this is a quick & dirty implementation. If I got dugg now, and 1,000 people a minute came looking at that page, it should have some sort of caching in there. For now though, this is fine as it is!

Update: As Kim noticed in the comments, I've added some code to automatically link any @username mentions to those usernames. Replace the last echo line above with this:

$pattern = '/\@([a-zA-Z]+)/';
$replace = '<a href="http://twitter.com/'.strtolower('\1').'">@\1</a>';
$output = preg_replace($pattern,$replace,$twitterdata[0]["text"]);
echo "<p>\"".$output."\"</p>";

You could even decide to add rel="nofollow" the $replace if you don't want those links to give juice.

Update 2: To make it even more complex, here is the entire code I now use, which excludes replies and caches the Twitter API requests so you won't overload the API:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
require_once(ABSPATH . 'wp-includes/class-snoopy.php');
$tweet   = get_option("lasttweet");
$url  = "http://twitter.com/statuses/user_timeline/jdevalk.json?count=20";
if ($tweet['lastcheck'] < ( mktime() - 60 ) ) {
  $snoopy = new Snoopy;
  $result = $snoopy->fetch($url);
  if ($result) {
    $twitterdata   = json_decode($snoopy->results,true);
    $i = 0;
    while ($twitterdata[$i]['in_reply_to_user_id'] != '') {
      $i++;
    }
    $pattern  = '/\@([a-zA-Z]+)/';
    $replace  = '<a href="http://twitter.com/'.strtolower('\1').'">@\1</a>';
    $output   = preg_replace($pattern,$replace,$twitterdata[$i]["text"]);  
 
    $tweet['lastcheck'] = mktime();
    $tweet['data']    = $output;
    $tweet['rawdata']  = $twitterdata;
    $tweet['followers'] = $twitterdata[0]['user']['followers_count'];
    update_option('lasttweet',$tweet);
  } else {
    echo "Twitter API not responding.";
  }
} else {
  $output = $tweet['data'];
}
echo "<p>\"".$output."\"</p>";

As you can see it also saves the amount of followers you have into $tweet['followers'], which I then use to display this:

<p>
  <a href="http://twitter.com/jdevalk">
    <?=$tweet['followers']?> followers on Twitter, and you?
  </a>
</p>

Update 3: Another fix to automatically make all links clickable, below this line:

$output = preg_replace($pattern,$replace,$twitterdata[$i]["text"]);

Add:

$output = make_clickable($output);

This will use the WordPress internal make_clickable function to make sure that all URL's are clickable.

Enjoy!

25 Responses to “Easily display your last Tweet”

  1. Wow awesome share here Joost, was just looking for something like that about 3 hours ago, thank you :)

  2. Thanks! This is great. I've been using twitter tools to do the same thing but would rather not depend on a plugin. Would it be complicated to have it remove any @ replies?

  3. I'm a total dunce when it comes to these things and generally need exact step-by-step instructions. When I tried this on my own site the @name was not linked nor was the link that I was sharing. I see on your front page that username of the person that you were talking to was linked. Am I missing something completely obvious?

    Also, I have never commented here until today but I want to thank you. I learn so much from your articles and your newsletter.

  4. Thanks so much!! You're the best :-)

  5. Ok - you're going to think I'm the biggest pest. I can use the original example and change it to link to the username but when I use the full code I get the following error

    Missing argument 1 for Snoopy::fetch(), called in /home/kimwood/public_html/stage/wp-content/themes/kimwoodbridge/header.php on line 73 and defined in /home/kimwood/public_html/stage/wp-includes/class-snoopy.php on line 123

    Thanks!

  6. Hey Kim,

    Joost just missed the variable out the fetch. Change line 6 to:

    $result = $snoopy->fetch($url);

    and that works great for me. Cheers for the code Joost!

  7. Thnx for the code. Something to play with.

    Regards

    Champi

  8. Thanks Anthony!

    Got it - it's in the header of my website, if you want to check it out. :-)

  9. hey joost, this is a great code!
    I'm going to use the code on my new website/blog that I'm working on!
    But I have a few questions about it:
    I want to display the latest 3 (or a variable) tweets, in stead of the latest one.
    Also, it would be great if the code would display the time at which the tweet was tweeted.
    I hope you can help me with these things, because I'm not such a php-knower!...
    again: thanks for the great code!
    Nout

  10. I like this a lot, but is there a way of getting a time stamp of the tweet? and a short URL?

  11. Hi. I might've missed something but where do you input a Twitter ID or username?

  12. Seems like a great plugin, has exactly what I want. But I'm having a hard time getting it to work on my site. Trying to put it in the header directly above the nav bar but when I add it in the header.php, I just get the code to show up on the site. Am I putting it in the wrong file? My site is on Wordpress 2.7. Thanks in advance, can't wait to get it running!

  13. How can I get a similar code for a non-Wordpress site? I want to put my latest tweet in the header of my vBulletin forum.

  14. Thanks for the code..it works flawlessly on my blog. How can I retrieve the last 5 tweets as oppose to just 1?

  15. Add this to parse hashtags:

    $find = "/(^|\s)#(\w*)/i";
    $replace = "$1#$2";
    $output = preg_replace($find, $replace, $output);
    </pre
  16. Hello Yoast,
    I integrated your code into the plugin"Pretty Links" (see http://die-truppe.com/jlf for an example). I also tried to make tweet-links clickable by adding $output = make_clickable($output);
    I then tried to add target="_blank" as with Pretty Links the tweet-URL is opened within a frame:

    $replace = ' href="http://twitter.com/'.strtolower('\1').'" >@\1';

    Unfortunately this code didn´t work; target="_blank" is not added; instead the link is marked with rel="nofollow". Do you have an idea how to make this work?
    Thanks for any help!
    Robert

12 Tweetbacks to “Easily display your last Tweet”

  1. Twitter avatar for

    @dcagle This will work on your blog. I use it in my header. http://bit.ly/215aPc

  2. Twitter avatar for

    @lizaunson Hi. I'm using this code from Yoast http://bit.ly/215aPc

  3. Twitter avatar for
  4. Twitter avatar for

    Added latest tweets section to my blog with the help of this tutorial http://yoast.com/display-latest-tweet/

  5. Twitter avatar for

    @grittler don't know if you're a coder, but you might want to look at this: http://yoast.com/display-latest-tweet/

  6. Twitter avatar for

    Hey, I added my latest tweet to my blog at http://www.bryanbrazil.com! Thanks to instructions at http://yoast.com/display-latest-tweet/

  7. Twitter avatar for

    @shawnwood for what? I use twitterfeed.com to syndicate my feed to Twitter. For the sidebar tweet: http://is.gd/5ajh

  8. Twitter avatar for

    http://is.gd/5ajh <-- An easy was to parse your Twitter feed with PHP.

  9. Twitter avatar for

    How To: Easily display your latest tweet on your WordPress blog http://yoast.com/display-latest-tweet/

  10. Twitter avatar for

    RT @pimpmywordpress How To: Easily display your latest tweet on your WordPress blog http://yoast.com/display-latest-tweet/

  11. Twitter avatar for

    Display your latest tweets: http://yoast.com/display-latest-tweet/

icon

Want an avatar too?

Go to gravatar.com and upload your preferred avatar.

You can use: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong> <pre lang="" line="" escaped="">

15 Trackbacks to “Easily display your last Tweet”

  1. BlogBuzz October 25, 2008 | Webmaster-Source - Sat, October 25th, 2008 at 11:04
  2. Succumb | archGFX - Thu, October 30th, 2008 at 16:30
  3. The Technorati API And Your Blog | The Affiliate Desk - Thu, November 13th, 2008 at 18:52
  4. Do You Display Your Tweets? | The Affiliate Desk - Fri, November 14th, 2008 at 05:17
  5. Install WordPress 2.6.3 | The Affiliate Desk - Sat, November 15th, 2008 at 16:17
  6. Display Your Latest Tweet on Your Website - Mon, April 13th, 2009 at 12:07
  7. Displaying your latest tweet on WP, sans plugins - Fri, May 29th, 2009 at 08:41