Custom Digg Counter in WordPress with PHP

You will notice in the lower right corner of this entry that there is a reference to the number of Diggs for this post. If you click the counter you are taken to Digg. Digg does offer a few easily integrable scripts at http://digg.com/tools/integrate but does not document how to create a custom counter. To accomplish this you need to use the Digg API which is very easy to work with. There is no registration and your access key is simply the source domain. This example is customized for WordPress but can easily be modified to work in any PHP based project.
Here is the PHP function to grab the number of Diggs from the Digg API.
function getDiggs($url) {
$sturl = 'http://services.digg.com/stories?link='.$url.'&appkey=
http%3A%2F%2Fwww.yourdomain.com&count=1';
$ch = curl_init($sturl);
curl_setopt($ch,CURLOPT_RETURNTRANSFER,true);
curl_setopt($ch,CURLOPT_USERAGENT,"www.yourdomain.com");
curl_setopt($ch,CURLOPT_TIMEOUT,10);
$res = curl_exec($ch);
$resinfo = curl_getinfo($ch);
curl_close($ch);
if($resinfo['http_code'] === 200) {
preg_match('/diggs\="([0-9]+)"/si', $res, $r);
$diggs = number_format(($r[1]) ? str_replace(',', '', $r[1]) : '0');
if($diggs == 1) {
$response = $diggs .' Digg';
} else {
$response = $diggs .' Diggs';
}
} else {
$response = 'Error';
}
echo $response;
}
If you plan on displaying your Diggs on multiple pages create a folder in your theme directory and include the file with the following…
<?php include(TEMPLATEPATH .'/folder/script.php'); ?>
Setup the variables to build the Digg link and the URL to pass to the PHP function. This will use the current post URL in a loop or on a standalone page so there is nothing to hardcode.
$diggurl = urlencode(get_permalink($post->ID));
$diggtitle = urlencode(get_the_title($post->post_parent));
$digglink = 'http://digg.com/submit?url='.$diggurl.'&title='.$diggtitle;
Finally add the link, in my case I have positioned the reference in the bottom right of the post and added a bubble comment background to the link with CSS. In the href I am passing the encoded link and the encoded title to Digg. You can also pass through the media type, description, and topic if you want. Click here for details.
<a href="<?php echo $digglink ?>" class="diggticker"><?php getDiggs($diggurl); ?></a>