I’m very excited to finally have a plugin available on the WordPress.org directory. It was a somewhat lengthier process than I imagined, but there wasn’t anything too terrible involved, and it was actually kind of fun to learn the ins and outs of the whole process.
Like most software, it started out as a problem in need of a solution. The law firm where I’ve been working for the past several years has a very large web presence (as divorce lawyers go), due in large part to the huge amount of content available on the site. The site itself has been around since ’95 and new content has been going up steadily since then. As a result, we have nearly 1,500 posts and pages on various topics.
We like to keep a steady eye on traffic stats and over the past few years, have really tried to focus on user interaction with the site as well, rather than just tracking sessions and bounce rate. When we started playing around with click maps and other methods of tracking on-page behavior, we noticed that a lot of people head for the search box.
This makes sense – the site is set up as a resource page, not an ad for the firm, and people go there for information, like they would WebMD, rather than johnsdivorcefirm.com. We do our best to lay out the page in a way that makes it easy for users to find information on the topic they’re looking for, but for a lot of people, it’s more comfortable to just search instead.
“They expect results”
Upon noticing this, we started looking at the search results for various terms and realized that we had a big problem – our search results pages sucked. We spent the next couple of years (yes, years) trying out every wp search plugin under the sun to try to make these pages more useful.
By default, the built in WordPress search function isn’t all that useful. It’s ok if there are only a few pages on a site and they all have substantially different content, but if somebody searches for “alimony” on our site, they get 25 pages of search results, which is nearly 250 individual posts and pages. This is bad for a few reasons:
- Nobody is going to look through 25 pages of search results. When was the last time you looked at page 25 of a Google search you did?
- When a user sees that there are 25 pages of search results on a website specific to the topic she is researching, it’s a signal that whatever information is here will likely not be as relevant as it should be.
- The big one: these results aren’t in any useful order. If someone is performing a search for a broad term like “alimony”, it’s likely they need a an overview and maybe a guided tour of what exactly that topic encompasses. By default, WordPress returns results based on a rough “relevance” algorithm (you can see the criteria here), but google it aint.
So we began trying out all the major players in the WordPress search plugin arena with mixed results. All of them to a few things right, but nothing was a great fit. They generally fell into 2 groups, either focusing on the algorithm, or allowing you to specify the top results for particular queries.
Most search plugins that aim to improve WordPress results focus on the algorithm in some way, usually by letting you tweak the weight given to things like the search term prevalence in the headline, or number of times the term appears in the body of the post. Some also offer the ability to search custom fields and parse out keywords from other post/page meta-data. While this is useful for really fine-grained control if you’re doing a lot of deep tagging and adding a lot of meta info to your content, most of us aren’t.
Because we had so much content on the site for something like “alimony”, improving the algorithm didn’t really help. We have a dedicated page that organizes all the alimony information on the site and is really useful if you’re just getting started. If you were to click the “Alimony” link in our nav bar, it’s where you would go. Searching for the word, however, ends up giving you things like posts containing the associated statutes, old blog posts, and other pieces of content that may have the word in the post title or several times throughout the content, but they aren’t very useful to somebody just looking to get an overview, as we’re assuming somebody searching for a broad term is.
The solution that worked the best for us for a while was Swiftype, which, again, uses their own algorithm, but also lets you pin results to the top of a search for a specific term. This way, we could take a search like “alimony” and pin the landing page we had created to the top of the search, so that it was always the first result. But again, this solution wasn’t ideal
- Integration is a little tricky. Setting up the plugin to give ajax live results on the search field is pretty easy, but it’s ugly, and if the user hits return to visit the search results page, they get the standard WordPress results unless you do a lot of heavy fiddling with the theme.
- Excluding content is a bit of a chore. Because the algorithm and content database is stored on their server, specifying a mix of categories and individual posts that you want to exclude becomes messy.
My humble addition
So I decided to take a shot at solving the problem myself. I outlined the features we needed, worked on some mockups, and hired a developer. Not being much of a coder, I drew on my experience managing web development projects to contract a programmer, work on the features, iron out bugs, and finally learn the process of submitting the plugin to the WordPress directory.
I took the best features of the plugins we had used, but tried to make the whole thing more useful for our scenario (and hopefully for others as well). Curated Search tackles the problem in a few ways, by letting the user create a “Special Search” which is a custom post type that allows you do some cool things based on the query you specify:
- Pinned results: Like Swiftype, you can pin results to the top for a specific search. The cool thing is, this doesn’t require using any external database or installing anything special in the theme. Once the plugin is installed, you pick the term you want and pin the results and you’re done.
- Synonyms: you can specify synonyms for the search term so that searches for related keywords or common misspellings will bring up the results you want
- Redirection: I swiped this idea from Zappos. If you search for “Jeans”, rather than getting a search results page with a million pairs of jeans, you go to /jeans – which is a much more useful gateway page that allows you browse by style, see the latest arrivals, and shows what deals are going on in denim.
- Exclusion: You can hide content from the search results page on an individual basis, or by taxonomy. This isn’t unique, but most other solutions are really clunky and require you to hunt down a category ID and add it to a list in the settings screen, or find a post ID and do the same thing. Curated Search shows a meta box on each post/page/custom post type allowing you to exclude individual items, and a bulk exclude feature in the plugin settings to hide whole categories, tags, etc.
So what’s the plan?
My primary goal was accomplished – solving the problem on the site that inspired the plugin, and it feels even better to be able to release it to the world. I’m looking forward to having other people use it to make their sites better. It has been a really fun project and I already have a list of features that I plan on adding at some point in the near future. The next step is to work on promoting the plugin so that other users can try it out and get feedback on what can be improved, bugs that can be squashed, etc.
If the plugin gets enough traction, I’ll probably look at offering a premium version as well. I see that as another learning experience, more than an a reliable income stream. I have no delusions that this thing is the next big thing in WordPress plugins, I just want to get my feet wet with something like software distribution through Easy Digital Downloads.
Trying to sell and support a commercial version opens a whole new can of worms, so it’s not something I’ll enter into lightly if it does in fact come to pass. Iain Poulson has a great post about the work involved in bringing a premium plugin to market and all the little (and big) issues that come along with it. Aaron Collegeman has a similarly wonderful read on the rise and fall of his popular SharePress plugin.