I have been working with the http://bit.ly API and decided to change the short URLs on my site to include the short URLs provided by http://bit.ly. The API is pretty straightforward and I created a few WordPress functions to to get it all working.
Before we even start, you would need to registered with http://bit.ly and then check out this page http://bit.ly/a/your_api_key to get your API key and your login.
Now, let’s add a function to automatically create a http://bit.ly short URL when you publish a post. We will hook into the publish_post
action and then use the http://bit.ly API to fetch a shortened URL. Place the following into your theme’s function.php
file.
add_action('publish_post', 'create_bitly'); function create_bitly($postID) { global $wpdb; $login = 'YOUR LOGIN'; // change this to your login $apikey = 'YOUR API KEY'; // change this to your API key $longURL = get_permalink($postID); // here we get the permalink to your post // This is the API call to fetch the shortened URL $apiurl = 'http://api.bit.ly/v3/shorten?longUrl='.urlencode($longURL).'&login='.$login.'&apiKey='.$apikey; // We are using cURL $curl = curl_init(); curl_setopt($curl, CURLOPT_CONNECTTIMEOUT, 5); curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1); curl_setopt($curl, CURLOPT_URL, $apiurl); $results = json_decode(curl_exec($curl)); curl_close($curl); $shortURL = $results->data->url; // the short URL update_post_meta($postID, 'bitlyURL', $shortURL); // adding the short URL to a custom field called bitlyURL }
You can read more about the http://bit.ly API here: http://code.google.com/p/bitly-api/wiki/ApiDocumentation
In order to add your new short URL to your header, you first need to remove the default shortlink tag and then create a function that will place the proper code between your <head>
tags.
remove_action( 'wp_head', 'wp_shortlink_wp_head', 10, 0 ); // removing the default shortlink add_action( 'wp_head', 'bilty_shortlink_head'); // adding the new bit.ly shortlink function bilty_shortlink_head() { global $post; $shortURL = get_post_meta($post->ID, 'bitlyURL', true); if(!empty($shortURL)) { echo ''."\n"; } else { echo ''."\n"; } }
If you want to display your new short URLs, you can do so by using the `wp_get_shortlink()` function. But first you need to make sure that WordPress knows to replace the default short URL with the new http://bit.ly short URL.
add_filter('pre_get_shortlink', 'get_bitly_shortlink'); // filtering the WP function function get_bitly_shortlink() { global $post; $shortURL = get_post_meta($post->ID, 'bitlyURL', true); if(!empty($shortURL)) { return $shortURL; } else { return get_bloginfo('url').'?p='.$post->ID; } }
You can place the following code anywhere within the loop of your single.php
theme file to display your short URL.
Short URL: ID); ?>