wordpress: building a "topics" site

Building a Topics System

So you'd like to implement a Topics system for your own publicaton? There are basically two approaches you could take:

  1. Work with your web engineering team to build similar functionality into your current CMS.
  2. Create a new Topics site parallel to your main site, designed to do just this.

The rest of this tutorial explains how we modified WordPress to function as a Topics system, so you can apply the same approach to any WordPress theme. We've also made our demo site  available as a free download, which you can use as a starting point. You can download the demo theme at the end of this tutorial.

Required Plugins

Our Topic Central theme, based originally on the popular Cutline theme, relies on the following plugins. Please install and activate them before working with our sample theme:

Allow HTML in Category Descriptions
The core of the Topics system is the WordPress "category," which means authors and editors will be doing lots of editing to category descriptions. By default, HTML is stripped from category descriptions. This plugin overrides that behavior.

Category Description Editor
Places a rich text editor on the category description field, allowing authors and editors to work in a familiar environment, without having to type HTML manually.

Category Images II
Allows authors and editors to associate a unique banner image with each category (topic). Images must be prepped in Photoshop or similar before upload (our demo theme assumes a banner image of 900x140px).

Weasel's HTML Bios
Our demo theme provides "Author" pages, which show the author's bio as well as links to all stories written by that author. By default, the simple WordPress bio field for authors does not allow HTML. With this plugin installed, authors can craft a fancier bio.

Twitter for WordPress
On individual posts, this theme will display the author's  last three tweets at the bottom of the sidebar. There are many  Twitter plugins for WordPress, but we like this one. Simple, but very programmable. We utilize the Jabber / Google Talk field in the profile editor for Twitter integration.

Role Manager
This one handles a couple of thorny security issues. To post embed code from YouTube, Google Maps, etc., users need the "administrative" role. However, that role gives each author way too much control (potentially dangerous to the whole site). And keep in mind that Administrators and Editors can edit all posts, while Authors can only edit their own. By giving writers the Author role, you prevent confusion when someone accidentally edits the wrong story. The solution is to use a Role Manager plugin like this one and just give normal authors and editors the ability to post embedded content from other sites (which they don't have by default). We also need to let authors edit category description pages. After installation, use the role manager plugin to give authors and editors these three capabilities: "manage_categories,"  "unfiltered_html," and "manage_links."

Search Everything
By default, WordPress does not return search results for text found anywhere in the database besides Posts and Pages. Text in category descriptions is not returned, but our Topics system relies heavily on category description fields. Our hope was that this plugin would solve this problem, but unforunately it does not. However, it will return results for associated posts. For example, if the word "zippy" is present in the category description for the topic "Healthcare Reform" and a user searches on "zippy," the results will show posts belonging to the Healthcare category, even though they won't return the topic page itself. We hope this issue is fixed in the future.