In my continuing quest to improve the alwaysBETA front and back-ends, I’ve been carefully selecting Wordpress plugins to extend our functionality. We’re already using the excellent Ultimate Tag Warrior for loose categorization. In addition, I recently added CodeHighlight for easy inclusion of syntax-highlighted source code in various languages. However, as my quest continued, I began to see the inevitable. Eventually, I would have to start writing my own plugins.
That time has finally arrived. Over the past weekend, I’ve programmed 3 new Wordpress plugins. Two are being released to the world, and one has died an early death.
Related Posts: Minus Points for Duplicity
One of the features that I’ve wanted to add to aB since the beginning is related posts. It’s a great way to navigate between posts and alert visitors to other content that they might want to read. The problem is that all of the related posts plugins I could find returned pretty meaningless results, since most of them base “relatedness” on the similarity of the post titles. I realized that a better way to associate posts in an environment where tagging is used would be to compare tag similarity.
With this idea in mind, I set out to program a related posts plugin that would work on top of Ultimate Tag Warrior. I devised a single SQL query that would retrieve the top related posts based on the number of shared tags and wrapped it in a simple plugin. Everything worked just great. Then, as I was reading through the source code for UTW, I noticed something: UTW already has a related posts function. And it does pretty much exactly the same thing. Whoops.
I guess I should have read UTW’s extensive documentation a little more closely. Oh well, I still learned a lot about plugin architecture in Wordpress. And I’d be using that knowledge again soon.
Sparklines: Blog Stats Visualization
I have long admired the sparklines visualizations on the Information Aesthetics blog. For those that haven’t heard of sparklines, they are “data-intense, design-simple, word-sized graphics” dreamed up by the incomparable Edward Tufte. When Brian showed me the open-source Sparkline PHP Graphing Library, I just knew that I had to implement this kind of visualization for blog activity on alwaysBETA. The best way to do that would be with a plugin.
To this end, I have released (a very early version of) SparkStats, a blog activity visualization plugin. You can download the latest version of SparkStats from the official page on my personal site. You can see an example of a SparkStats graph in the right column of this site. It is a simple plugin built on the PHP sparkline library which generates and caches a sparkline representing blog posts and comments over a period of days. Most settings (including color, size, and time span) are customizable from an admin screen. I will continue to develop this plugin based on feedback that I recieve. Please check it out and tell me what you think.
Extended Tags: Letting Specificity and Generality Coexist
Another problem that we have run into at alwaysBETA is the management of our tagging taxonomy. Tags are our method for categorizing posts, but we want to keep our tag space general enough to be reusable and easy to view. If we had 500 tags, then visitors wouldn’t just be able to browse through and ask “what do these guys write about?” Thus the need for generality. However, certain services like Technorati use the metadata that tags provide to categorize posts for tag searches. By keeping our tags very general, we were also losing out on people finding our posts through more specific metadata. We needed a solution.
To solve this problem, I built a simple, independent tagging plugin called Extended Tags. It is essentially a very stripped-down version of something like UTW. There is no centralized tag management, tag views, or the like. For each post, you can enter a comma separated list of tags which are stored in a new database table and made available for output in various formats in your theme and as dc:subject elements in your feed. This allows us to keep our main UTW tagging taxonomy appropriately general and managed while adding more specific “extended tags” for each post which are included in the feed. These extended tags are also included in the HTML, but they are hidden from view using CSS styles. They serve exclusively as additional specific metadata for bots, aggregators, and search engines. You can download the latest version of Extended Tags from my site as well.
Wordpress Plugins are Awesome!
From my first forays into writing Wordpress plugins, I have concluded that the process is surprisingly simple. The developers of Wordpress put a lot of thought into designing a very flexible and extensible system that would be easy to add to. In addition, there is excellent documentation on the Wordpress Codex that makes everything that much easier.
Have you ever wanted some additional functionality for your Wordpress site? First check the WP Plugin Database to make sure you aren’t wasting time duplicating good work, and if you can’t find what you want, build your own! Yet another reason why open-source totally rocks!





1
Just reading through your wordpress plugins post. Looks like you are doing the right thing.
Another big problem with wordpress is the search! I am looking since month for a solution to have a better search that gives back a listing like “Google” style with the headline and 1-2 sentences with the highlightes words.
Maybe a project for you guys!
Thomas
2
I’ve had nothing but good experiences with Wordpress in the past, and I am a big fan of it and it’s large modder base.
3
(Trackback)
The Ten Thousand Year Blog » Sparklines and The Work of Edward Tufte and Graphics Press
[…] To return to Sparklines, there’s also a WordPress Sparklines statistics plugin called SparkStats created by Boston Web developer Sean McBride for his alwaysBETA blog. […]
4
(Post Author)
@Thomas: Actually, I think that I may have a solution for you. You should get the Search Reloaded plugin (which improves Wordpress’s search results) and the Search Excerpt plugin (which makes the_excerpt function spit back a snippet of the post with the search term bolded in search results). This, combined with a customized search.php template in your theme should provide you with exactly the kind of search results you desire.
@Evan: Yeah, it really is an amazing content publishing system, especially since it’s free and open-source.
5
Awesome site, Thomas!
I”ve got a question: how dis you do the “navigate posts” block on the sidebar? It’s amazing? I’d love to implement it in my blogs…
Thanks!
6
Cool plugins.. i put
” alt=”SparkStats”/>
” alt=”SparkStats Legend”/>
in my code, and the Legend image shows up, but the graph wont show up.
Instead of the image of the graph, i see the words “SparkStats”. any ideas ?
7
(Post Author)
@Josue: It’s a custom bit of Javascript that I wrote which pulls multiple boxes into one tabbed box. I plan to eventually make it into an open-source piece of code and publically release it. For now, you can go to the included abRules.js and view the code if you feel comfortable reading through Javascript.
@drazin: Well, I think a part of the code you posted got cut off. You need to post this code in your template somewhere where you want it to show up:
Then, you might need to make sure that the sparkstats plugin folder is writable by PHP (chmod 775 or something similar). Please let me know if you are still having problems.
8
ok yeah i had to make it 777 to get it to work…. but 777 isint safe…
9
(Post Author)
@drazin: On dreamhost, 755 is enough to get the job done. All you need is for PHP to have write permission to the directory. This shouldn’t be unsafe if your web host has set up PHP to run properly. 777 shouldn’t be required unless they have PHP set up to run as an anonymous user. Many other Wordpress plugins require making directories writable (ImageManager, etc.) so it’s not that odd of a stipulation.
10
ok its all working and everything is fine, but the image looks strange….theres no bar for today, just 3 bars at full height from a few days ago….
11
(Post Author)
Oh yeah. Do you have any of your colors set to #000000? I forgot about this until just now, but there’s a bug in the Sparklines library that won’t draw pure black. I should include a fix for that in the plugin… perhaps it’s time for a new version.
12
i left it default…
13
(Post Author)
@drazin: Could you email me and we will see if we can’t solve the bug? I’m already talking to a few other people who were having different issues. If the graphic is in fact not accurately representing the number of posts on your site, then something must be wrong. I don’t want to debug here in the comments, but I WOULD like to make this as compatible as possible.
14
(Trackback)
SeanMcb.com » Two New Wordpress Plugins
[…] So, I just released two new Wordpress plugins. Both were originally designed as extensions for alwaysBETA and cleaned up for public release. You can read my initial post about them on alwaysBETA. They are: […]
15
Sean:
The custom javascript you used looks very similar to the tabtastic semantic javascript script in http://phrogz.net/JS/Tabtastic/index.html by Gavin Kistner with a lot of cool styling and moo.fx thrown in. Did you use this, developer a similar approach or used another alternative as the basis?
I’ve been meaning to do something like this since I first saw tabtastic and while thinking about it I saw how had Shaun Inman set it up in http://www.shauninman.com/plete/2005/08/css-constants .
The problem is that after that article I got derailed on the CSS variables/constants argument because I had been thinking of naming images from a random header with a hint color (f2c4aa-beach.jpg for example) and then have a script generate the colorset for the theme through a standard complementary colorwheel relationship (which I later thought would be easier if the CSS files were generated before and were static, but not as much of challenge)
16
(Post Author)
@Eduo: Nope, I’d never seen Tabtastic before now. It’s a cool concept. Basically, we just thought that tabbing would be a better metaphor for compressing the navigation than an accordian style, but animating it makes it easier for the user to understand what is going on than a sudden jolting change. We didn’t really start from anything other than Moo.FX, and just built up from there with Prototype. It’s not even that complicated, but it works pretty well!
17
This is weird and probably a fluke, but I had the same problem as drazin I solved it. I put the directory at 777 from 755 so it showed up, but then changed it back to 755 and it still showed up. What?
18
Very nice! I love the design of this site. =)
19
Great plugins, I really like the stats one, works great with this site in particular.
20
hey sean, im experiencing some problems with sparkstats, too. it doesnt show up n my site.
btw, i find the “post author” “trackback” in your comments so cute. is that a plugin, too?
thankies.
21
(Post Author)
@doorlight: I dunno what to tell you about SparkStats. I’m glad you like the post author and trackback things. Those aren’t a plugin. They’re just using some Wordpress template functions to check things and then output code in our template if conditions are met. Check out the Wordpress Codex for documentation on template functions.
22
Just wanted to jump in and say I’m looking forward to the javascript you talked about releasing above, the one you used to make your tabbed box in the sidebar.
I know you said we’re free to look under the hood at how you did it, and I will when I get some free time, but in the meantime I thought maybe an extra voice would motivate you to work on it
I like Sparklines too, if only you could control the background color (or better yet, have it be transparent).
23
if you are using the new sidebar widgets you can keep on using the sparkstats plugin with a text widget:
and then point to the png file.
::HLIGHT_BLOCK_1::
24
Yeah indeed WP Plugins are great, that’s the beauty behind WP. Consider other platform like blogger.com, you’ll have to digg your hands into a whole lots of code to get to achieve something while a single activation of a plugin get to do great, too great things. I’ve actually posted a guide on one of a cool rocking plugin : AMM that gets to pull stuffs from Amazon and with a little mod gets to make cool looking : currently doing things like listening to..
hey great stuffs you’re building around, a team behind your blog. I’m also getting on this way : there @ BlogoSquare we are 4 digging things on tech, net and teen stuffs. Yeah collaborative work? Good luck with your team and the blog behind.
25
(Trackback)
Wordpress Plugin Centre - Duplicate Content Cure - alwaysBETA New Features, New WP Plugins!
[…] alwaysBETA New Features, New WP Plugins!However, certain services like Technorati use the metadata I know you said we re free to look under the hood at Yeah indeed WP Plugins are great, that s the beauty behind WP. […]
26
(Trackback)
Wordpress Plugin Centre - All in One SEO Pack - SITE PLUGINS | vogelmann
[…] alwaysBETA New Features, New WP Plugins!alwaysBETA New Features, New WP Plugins!However, certain services like Technorati use the metadata I know you said we re free to look under the hood at Yeah indeed WP Plugins are […]