WordPress Contact Form 7 Without Captcha

When this blog moved to wordpress, we added a contact form into the footer, which was available on every page. This seems awesome until you see the sheer volume of spam I got from it in the first day or two. I hate captchas, not least because I usually fail them at least once myself, so I was in search of alternatives and found two: akismet and the honeypot plugin. Continue reading

Eleven WordPress Plugins

When I moved this blog to wordpress a few weeks ago, I got a lot of questions about its implementation and setup. Today I'm sharing a list of all the plugins I have enabled, with a little description of what they are and what they do.
Continue reading

WordPress Plugin for Joind.In

In case anyone thinks I've gone joind.in crazy after already writing about its import functionality this week, I really haven't. Its just that some months of pulling a few things together have finally bourne fruit and so I can actually write about them now they are done! The good news is that this includes a plugin for wordpress, which pulls data from the joind.in website. You can find its official page on the wordpress plugin directory here: http://wordpress.org/extend/plugins/joindin-sidebar-widget/

Plugin Features

At the moment the plugin can display one of two data sets: The hot events on joind.in; or the talks from an event on joind.in. You can change the title on the block, limit the maximum number of records returned, specify which event the talks should come from and also indicate if you'd like the order randomised. You can see the plugin in action on techPortal, where it is picking a few sessions at this year's Dutch PHP Conference to tempt you with!

Technical Information

I hadn't written a wordpress plugin before although I was very familiar with the joind.in API and how to work with it from PHP. The plugin was relatively easy to write, there are plenty of tutorials on the web and I didn't need to do anything particularly clever. I looked at a twitter plugin, tweetblend, which was a similar sort of idea in that it had settings, talked over an API, and stored data, and used that when I got stuck. My plugin is much simpler but that's OK (and probably makes it a good example for me next time I want to write one of these things!!)

The plugin creates a database table when it is activated (and drops it when deactivated) which caches the data pulled from joind.in for a few minutes. This helps avoid lots of users having to wait for the data to load and also hopefully stops the plugin from pushing too much load to the joind.in servers. Since there is no limit or pagination on the joind.in API, even though only a few records are shown the whole result is cached. This means that if you turn on the randomise then the cache is still useful! The "random" is a bit contrived in that it just picks elements out of the array that haven't been used but it looks fine to me.

Initially I was just going to put something together and upload it to the techportal site but I was persuaded that it would be a useful thing to share - so there it is. Comments and suggestions are all welcome - and if you are using it to publicise your event, let me know!

Relocating a WordPress Installation

WordPress is a fine basic website tool, and I've used it for a few different odds and ends. One thing it does have that suprises me every time is that it uses a setting for its web address. So as part of the install, it sets this setting and then everything works. Or rather it does, so long as the web address of the application doesn't change.

Well I'm working on something that I'm developnig locally, checking in to a subversion repository, and then deploying to another server (and other people will be doing the same when they collaborate with me). WordPress isn't really designed for that, or for the situation where you have a copy of the database, and the code and need to restore it to a different place for any reason. The admin login form is accessible - but then submits to the old location before you can get in to change the settings.

Anyway it turns out to be really straight forward. The URL is in the database and a one-line query mends the problem. I'm putting it here for the next time I need it :)

UPDATE wp_options SET option_value = 'http://new.path.to/blog" where option_name = 'siteurl';

I found some complicated instructions for moving a blog too - but this will also work for that scenario. This was wordpress 2.7 (their new and shiny version!), I'm not certain which other versions this would apply to but add a comment if you can expand on this please!