Aye, me hearties, here’s my third WordPress plug-in: Hackadelic Series.
It is the consummation of an idea I gave a quick shot to back in December 2008, when I first had the need for something to support authoring series of posts, and my search revealed no functional lightweight solution for it.
Here is the history of the plug-in.
Market Analysis (Sort Of)
Basically, there have been only two series plug-ins: “In-Series” and “Organize Series”.
In-Series, which had the most downloads, is declared to be compatible up to WordPress 2.3.2 – apparently an abandoned development. Which is a pity, because with its less than 90 KBytes of code, it is much lighter than the other one.
Organize Series, with its 190+ KBytes code size1 belongs clearly to the heavyweight category of plug-ins. It appears to be under active development, but I utterly disliked its operation principle (which is based on adding a new WordPress taxonomy, and extra database tables).
As you may notice, I consider lightness a key quality. In this case, I absolutely didn’t want extra database tables, not only because most plug-ins leave you alone with their manual disposal, but because there is a built-in WordPress feature in place already that would be the perfect, most natural choice: Meta-data.
Meta-data, also known as custom fields, lets you store extra information about a post, without interfering with the post itself. And you don’t need any extras to use it. A blank WordPress installation already gives you both, the database table, and the UI (the custom fields editor in the editing area).
For the latter part, I wanted the series information to be presented in a subtle and unobtrusive way. No big-bang bullet lists or the like that would obscure the post itself. I needed something that stays in the background, and only pops up when required, but also sufficiently stands out to not be overseen. Something like… Sliding Notes.
It was decided: I’d write the plug-in my self. And of course, it was clear how I would name it: Hackadelic Series.
So ready, steady, go… I quickly put together a plug-in that automatically decorates posts with series information placed directly under the post title, elegantly wrapped inside a Sliding Note. The series information is just a single line initially, mainly consisting of the series name. The name, when clicked, expands to a Sliding Note that contains a series index. The entries of the index are sorted by date, and link to the corresponding posts (all except the current one). You can see it live in action on a sample series, and here’s a screen shot:
Of course, the front-end requires that Sliding Notes is installed (or you’ll see the raw shortcodes otherwise).
I could have released the the plug-in in this shape… if it wasn’t for a slight missing detail…
The Missing Detail
It became immediately clear that this time I’d need an administrative interface, or otherwise the plug-in would be of limited use only.
The reason why an administrative interface is required is simple:
Custom field values are stored per post. So if you wanted to rename a series, you’d have to visit every post, and change its custom field. I wouldn’t want to do that. And I figured neither would you.
Alas, I never found the time to implement the envisioned back-end and complete Hackadelic Series to my satisfaction.2 . Until recently…
I actually had it all set up in my mind. When a time slot opened, it just poured out into what I believe is a really convenient admin interface for series. Here’s what it looks like:
Its main function is to individually rename series, by adjusting the corresponding custom fields in all associated posts. This is done by changing the text in the input box and clicking on the “Rename” button to its right.
Right next to the “Rename” button, there is an “Entries” button. It expands to an “administrative” series index. Similar to the series index in the front end, it lists all posts in that series, ordered by post date. In addition, when you hover over an entry in the index, two links appear: “Edit” and “View”. Use them to quickly open the post editor on that particular post, or jump to the blog post itself.
In the back-end, it is also possible to change the meta-key – the custom field key that indicates a series. (It is “series” by default). But this one does not simply change an option. (Doing so would remove existing series out of view of the plug-in, and you’d have to change the key back to recover.) It actually adjusts all corresponding custom field keys. Your series remain intact.
Care must be taken though when renaming to an existing meta-key. Later renames would change all keys, including those that were originally not associated with a series.
In case you wonder why you need a meta-key rename feature, read on.
Great minds think alike, fools seldom differ
Just before releasing the plug-in, I checked again for other series plug-ins (mainly to get the correct infos about the “other two” for inclusion in this article). And there it was, out of nowhere: A “Serial Posts” plug-in – one that basically builds on the same idea of utilizing post meta-data.
After a short moment of slight frustration (“Damn! Someone forestalled me!”), and hesitation (“Does it make sense to publish this plug-in at all anymore?”), I realized that, rather than being in competition, this was a chance for the two plug-ins to complement each other.3
After all, “Serial Posts” offers a freely positionable series index (via shortcode, an approach similar to “TOC-Boxes”).
The drawback of Serial Post is primarily the lack of a convenient rename feature. Also, manually adding the post index manually can be cumbersome, especially because the user would need to supply input on two different channels: A shortcode in the post content, and a custom field elsewhere.
And Hackadelic Series fills both gaps. The only “hindrance” to using both plug-ins together was that they were using different meta-keys. “Serial Posts” uses the meta-key “Serial”, while I chose the key “series”. (I also like “series” better, but that’s of course a matter of taste. 😉 )
This gave birth to the idea to extend my series admin interface by a feature for free meta-key selection, rather then implicitly resorting to the “Serial” meta-key. And I am quite happy with this solution.
Divide And Conquer
In some cases, automatic series info insertion maybe not be desired. Especially users of “Serial Posts” may prefer to insert that info explicitly, using their shortcode. For that reason I divided the plug-ins into Front-End and Admin. To turn off automatic series info insertion, simply deactivate the Front-End plug-in.
“Hackadelic Series” breaks with a “tradition” of avoiding WordPress options, and includes settings to specify the text that appears in the series front-end index. The reason for this was support languages different than English without the complexities of internationalization. Here’s how the options page looks like:
You can see them live in the sample series.
This is the third in my series of plug-ins, all of which focus on supporting bloggers in provide their readers with a rich reading experience, while otherwise staying out of the their way. I hope you’ll find it a useful and visually attractive addition to your blogging toolbox.
For further information, visit the plug-in homepage.
If you use this plug-in, please consider making a donation to support the further development. Donate whatever you feel appropriate. Any amount is appreciated.
- Hackadelic Series PlugIn, Arrr
- Hackadelic Series 1.0.1 Bugfix Release
- Hackadelic Series Streamlined
- Hackadelic Series 1.1.1 Bugfix Release: Uncle Tom’s Cabin
- not counting images and text files, which add to a total size of almost 560 KBytes [↩]
- Apart from “daily business”, I gave priority to my other plug-in, TOC Boxes. I considered it to be of more immediate value, by being helpfull to any blogger, whether or not (s)he’s a “serial writer” or not. Then came a new Sliding Notes release, then a new TOC Boxes release, occasional site maintenance work… [↩]
- And I truly hope this “complementary” spirit finds endorsement by the authors of “Serial Posts”. [↩]