This Twitter feed tutorial is designed to help anyone wishing to build a custom website twitter feed based on a user timeline. It uses the new API authentication required by Twitter for all Twitter feed requests.
Many sites I work on these days have an integrated Twitter feed requirement of some sort. If you don’t like the default design and restrictions of the standard Twitter Feed widgets, then hopefully you’ll benefit from the customisable code and twitter feed demo.
The twitter feed post is split into 2 parts; 1) Twitter Feed Authentication (PHP) and 2) feed integration and styling. There’s also an optional step for twitter feed caching which will speed up loading of Tweets. In these demos, I’m using my twitter username @tomwebdev
Part 1: Authenticating a Twitter feed
Head over to the twitter feed authentication post. Once you’ve got you’re tweets output to .json format, proceed to part 2
Part 2: Integrating and Styling a custom JQuery Twitter Feed
We start by setting up a basic styled twitter feed, using JavaScript and jQuery to parse the PHP file we created in part one in .json feed format. We will output the .json as HTML and style it using CSS. This basic feed displays the tweet, relative time and twitter profile image and you can view the twitter feed demo here.
1. The HTML:
Nice and simple; 3 links required between the head tags for jQuery, the twitterfeed .js file and a CSS file.
<script type="text/javascript" src="js/jquery-1.8.2.min.js"></script> <script type="text/javascript" src="js/twitterfeed.js"></script> <link href="css/twitter-styles.css" rel="stylesheet" type="text/css" />
This is followed by a single DIV with ID ‘twitter-feed’:
<div id="twitter-feed"></div>
2. The JavaScript:
The twitter feed JavaScript has 3 functions; the main JSON call to the live twitter feed, a function to calculate how long ago the tweet was made and a function to detect and add links to any URLs within the feed. The $.getJSON() call requests the live feed from the authenticating PHP script and the call is asynchronous, which means any other JavaScript can execute before waiting for the twitter request to be successful.
Replace the twitterprofile variable to any twitter username of your choice and tweak the variables below that to determine if URL links and profile pic should be displayed. The displaylimit variable determines how many tweets are shown.
The below JS makes a request to a PHP script that authenticates for Twitter V1.1 API, please see my Twitter authentication tutorial
// JQuery Twitter Feed. Coded by www.webdevdoor.com (2012) and modified from https://twitter.com/javascripts/blogger.js
$(document).ready(function () {
var displaylimit = 3;
var twitterprofile = "tomelliott0";
var screenname = "Tom Elliott";
var showdirecttweets = false;
var showretweets = true;
var showtweetlinks = true;
var showprofilepic = true;
var headerHTML = '';
var loadingHTML = '';
headerHTML += '<a href="https://twitter.com/" ><img src="images/twitter-bird-light.png" width="34" style="float:left;padding:3px 12px 0px 6px" alt="twitter bird" /></a>';
headerHTML += '<h1>'+screenname+' <span style="font-size:13px"><a href="https://twitter.com/'+twitterprofile+'" >@'+twitterprofile+'</a></span></h1>';
loadingHTML += '<div id="loading-container"><img src="images/ajax-loader.gif" width="32" height="32" alt="tweet loader" /></div>';
$('#twitter-feed').html(headerHTML + loadingHTML);
$.getJSON('get-tweets1.1.php',
function(feeds) {
//alert(feeds);
var feedHTML = '';
var displayCounter = 1;
for (var i=0; i<feeds.length; i++) {
var tweetscreenname = feeds[i].user.name;
var tweetusername = feeds[i].user.screen_name;
var profileimage = feeds[i].user.profile_image_url_https;
var status = feeds[i].text;
var isaretweet = false;
var isdirect = false;
var tweetid = feeds[i].id_str;
//If the tweet has been retweeted, get the profile pic of the tweeter
if(typeof feeds[i].retweeted_status != 'undefined'){
profileimage = feeds[i].retweeted_status.user.profile_image_url_https;
tweetscreenname = feeds[i].retweeted_status.user.name;
tweetusername = feeds[i].retweeted_status.user.screen_name;
tweetid = feeds[i].retweeted_status.id_str
isaretweet = true;
};
//Check to see if the tweet is a direct message
if (feeds[i].text.substr(0,1) == "@") {
isdirect = true;
}
//console.log(feeds[i]);
if (((showretweets == true) || ((isaretweet == false) && (showretweets == false))) && ((showdirecttweets == true) || ((showdirecttweets == false) && (isdirect == false)))) {
if ((feeds[i].text.length > 1) && (displayCounter <= displaylimit)) {
if (showtweetlinks == true) {
status = addlinks(status);
}
if (displayCounter == 1) {
feedHTML += headerHTML;
}
feedHTML += '<div class="twitter-article">';
feedHTML += '<div class="twitter-pic"><a href="https://twitter.com/'+tweetusername+'" ><img src="'+profileimage+'"images/twitter-feed-icon.png" width="42" height="42" alt="twitter icon" /></a></div>';
feedHTML += '<div class="twitter-text"><p><span class="tweetprofilelink"><strong><a href="https://twitter.com/'+tweetusername+'" >'+tweetscreenname+'</a></strong> <a href="https://twitter.com/'+tweetusername+'" >@'+tweetusername+'</a></span><span class="tweet-time"><a href="https://twitter.com/'+tweetusername+'/status/'+tweetid+'">'+relative_time(feeds[i].created_at)+'</a></span><br/>'+status+'</p></div>';
feedHTML += '</div>';
displayCounter++;
}
}
}
$('#twitter-feed').html(feedHTML);
});
//Function modified from Stack Overflow
function addlinks(data) {
//Add link to all http:// links within tweets
data = data.replace(/((https?|s?ftp|ssh)\:\/\/[^"\s\<\>]*[^.,;'">\:\s\<\>\)\]\!])/g, function(url) {
return '<a href="'+url+'" >'+url+'</a>';
});
//Add link to @usernames used within tweets
data = data.replace(/\B@([_a-z0-9]+)/ig, function(reply) {
return '<a href="http://twitter.com/'+reply.substring(1)+'" style="font-weight:lighter;" >'+reply.charAt(0)+reply.substring(1)+'</a>';
});
return data;
}
function relative_time(time_value) {
var values = time_value.split(" ");
time_value = values[1] + " " + values[2] + ", " + values[5] + " " + values[3];
var parsed_date = Date.parse(time_value);
var relative_to = (arguments.length > 1) ? arguments[1] : new Date();
var delta = parseInt((relative_to.getTime() - parsed_date) / 1000);
var shortdate = time_value.substr(4,2) + " " + time_value.substr(0,3);
delta = delta + (relative_to.getTimezoneOffset() * 60);
if (delta < 60) {
return '1m';
} else if(delta < 120) {
return '1m';
} else if(delta < (60*60)) {
return (parseInt(delta / 60)).toString() + 'm';
} else if(delta < (120*60)) {
return '1h';
} else if(delta < (24*60*60)) {
return (parseInt(delta / 3600)).toString() + 'h';
} else if(delta < (48*60*60)) {
//return '1 day';
return shortdate;
} else {
return shortdate;
}
}
});
The Twitter feed also displays a loading graphic and a twitter bird image in the header which you may want to grab.
The CSS
The CSS layout is straightforward; twitter-feed is the main container div, each tweet sits in a twitter-article class and the tweet text and profile image as classes within the article container.
body {
background-color:#333;
font-family:Arial, Helvetica, sans-serif;
}
#twitter-feed {
width:258px;
margin:auto;
font-family: Arial, Helvetica, sans-serif;
margin-top:60px;
padding:8px 10px 5px 10px;
border-radius:12px;
background-color:#FFF;
color:#333;
overflow:auto;
}
#twitter-feed h1 {
color:#5F5F5F;
margin:0px;
padding:9px 0px 9px 0px;
font-size:18px;
font-weight:lighter;
}
.twitter-article, #loading-container {
width:258px;
border-top:1px dotted #CCC;
float:left;
padding:8px 0px 8px 0px;
}
#loading-container {
padding:16px 0px 16px 0px;
text-align:center;
}
.twitter-pic {
float:left;
}
.twitter-pic img {
float:left;
border-radius:7px;
border:none;
}
img {
border:none;
}
.twitter-text p {
margin:0px;
line-height:15px;
}
.twitter-text a, h1 a {
color: #00acee;
text-decoration: none;
}
.twitter-text a:hover, h1 a:hover {
text-decoration: underline;
color: #00acee;
}
.twitter-text {
width:204px;
float:left;
font-size:11px;
padding-left: 11px;
}
.tweet-time {
font-size:10px;
color:#878787;
float:right;
}
.tweet-time a, .tweet-time a:hover {
color:#878787;
}
.tweetprofilelink a {
color:#444;
}
.tweetprofilelink a:hover {
color:#444;
}
.backlink {
font-size:11px;
text-align:center;
}
.backlink a {
color:#aaa;
}
Twitter feed troubleshooting tips
- Make sure the twitter get tweets php file is correctly outputting the tweets in .json format
- It’s worth outputting at least 30 tweets in the php as the JS is set to skip past any direct tweets
- Check the php source and make sure no HTML is included after the closing ?> tag
- The get tweets php should be in the same folder as your main twitter feed page
- Uncomment the alert(feeds); line in the feeds function to make sure the array of feeds has been parsed
- Try an absolute path to the php for the $.getJSON call
- Make sure you’re using the latest jQuery file and that this appears in the HTML before twitterfeed.js
- If you are getting a JavaScript error: ‘Uncaught TypeError: Property ‘$’ of object [object Object] is not a function..’, adding a ‘$’ in the document ready function should fix it. i.e. jQuery(document).ready(function ($) {
If you want a set of tweets from a specific search phrases, hashtag or twitter handle instead, check out my tutorial for a custom Twitter search
JQuery Twitter Feed Part2: Caching Tweets
Caching a twitter feed to a local file will speed up twitter feed load time and avoid Twitters rate limiting.


var displaylimit = 3; should be displayLimit
Great script! Quick note: you have an error on line 18 – displayLimit vs. displaylimit; throws an error that displayLimit isn’t defined
Fix that and this is fabulous – exactly what I needed. Thanks so much!
Thanks for pointing out the typo Leon and Caitlin
Will this still work in March 2013 when API v 1 is deprecated? V 1.1 apparently requires oAth. I am looking for a way to replace my current custom css twitter feed as the widgets are really restrictive
Hi Lisa, this code has been modified slightly to request a PHP script which in turn authenticates with Twitter. You can check out the tutorial here:
http://www.webdevdoor.com/php/authenticating-twitter-feed-timeline-oauth/
I’ve followed your instructions exactly and can’t get this to work for the life of me! What am I missing?
Hi Mallory – I’ve recently updated the script to use Twitter Authentication – have you got a php script displaying the tweets as described in http://www.webdevdoor.com/php/authenticating-twitter-feed-timeline-oauth/?
I’ve gotten the authentication working fine. Thanks for making it easy!
However, I can’t get the feed itself to function. Any ideas? http://thepowersource309.cmswebstaging.com/wp-content/themes/tps309/twitterfeed/twittertest.php
Hi Ian,
Thanks! You’re gettweets.php seems to be displaying tweets fine as .json but your HTML seems to be missing the twitter-feed DIV element.
Hope that helps
Hi Tom!
Great tutorial – I am using Rapid Weaver for my site and would love to customize via CSS what you have here but I cannot get it working. I know it is related to Rapid Weaver, as they do things just a little differently. Would you happen to know what I may be missing? I have the ability to add the CSS code in addition to the style sheet so I thought this may be an issue as well.
Thanks,
Wade
Hi Wade,
Thanks – I’m not really familiar with Rapid Weaver but will happily take a look at your code if you want to send me a link.
Tom
I’m trying to get this to work on a website built in Sharepoint 2007, I’ve followed everything, and added/created all the files etc. But it still wont display, anyone have any ideas why this would be?
Hi Dan. Happy to take a look if you can send me a link. First thing to check is if get-tweets.php is outputting all tweets correctly? If it is, then check the that the .php file is being parsed – maybe by adding an alert(feeds); line after “function(feeds) {“
The feed should appear on this page http://www.accentgroup.org/nene/managementteam/Pages/default.aspx on the right, in the space above the facebook logo.
I’m a bit of a novice when it comes to this kind of thing. Should my ‘get-tweets.php’ file be in the same folder as my ‘twitterfeed.js’ file?
Hey Dan,
The get-tweets.php by default should work if it’s located in the same place as the page that shows the tweets. You could try changing the relative path to the php file in the JavaScript, or if in doubt use an absolute path
Tom
Hey Tom,
Thanks for your solution. It works fine for me. One question: it seems that in the demo you’re using improved script (twitterfeed.js) And it links to get-tweets1.1.php probably also improved.
I’ll be very appreciated if you provide those improved versions of both.
Many thanks
Hey Ram,
. The get-tweets1.1.php is actually the same in the demo as it is in the oAuth post.
Great, glad you got it working! Yeah, the JavaScript in the twitter feed demo is updated with a few bits and pieces such as a pre-loading graphic which I’ll have updated in this main post soon
Tom
Hi Tom,
Great article but I am not having any luck getting the feeds to display either. My get-tweets.php file is running fine and the container is on my site. Any help would be appreciated. You can see my site at dev.craftbutchery.com.
Thanks!
Hi Tom,
Think I figured it out. Looks like there are 2 displayLimit vs. displaylimit within the js.
Fixing both did it for me.
Thanks!
Val
Hey Val, glad you figured it – odd, I thought I fixed displayLimit\displaylimit
Tom
Finally got it working but when the page first loads, the JSON format shows for a second before loading as HTML. How can I fix that?
Hi, I can’t say I’ve observed this issue before, can you send me a link or the code and I’ll be happy to take a look?
This is a completely stripped down version so it’s easy to see:
http://tinyurl.com/twitter-feed-alpha
Thanks – yeah, I see your problem. If I view source on the page above, I see all tweets output direct on the page which shouldn’t happen and doesn’t in my demo. Perhaps try updating your main JQuery file from 1.5 (which is pretty old now) to 1.8 or 1.9, or use the same JQuery I have in the Twitter Feed demo. Also feel free to send me the get-tweets.php
Hi Tom.
Could you look at my code, it walked through the tutorial and checked the respones above, but it is still not working for me. The get-tweets.php seems to be working fine.
Link:
http://q-international-projecten.nl/Tweets/
Cheers,
Sebastian
Hi Sebastian,
This problem I haven’t seen before – I’ve had a look at your code and can’t see anything wrong with it.. – no JS errors and I tried copying\pasting all your details and worked fine when uploaded to http://www.webdevdoor.com/demos/jquery-twitter-feed/index-ap.php
I wonder if it’s a server issue – what version of PHP are you using? Also if you want to send me the PHP code (I won’t publish it), I can take a look at that.
Hey Sebastian,
Thanks for sending me your PHP – it looked like removing the extra HTML at the end of the get-tweets PHP file fixed your problem
Awesome! Thanks for this. Any idea how to get a feed of only favorites using this method? I probably missed something, this is new for me!
Thanks again!
Joel
Nevermind! I just changed the API url to what twitter specifies on this page:
https://dev.twitter.com/docs/api/1.1/get/favorites/list
TO:
https://api.twitter.com/1.1/favorites/list.json?…….(etc.)
Works like a charm! You rule!
Joel
Great, thanks Joel – glad it was a simple case of updating the path to show favorite tweets
Hi, i have done everything correct (I think) but i cant get the tweets to be displayed, only my name and link to the twitteraccount.
Should the feed work on a local host or do i have to upload it to my webserver?
thanks in advance
Hi Jesper,
No reason why it the Twitter feed shouldn’t work locally but it may be a good idea to upload to your web server anyway. Are the tweets being displayed as JSON when you run the PHP direct? Also, is the PHP file in the same location as the page displaying the tweets?
I get the same issue as Jesper. PHP direct works fine but only name, image and loading gif display in twitter feed. HELP!!!!!
Hey Loopo, this problem is usually due to the twitter JS function not being able to parse the PHP. I suspect either you have an incorrect path to the PHP or some extra HTML being output in the PHP file itself. Try an absolute path to the JavaScript including full site name or feel free to send me a link
New API is on this test page. Rest of site using v1 still. http://www.loopowebdesign.co.uk/test
Changed paths to script to absolute but didnt do anything. Sure it must be something really simple.
thanks for your help.
Ah, I can’t seem to open get-tweets.php from your site root when I try direct – page not found error. Also you have an additional jQuery loading after twitterfeed.js. Hope that helps
Thanks Tom, got it working, was a path issue in the twitterfeed.js file. Just looks odd in ios now so will need to address this!
Thanks Tom. Very helpful. The API deadline has been hanging over us for a while now
Hey Tom,
Awesome tutorial about trying to work with the new Twitter API. I have a strange problem. I’m working locally on a WAMP server and I believe I have everything in place. Here’s what’s happening: When I reload the page the tweet (I have it set to just display one tweet right now for testing purposes) displays for about maybe a second says “Tweet Loader” then disappears and I’m left with a small white bar.
I’ve got the php file in the same place as the index.php file it’s being used on and I’m linking to the latest jQuery library via google. The js file is in a folder and I have it going up one directory to find where the php file is. so basically ../get-tweet1.1.php
I’m not sure why this is happening, any help would be greatly appreciated!
Hi Danielle,
Thanks for your comment and detailed description. ‘tweet loader’ is actually the alt text for the animated loading gif which would display if the loading image is missing. Based on the directory structure you describe, the js path to the php should actually be ‘get-tweet1.1.php’ (counter intuitive I know) instead of the parent path you’ve used. I would also output a load of tweets in the php – if your last tweet was a direct tweet for example, the twitter feed javascript is set to ignore this by default.
Hope that helps!
Yep that was it! I also set direct tweet to false just in case.
Thanks so much Tom. I’m working with a client and we’re going to display a bunch of twitter feeds. I had an old script that ran with the old API and was shocked to find Twitter was dropping it (I’m just a little out of the loop haha).
I know you mentioned a tweet limit and having to cache, so I’m going to look into that next.
Thanks again!
Great, glad you got it fixed! Yeah, I think the final cut off for the old API is late April
Hi Tom,
Thanks so much for this. Is there a way to make the feed search for a certain hashtag in addition to a profile feed? The embedded twitter feed I was previously using from SeaOfClouds (http://tweet.seaofclouds.com/) was able to do this. The Museum I work for wants to show tweets directed at a specific exhibition hashtag in addition to tweets about the Museum.
Hi Austin,
Thanks. Although this post only looks as public timelines, hopefully you should be able to change the .json path in the PHP to search for any Twitter hashtag e.g. https://api.twitter.com/1.1/search/tweets.json?q=#hashtag (I haven’t had chance to test this though!)
Hey Tom,
I love the script, thanks!
But it took me way to long to get it working, so I thought I post the following for people who have the same problem.
I didnt get it to work on Localhost (wamp), when I tried the get-tweets.php in browser, I got the following error: “Fatal error: Call to undefined function curl_init() in C:\wamp\www\test\twitteroauth\twitteroauth.php on line 199″
But when I uploaded the same code on my server, it worked
So if there is a solution for localhost, I would love to hear it, but anyway I’am glad I got it to work
Hey Marijn,
No problems and thanks for sharing how you fixed your issue. Sounds like cURL used by the Twitteroauth library was not installed or enabled locally but glad it worked when you tried it online
Hi, I’ve tried the code and tested it at http://www.dinahstudios.com/molly/test – and it works fine but when I try to integrate it to the main site where I want to display it it fails. Comes back with an error :
‘Uncaught TypeError: Property ‘$’ of object [object Object] is not a function twitterfeed line 2′
Any ideas?
Thanks
The main url is http:www.dinahstudios.com/molly
Hi Stu, looks like you got the problem fixed. Looked like a WordPress JQuery issue. Have added to the troubleshooting tips #8
Hi Tom,
I am working on a new community website and new to this, it seem the get-tweets.php is working, but the tweets are not showing.
http://www.wfm-gaming.com/get-tweets.php – seems to work
http://www.wfm-gaming.com/test.php – not showing
Hi Ferry, you’re getting a get-tweets.php 404 (Not Found) error and should change the getJSON path to the twitter php. $.getJSON(‘get-tweets.php’, should work
Hey Tom,
I commented out session_start(); in my get-tweets.php file and it finally displayed my tweets. Do I need that?
Hello,
Thank you for your tutorial!
I have encountered an error. I keep getting this message error:
Uncaught ReferenceError: jQuery is not defined twitterfeed.js:2
(anonymous function)
I have tried the solution in tip:#8 but it didn’t work. Do you have any idea how I could solve this?
Thanks in advance, Alexis
Hi Alexis,
I think the error your getting is because you have the jQuery file loading after twitterfeed.js. Try switching the two around which should fix the Twitter feed.
Tom
Hi Tom.
Thanks for the script.
I’m having a few problems getting my tweets to display. I’ve double checked everything but can’t manage to find where I’ve gone wrong, any advice would be great.
http://www.mikewarddesign.co.uk/test
Thanks,
Mike
Hi Mike, just taken a peek and looks like you fixed the feed!
Got it all set up with ease. Thanks. However, I needed to implement it in a cross-domain scenario; I ended up adding an Access-Control-Allow-Origin header to the php file and that worked great in Mac browsers but NOT in IE9/8.
Can this work cross-domain in IE?
Thank you.
Hi, although the Twitter feed hasn’t been tested cross domain, as far as I’m aware you should be able to make a cross-domain call. You may need to change the call to ajax/jsonp and set cross domain to true. Hopefully this link will help
Yup, set it up as ajax/jsonp and it works great.
Question: Have you experienced any issues with ‘Timstamp out of bounds’ and server clock not synced to Twitter’s with any of this? Apparently If your server’s clock is off by more than 5 or 10 minutes, all your OAuth requests will fail. I have experienced this twice around 1AM EST so I am going to check out my server clock.
Also, should I just use jQuery to get different dates.
Thanks man.
Hi, not seen the ‘Timestamp out of bounds’ error actually – guess the servers I’ve set the twitter feed on have the correct time sync. I would use jQuery myself for the different dates
Hi Tom
thanks for a really useful guide. We are trying to use this on our library website, and I’m beginning to make it work in most browsers, but I am trying to fit it into a small box, and IE is throwing up some scroll bars… Any quick advice you might be able to offer? I
it’s over at http://library.shu.ac.uk/twitter
thanks in advance, and thanks again for useful guide.
Hi Matt, glad you found my twitter feed guide useful. Try taking off the ‘overflow:auto;’ style from #twitter-feed. This was added to expand the containing tweet DIV to a variable height, but should work fine without it.
Tom, many thanks for a quick and speedy reply. This has helped with the scroll bars issue, so thanks – it’s really appreciated.
Just one more thing… I’m confused about how the script displays the Twitter profile pic. At the moment it doesn’t seem to work in Chrome – even the demo doesn’t display profile pics – http://www.webdevdoor.com/demos/jquery-twitter-feed/
So the Twitter feed at library.shu.ac.uk/twitter is missing pictures in Chrome, but not in IE, Firefox and Safari. Have you noticed this before?
Ideally it’d be neat to be able to switch off images altogether and have the text start from the left, but I can’t work out how to do that…
thanks again, I’ve really appreciated your help.
Hi Matt, no problem. I haven’t come across missing twitter profile pics in Chrome before and both the SHU and demo images load fine in Chrome for me. I would guess it’s a browser security setting, perhaps since images are loaded from a https link. The easiest way to turn off images would be to add a ‘display:none’ style to the css .twitter-pic class. Hope that helps
Thank you for creating this script. I really want to use it but, I have one question?
Twitter’s Feed Widget can display images and I’m not sure about Vine videos. Just wondering can this JQuery handle displaying images from Twitter, Instagram, etc. and/or Vine Videos?
Thanks
Hi Anthony, yeah – the only images the jQuery displays is the Twitter feed is profile picture from the tweeter. Embedded vine videos, instagram etc that Twitter’s Feed Widget displays *should* appear as a link rather than being displayed inline.
Great tutorial!!
I am a complete novice when it come to all things jquery / javascript but I have managed to add a neat little bit of code in the script to truncate the feed and add on “…” at the end along with a link “more” to the users twitter profile page.
If anybody is interested I will post it up as long as I have permission to do so?
Regards,
William.
Hi William, sounds like some people might found this useful and would be happy for you to share your code
The new(isn) guidelines from twitter say that the full timestamp include date and time must be shown. In your example only the date is shown. How’d you change that? (https://dev.twitter.com/terms/display-requirements)
Hi Benjamin, actually the twitter date should be displayed as per point 3 in the ‘timeline’ display guidelines: Tweets older than 24 hours should show a short form date including the day and month, e.g., “6 Jun”.
Ah, ok. I must of misread that.
How do you change the feed to show direct tweets?
Thanks!
Hi Benjamin, setting the variable ‘showdirecttweets’ to true on line 8 should do the trick
Great tutorial. I’ve got it to work, and it displays, etc. However, it won’t display my most recent tweet. I’ve tweeted 4 or 5 news ones and it still jumps back to one before them. (none of them are direct or RTS).
I even deleted the tweet that it was using, and it’s still going back to that one?
Hey, sounds like it’s a caching issue. Are you trying to cache your tweets as in part two of this post or are you calling the PHP file direct? If you can send me a link, I’ll try and take a look