Keep your traffic in the family! Host Twitter images on your own site, with support for comments and trackbacks, image resizing and thumbnailing with Lightbox.
Twitter doesn’t yet come with its own inline image support, so we tend to be limited to using image hosting services, and linking to them with short URLs. So, services like Twitpic host the image, and we direct traffic to them in return.
Better to take advantage of that traffic, and host images on your own site. This way, viewers come to your site, instead of someone else’s!
Posted images are displayed in your normal WordPress template, with support for comments and trackbacks, without any setup required. Most themes should work with this, but if not, or if a different layout is required, a custom theme template can also be provided (see ‘Creating a Template’).
Provides an HTML form for posting image content, as well as an API modelled on that of img.ly, compatible with Tweetie (for iPhone) and any other Twitter clients that speak this protocol and offer configuration of custom image hosting services.
Uses Twitter’s authentication and a list of authorised accounts, so you can let others use your image host too. You can even post status updates to Twitter while submitting images.
Provides a widget and shortcode to display uploaded images. This supports filtering by Twitter account, styling with CSS, and Lightbox/Thickbox.
Download
Download the plugin at WordPress’s plugin directory
If you like Twitter Image Host, please consider buying some awesome Mac/iPhone software. Then tell all your friends.
Installation
- Unzip the package, and upload
twitter-image-hostto the/wp-content/plugins/directory - Activate the plugin through the ‘Plugins’ menu in WordPress
- Visit the settings page and add your Twitter account to the list of authorised accounts
- Start submitting images – See the ‘Posting Images’ section for more
FAQ
I get “Couldn’t place uploaded file” messages
You probably need to create the folder in which Twitter Image Host stores uploaded images — it will try to create the folder automatically, but it will fail if it doesn’t have permission.
Create a folder called twitter-image-host-content within the wp-content folder of your WordPress installation, and make sure it has write permission for the web server user.
I keep getting 404 errors
Make sure your blog is using URL rewriting (i.e. your permalink structure is anything but the boring default ?p=###).
Widget
To use the widget, simply visit the Widgets page and drag the “Twitter Images” widget into a sidebar and configure it.
Shortcode
Shortcodes are snippets of text that can be inserted into pages and posts. These snippets are replaced by various generated content. Twitter Image Host provides a ‘twitter-images’ shortcode to display images you have uploaded within a page/post.
Available parameters:
| count | Number of items to display |
| id | Single ID (eg ‘abcde’) of one image to display, or multiple IDs separated by commas (abcde,fghij) |
| view | Image thumbnail view: squares, proportional, large or custom |
| custom_thumbnail_width | Custom width for thumbnails, when ‘view’ is ‘custom’ |
| custom_thumbnail_height | Custom width for thumbnails, when ‘view’ is ‘custom’ |
| custom_thumbnail_crop | Whether to crop custom thumbnails |
| author | Comma-separated list of Twitter account names to limit results to |
| columns | Number of columns of images to display |
| lightbox | ‘true’ to use Lightbox/Thickbox |
Example (square brackets replaced by curly brackets):
{twitter-images columns=4 lightbox="true"}
PHP function
As well as the shortcode, you can also use call twitter_image_host_images() from within a template to
produce the same output. Pass the same arguments as the shortcode as associative array values:
<h3>Recently submitted images</h3> <?php twitter_image_host_images(array('author' => 'ATastyPixel', 'columns' => 6, 'lightbox' => true)); ?>
Tip: Use this in the twitter-image-host.php template (see ‘Creating a Single Template’, below) to display
other posted images when viewing an image. Use the_twitter_image_author() to filter the list, to show
only other submissions by the same Twitter account as the one of the currently displayed image.
Template Tags
This plugin provides several template tags, for use both in displaying single posts (see ‘Creating a Single Template’), and for custom pages which display many posts in a loop (see ‘Using Template Tags in a Loop’).
The available template tags are:
Single Entry Tags
the_twitter_image_permalink
Returns the URL to the view page
the_twitter_image_url
Returns the full URL to the image, or the image thumbnail if the original image was large
the_twitter_full_image_url
Returns the URL to the full-sized image, if one exists, or false otherwise
the_twitter_image_title
The title of the image
the_twitter_image_date
The date (timestamp) of the image – use date() to configure the display
the_twitter_image_author
The associated Twitter account
the_twitter_image
Returns HTML to display the image and a link to the full-sized image if it exists, with Lightbox rel tags.
Loop Tags
query_twitter_images
Search for Twitter images
Available parameters (passed as associative array):
| count | Number of items to display |
| id | Single ID (eg ‘abcde’) of one image to display, or multiple IDs separated by commas (abcde,fghij) |
| author | Comma-separated list of Twitter account names to limit results to |
has_twitter_images
Use with loop: Determine if there are more images
next_twitter_image
Use with loop: Get the next image
Creating a Single Template
By default, this plugin will use the standard post template (‘single.php’). However, if you wish, you can create a custom template to display hosted images. The template should be called ‘twitter-image-host.php’, located within your current theme directory.
Creating a template to use this information is fairly straightforward if you have just a little knowledge of HTML or PHP:
- On your server (via an FTP program, etc.), navigate to your current theme. This will live within
wp-content/themes. - Copy an existing template –
single.phpis usually a good candidate – and call ittwitter-image-host.php. - Open up
twitter_image_host.php, and delete everything that looks post-related: This usually includes everything between thehave_postscall and the matchingendif, and may include some other surrounding content like an ‘Edit this post’ link. - Replace that which you have just deleted with something that uses the ‘single entry’ template tags above, like the following:
<?php echo the_twitter_image() ?> <h1 class="center"><?php echo the_twitter_image_title() ?></h1> <p class="center"> From <a href="http://twitter.com/<?php echo the_twitter_image_author() ?>"><?php echo the_twitter_image_author() ?></a> on <?php echo date('F jS, Y', the_twitter_image_date()) ?> </p>
- Save the file, add some content (see the ‘Posting Images’ section), and see how it looks.
Using Template Tags in a Loop
Just like the WordPress Loop template tags, the template tags provided by this plugin can be used to display multiple posted entries. This can be used to create a custom page template that lists all submitted entries, with more flexibility than that offered by the shortcode.
Use begins with a call to query_twitter_images(), possibly with an argument to configure the search. If the result is true, then the loop begins,
conditional upon has_twitter_images(), and starting with next_twitter_image() to load the next entry. The single template tags can then be used
to customise the display of each entry.
Here is an example of use:
<?php if ( query_twitter_images() ) : ?> <?php while ( has_twitter_images() ) : next_twitter_image(); ?> <div class="item entry"> <div class="itemhead"> <h1><a href="<?php echo the_twitter_image_permalink() ?>" rel="bookmark"><?php echo the_twitter_image_title(); ?></a></h1> <div class="date"><?php echo date('F jS, Y', the_twitter_image_date()) ?></div> </div> <?php echo the_twitter_image() ?> <p class="center">From <a href="http://twitter.com/<?php echo the_twitter_image_author() ?>"><?php echo the_twitter_image_author() ?></a></p> </div> <?php endwhile; ?> <?php else : ?> <p>There are no Twitter images.</p> <?php endif; ?>
Posting Images
To start posting straight away, a simple form is provided at http://your-blog-url/twitter-image-host. Enter a title for your image, your Twitter account details, and select your image. Hit Submit, and you will be given the URL for the image.
To access this facility from an application, use the access point http://your-blog-url/twitter-image-host.
The API is more-or-less the same as that of TweetPic, img.ly, etc.
To post from Twitter (Tweetie 2) for iPhone, visit Twitter/Tweetie’s settings, and within Services, Image Service, select ‘Custom’, then enter http://your-blog.com/twitter-image-host/upload. Note that version 3.0.1 of Twitter has a bug that prevents it sending the username and password. For this version, you must use http://your-blog.com/twitter-image-host/upload?username=YourTwitterName&password=YourPassword, at your discretion. Version 0.5.7 of Twitter Image Host now supports this.
Automate it
For Mac users, an Automator service has been created to upload images by right-clicking on a file in Finder, then selecting a context menu item, if you are using Snow Leopard. This may still work for Leopard users, via the ‘Services’ menu.
Download it here: Send Image to Image Hosting Automator service
To use it:
- Unzip
- Double-click on ‘Send Image to Image Hosting’ to open it for editing
In the third panel down, change the ‘HOST’ value to the URL to your blog:

Save
- In Finder, navigate to the ‘Library’ directory under your home folder. Create a folder called ‘Services’, if it doesn’t already exist, then drag ‘Send Image to Image Hosting’ into ‘Services’
- Right-click on an image file, and you should see:
![]()
If not, you may need to log out and log back in first.
Making the URL even shorter
If you run WordPress from a sub-directory (for example, http://your-site.com/blog), then the short URLs generated by this plugin will
look like http://your-site/blog/xxxxx. You can remove that ‘blog’ component via a little .htaccess trickery.
Here’s how:
- Create and open a new file in your site’s webroot called “.htaccess”. If there’s one already there, just open that up and prepare to edit at the bottom.
Add the following, replacing ‘blog’ with the real subdirectory under which WordPress is installed:
<IfModule mod_rewrite.c> RewriteEngine On RewriteBase / RewriteCond %{REQUEST_URI} ^/([^/]+)/?$ RewriteCond %{DOCUMENT_ROOT}/blog/wp-content/twitter-image-host-content/%1.jpg -f [OR] RewriteCond %{DOCUMENT_ROOT}/blog/wp-content/twitter-image-host-content/%1.png -f [OR] RewriteCond %{DOCUMENT_ROOT}/blog/wp-content/twitter-image-host-content/%1.jpeg -f RewriteRule (.*) /blog/$1 [L] </IfModule>This will take any requests that:
- Are located in the web-root (start with a slash, followed by anything but a slash until the end)
- Have a corresponding file within Twitter Image Host’s content directory Then, it’ll rewrite the request silently to the real Twitter Image Host URL, without the viewer seeing.
In Twitter Image Host settings, set the ‘Override URL Prefix’ option to ‘http://your-site.com/’
Related posts
- Flickrpress: WordPress Flickr widget Flickrpress is a widget to display items from Flickr in...
- DIY Twitter image hosting Twitter doesn’t yet come with its own inline image support,...
- Twitter posting lists with images A Wordpress plugin to display recent Twitter updates, with images...
- Smart 404 for WordPress Save visitors to your Wordpress site from unhelpful 404 errors!...
- Adding Twinkle to Twitter posting lists A utility to display Twinkle images in Twitter posting lists,...
73 Comments
Hi there
First – great plugin, thank you! Well I’ve got a problem posting images from tweetie (twitter for iphone) tried out the urls http://myblogurl/twitter-image-host and http://myblogurl/twitter-image-host/upload but always get the error “Error uploading attachment. there was an error posting your message. It has been safed as draft, please try resending later. (Error: Could not post image.)” – Do you know this? What am I doing wrong? Lu
Ah, thanks for the reminder: I updated the readme, but forgot to update this page. As it now reads above: Note that version 3.0.1 of Twitter has a bug that prevents it sending the username and password. For this version, you must use
http://your-blog.com/twitter-image-host/upload?username=YourTwitterName&password=YourPassword, at your discretion. Version 0.5.7 of Twitter Image Host now supports this.great, thank you! =)
Hello Michael, just tell u that your plugin is great! Just three questions: -is there a way to visualize the tweet (the message) in the page including the photo? -there’s no way to make the comments in theese pages work, it’s just like the web stops working -where i have to put the code
Recently submitted images
in the file
twitter-image-host.php?Hello Lucio – thanks! It’s getting there, gradually, but as you’ve discovered, it’s not perfect yet.
Hi!
I got an error if i try to post an image via tweetie (twitter for iphone). The following error appears: “Error uploading attachment. There was an error posting your message. It has been saved as a draft, please try resending later. (Error: could not post image).
Have you got an idea what i’m doing wrong?
I tried the urls http://myblogurl/twitter/twitter-image-host and http://myblogurl/twitter/twitter-image-host/upload with the same error :(
(Reply above)
hello Michael, thank u for answering. Waiting for the next realease of the plugin, could you tell me in which line of the file called “twitter-image-host.php” i have to copy the line ‘ATastyPixel’, ‘columns’ => in order to make the plugin show all the images i have published like thumbnails in a table?
i have another question: could be possible in the next realease to show the message sent to twitter too? many thanks u, the plugin is great and thanks to everyone (first you) will be fantastic!
Actually, it looks like you’ve got the wrong piece of code there – see ‘Using Template Tags in a Loop’, above.
As far as I know, that already happens, if you don’t otherwise specify a title
OMG why is this so difficult for me. I followed the directions. There was no twitter-image-host directory set up so I manually made the folder. All the files are under the wp-plugins directory but I cannot access even the upload forms? Heck, I can’t even access any part of the plugin? What part of the directions am I getting wrong because I followed them directly. I can make the folders 777 but that won’t change anything?! Please please help me I got the latest version of wordpress btw.
The plugin’s files are actually meant to be within a folder called “twitter-image-host”, not all just within the wp-content directory (unless that’s what you meant by creating the folder manually). It may be worth just using the built-in plugin installer instead of doing it manually – it’s better for avoiding little mistakes. You’ll want to make sure you have permalinks set up that aren’t just the default ?p=…, and make sure you’ve activated the plugin
Good news is I got it uploaded and working.
now when I upload form the form it says
“There was an error posting the image: Unauthorised Twitter account” I checked my username and password 50 times and it works on twitter. Any suggestions?
Thanks in advance .Alois
Nervermind. i figured it out. Stupid mistake
This plugin is great. Thanks mike
This is Great! I just downloaded your plugin and I will get it going shortly I have been wanting to start my twitter account but I just have not had the time, but I will make it now… I’m a guy who likes to host my own images so this is right up my alley. Once I get it installed and running I will give you an update Thanks for the plugin :-)