AJAX-ifying Wordpress Widgets

March 4th, 2010

I recently found the need to give AJAX abilities to a Wordpress widget. Notably, I had a request from Kjell Martin Bovre of Scribo.no to allow ThinkTwit to update when used with a caching engine, for instance WP Super Cache. Caching engines work by converting the pages of a site in to HTML and, rather than loading the website code using calls to its database, calling these pages directly when a user makes a request.

The first time that a user visits a site with a caching engine the pages they visit will be converted to HTML. After a period of time these pages will get updated, but if you have a particular item on that page that should be updated more often this will not happen. One way to ensure this item is updated correctly is to enable it to use AJAX. The AJAX code will get called whenever the site is loaded, even in its HTML format – therefore it will work even when cached as the Javascript will make a server call, the server will respond with the up-to-date data and the Javascript will then update the HTML within that page.

After a good few hours research I was able to find a site that helped me do most of this, but there were some errors and it did not work with Wordpress widgets as it would break their ability to create multiple instantiations. It was therefore necessary to update the code to allow this, so I thought I would just write a quick and easy guide to writing AJAX capable widgets to allow other developers to quickly and easily resolve this issue. I hope it comes in handy!

Read the rest of this entry »

Minor ThinkTwit Update 1.1.3

March 4th, 2010

Yesterday I posted a small update to ThinkTwit to fix some internal code issues, update the readme and update a screenshot to correctly represent recent changes. As usual, feel free to provide feedback and I’ll do what I can to improve it!

ThinkTwit Update 1.1.2

March 3rd, 2010

I’ve today updated ThinkTwit to version 1.1.2 with 2 key changes:

  • Added support for caching engines
  • Added support for CURL

These changes were requested by ThinkTwit users but will no doubt be useful to others out there. The no-caching support uses AJAX (via jQuery) to output code from a pure HTML file (the format in which the cached page is stored) and the CURL support offers an alternative to the standard URL get method which may cause the following error (or similar) if URL file-access is disabled:

Warning: file_get_contents() [function.file-get-contents]: URL file-access is disabled in the server configuration in /..../wp-content/plugins/thinktwit/thinktwit.php on line 145

Warning: file_get_contents(http://search.twitter.com/search.atom?q=from%3Adeleted&rpp=3) [function.file-get-contents]: failed to open stream: no suitable wrapper could be found in /.../wp-content/plugins/thinktwit/thinktwit.php on line 145

Additionally I have added debug messages to assist in locating errors when calling the method that requests the Twitter feed.

I learnt some valuable lessons about creating AJAX capable widgets and maintaining their ability to multi-instance, so I will post a blog on this shortly.

New site

March 2nd, 2010

From 14th March 2010 my employment with Think Consulting Solutions is due to come to an end. The decision was mutual as I have shared employment with Connect Assist and it will be easier for me to manage my time and for both companies to progress as partners.

I have, therefore, decided to take ThinkTwit development with me to ensure that it does not die. I needed somewhere to host this and have also planned on having my own blog for some time so decided now would be the best opportunity to do this!

The site probably won’t be updated very often, but I’ll use it to post anything useful probably from a development point of view.