Building a WordPress Site: Plugins

The reinvention of my site offered me a clean slate in many ways.  In this post, I’m going to delve into functionality driven by plugins. In total, I am using 17 plugins to drive both the front and back ends of my site.

I figured the easiest way to discuss them is by grouping them by their general functionality.

Administrative Plugins

To me, an administrative plugin is one that drives day-to-day operations in the blog’s back-end.

  • Akismet: delivered with all WordPress installs, it remains the easiest anti-spam solution for my needs.
  • Maintenance Mode: it allowed me to put up a “Coming Soon” page to keep visitors busy while I performed the steps for site relaunch.
  • Stats: some people are stat whores, digesting them down to the n<sup>th</sup> degree. While I think that Woopra is the best of class, I don’t have enough visitors to warrant paying for one of their packages.  This plug meets my simple statistical needs for free.
  • Contact Form 7: previously a user of the Contact Form ][ plugin, I’ve moved onto Contact Form 7, with an eye towards future expansion of forms on my site.
  • FeedBurner FeedSmith: I cannot remember what motivated me to use FeedBurner, but I continue to use it so I don’t lose my current subscribers.  FeedBurner’s tracking features might be handy someday, so it’s not a huge pain to continue going forth with it.
  • Subscribe To Comments: the one plugin I can’t live without, Subscribe to Comments is an important tool to encourage conversations 0n your content.  Without it, your readers aren’t as obligated to visit your Posts more than once.

Social Media Plugins

These plugins assist with getting the word out whenever I have published new content.  Because these plugins involves web services outside of my site, I’m occasionally at the mercy of Facebook or Twitter when attempting to cross-posts to their sites.

  • Wordbook: it notifies my Facebook Wall for each new post.  At one time, this was better than just linking your RSS feed to your Wall, as comments were directed to my site instead of my Wall.  Over time, Wordbook’s behavior — or Facebook — has changed, and comments are once again ending up exclusively on my Wall.  Is it too much to ask that all comments be kept in one, tidy place?
  • Twitter Tools: this notifies Twitter, and it used to work without issues.  However, the most-recent version (2.0) has been quite buggy of late, enough so that I had to downgrade to 1.6 in order for it to work.  Since it’s currently more work than it’s worth to debug, I’ve moved on to spending my time posting instead of fixing Twitter Tools.

Convenience Plugins

These plugins provide minor site tweaks with huge return.  In other words, my site would function just fine without them, but man! Am I glad they are there!

  • Top Level Categories: you can find many contrasting opinions on how to structure your permalinks.  As you know, WordPress will add the path “category/” before posts within a category (Example:  I personally peffer that all of my posts fall under the root site URL, which this plugin allows me to accomplish.  That same URL now reads as without the “category/” text in the middle.  This is important for my site’s future, as I plan to take up several simultaneous projects, each of which will be a series of posts under its own category.
  • WPtouch iPhone Theme: I occasionally like to read my site’s posts and comments from my iPhone.  This amazing plugin enables an iPhone-specific theme that is not only robust but also gorgeous to look at.

Book of Spam/Stories Plugins

Now this is where things get interesting!  These plugins are essential cogs in my site’s functionality, which is to display not only my regular blog content, but also serialized Stories with references to common Characters and Locations.

  • Custom Taxonomies: one of the most-useful plugins I’ve ever employed, its wizard helped me create the two custom Taxonomies: Characters and Locations.  Once I completed the wizard, each of these Taxonomies appeared in their proper place under my Pages menu in the Dashboard.  For details on how I use these Taxonomies, see my previous post in this series.
  • Media Tags: I wanted to display images associated to the Characters and Locations on each of their Term pages.  While I still needed a custom function to handle this (see Custom Plugins below), this plugin allowed me to categorize my images so they could be selected for display.  This was accomplished by tagging my images, as if I were adding Tags to a Post.
  • Redirection: using the Media Tags plugin creates one side effect: a like-named Taxonomy Page located at at  I didn’t want people to ever visit that Page, so configuring Redirection with that URL ensures noone accidentally visits it.
  • RSS Includes Pages: since my Stories are composed of Pages, they would never end up in my RSS feed.  RSS Include Pages changes that with one simple activation.
  • Page Excerpt: because Pages are now appearing in my RSS feeds, I use this plugin to enable the Excerpt field (on the Edit Page screen) and control what excerpt displays to my subscribers.  I’ve never understood why WordPress hides this field for Pages, but I’ve used this plugin for quite some to get around that limitation.
  • My Page Order: suggested by fellow, hyperlocal WordPresser Randy Hoyt, I use this plugin to order my Story Parts and take advantage of the delivered Page Order field.  My Page Order uses a simple drag-and-drop interface to facilitate this, allowing me to keep Parts correctly sorted even if written out of sequence.

Custom Plugins

Finally, I hit the point where other people’s plugins couldn’t solve all of my needs.  Because of this need for custom site-specific functionality, I created one single plugin to handle this.

  • Book of Spam: I went with a plugin — versus adding functions to my theme — so my code would be portable in case of a theme switch.  I also didn’t want to accidentally overwrite my functions in case of a theme upgrade.  At some point, if and/or when this site matures, I might take this plugin and offer it to the public for their use.  Specific functionality I added includes:
    • Featured Story: a series of functions to drive the prominent display of a featured Story on the Stories Page.
    • Lists of Characters and Locations: for both Story Parents and their Parts, the sidebar will list links of the Characters and Locations that play starring roles.  Each then links to the proper custom Taxonomy Term Page.  Look here for an example.
    • Story navigation: these functions display “previous” and “next” links where applicable, allowing users to easily flip between Story Parts.  You can see an example of these links here.
    • Custom Taxonomy image display: on the custom Taxonomy Pages for Characters and Locations, these functions will display thumbnails for any Character or Location featured on at least one published Story.  Then when viewing the Page for the custom Term itself, a larger image will be displayed — specifcally, any image whose Media Tags match the custom Term’s slug and also tagged with the word “default.”  For example, when viewing my Character Page, it is displaying an image with the Tags “spamboy” and “default.”  Anytime I ever want to change the image being displayed on that Page, I just untag the one image and apply the “default” Tag to another.
    • First Occurence of Term Replacement: to facilitate cross-site links, I created a function which takes the Post Body, searches it for whole-word occurences of Character and Location slugs, and replaces the first occurence of each with  link to said Character or Location.  I had hoped to code this as a CSS hover instead of a link, but I wanted to get something going quickly while I later readdress making things prettier.
    • Permit XHTML in Taxonomy descriptions: a simple WordPress filter allowing me to include links and images within the Taxonomy and Term descriptions.  Without this filter, any attempt to add HTML would lead to its eventual stripping out upon save.
    • Miscellaneous theme overrides: various changes I made to the Carrington theme to suit my tastes.  Changes include: display of comments links, minor sidebar widget enhancements, etc.

Coming Soon

In the final two posts of this series, I’ll delve into the migraiton plan that supported the go-live for my new site.  I’ll also touch upon how I plan to enhance my site once it’s been stable for a lengthy period of time.


Author: Matthew

Husband to Jenn, father to Zachary and Penelope, blogger, artist, WordPress consultant, OpenCamp organizer, and running enthusiast. Brother, can you spare an extra hour in the day?