Let’s Build a Wordpress Site

or, Am I building my house on sand

I will admit I have a bit of love hate relationship with Wordpress. When things are going great I love it, but as soon things get a little tricky I start to really hate it.

I, your humble narrator, hope to to show you the many pitfalls you many encounter when you or your designer/developer utter the words “let’s just build it in Wordpress.” I’ll counter a lot of my own arguments along the way and provide some work arounds. But I hope you come out with better understanding on why you should or shouldn’t use Wordpress.

Wordpress the Swiss-army Knife

People often liken Wordpress to a Swiss-army knife, that can really do anything. But is your Swiss-army knife your go-to tool when you need to cut some paper, when you need to saw a branch, or tighten a screw? Probably not, because all those tools are packed in one tool. And each individual is compromised in some way to make it fit.

Can you build an store on Wordpress, or a gallery site? Sure, but I will tell you the tool you need is often compromised to get it to fit into Wordpress.

Wordpress was developed to be a blogging platform, a way to easily create and control posts and pages. Something with a title, some content, and some meta data (categories and tags). Any type of information you want to store needs to fall into that model. Anything else, and you need to jury-rig it in.

Yes there are themes that do the jury-rigging for you, but we’ll get to that.

There is a great plug-in called Advanced Custom Fields, that makes it much easier to manage and manipulate other data, but as a developer you still need to wrestle with WP_Query to do any real manipulation. And as an end-user, the standard Wordpress fields take precedence. SO often the more critical information is pushed down bellow the large content field.

Widgets widgets widgets & plugins

Wordpress has been around for over 10 years, and as such has an army of open-source developers behind. If you need to to do it, there’s probably already a plugin or widget.

As an end-user going it alone, there’s a lot of noise in the plugin search. How do you know which plugin to use? As a developer it’s almost worse. Because you know what can go wrong plug-in selection can be even harder.

There’s a lot of plugging to do a lot of things, poorly. Back to the gallery site. While there are Gallery plugins, I’m yet to find one that lets photographers manage their photos, like photographers, and not bloggers.

You can easily change themes

This is one of those blessing/curse scenarios. The wealth of theme options for Wordpress is great, until you realize functionality is tied to your theme. Often your theme defines the post-types you have as well as other parts of the data.

You build your site on a theme, and then decide you want to change it. Now you need to either find a theme that handles all your custom posts the same way, or almost start from scratch. There’s nothing worse than than installing a new theme and having to redo the testimonials you spent hours collecting and inputting.

It’s easy to use

Sure, publishing content is easy in Wordpress. Create a new post, fill in the content and hit publish. Or better yet, write your content in Word, then copy and paste it into Wordpress. And here’s where you start running into problems. When you copy and paste from Word, you’re often taking HTML style tags with you, which isn’t the worst thing until you start editing the content.

The standard visual editor field in Wordpress has come a long way. But its very easy to get your cursor “stuck” inside and header for font tag added a lot of conflicting markup. I recommend working in the Text tab of the editor and only jumping in to the visual to add some styling. This means you are looking at HTML sometimes and can get confusing. It’s actually really hard to do any extensive editing and formatting to anything in Wordpress without having a basic understanding HTML.

Granted the latest versions of Wordpress have made amazing strides with the visual editor to keep you from screwing things up too much.

The page speed section

Skip this section if you’re allergic to technical talk.

A lot of files

Every plugin and widget you install adds extra CSS and Javascript files to your site. Each file is an extra call to your the server which slows down the site; google likes fast sites when it determines search rank. Remember, swiss-army knives can get quite big.

I’ve started using a plugin call Minqueue, which lets you combine and minify your CSS and Javascript files. But it does require some advanced knowledge and trial and error to configure right. You need to know which files are only needed for the admin as well as which files can be combined.

A lot of Database calls

The single most important speed factor google looks at is Time to First Byte. That’s the time between a visitor clicking on link or typing you’re URL into their address bar and when the server send back the first byte.

Wordpress saves all the information in MySQL database, that means before the server can send the first byte it needs to query the database multiple times then build the page of reach visit.

There are bunch of great caching plugins that essential generate HTML files and save them on the server, then when someone request that page, they just serve the pre-generated HTML instead of checking the database. Once again these plugins require some advanced knowledge to get the most out of. The quick setup on a lot of them is decent, but it’s easy to break your site.

Alternatives to Wordpress

Full Featured CMS

Depending on what you really need to do, what kind of data you need to store, and how you need to manipulate it you may need a full-featured CMS. Something like Drupal, Joomla or my favourite SilverStripe. They all have outstanding devoloper communities as well as available themes and plugins.

Using one of these frameworks, a web developer can build you a site purpose-built for your specific needs.

Flat-file CMS

Flat-file CMSs are gaining popularity, mostly because a lot of the functions you need a CMS with a relational database for are now being offloaded to third-party services. Things like comments can be better hosted with Disqus (it’s my go-to comment system even on Wordpress). Plus, most pages you serve are essentially a flat file that don’t really require multiple database calls.

These often store your information in text files on your server, or in NoSQL databases. They’re often easy to design for, since your web designer just needs to code HTML and wrap any editable positions in a template tag.

You get fast, easy to produce site, that you can often edit right on site instead of using a CMS interface. Lately I’ve been playing with LocomotiveCMS, its ruby based and a little tricky to deploy. But it’s improving.

To Wordpress or Not to Wordpress

Any web designer or developer worth their salt should pick the right tool for the job, not necessarily the most common, or one they’re most comfortable with.

Just saying “let’s build a Wordpress site” is often a cop-out. I find if I’m designing a site from scratch it’s often just as fast or faster to build using other tools, rather than trying to shoehorn a customer’s specific requirements into a hodgepodge of Wordpress plugins, but your requirement and budgets may vary.

As I mentioned, I do build a lot of Wordpress sites. And I recommend Wordpress to a lot of people. But not without first understanding their requirements and budget.

Sometimes you can drive a nail in with a wrench, but it’s better to use a hammer. Just make sure your site is a nail, and the tool you’re using is hammer.

Choosing a platform to build your site on should not be done without careful consideration. Make sure whatever platform you or your designer/developer choose creates a solid and stable foundation. After all, your website is your home and you don’t want it to collapse under it’s own weight

If you have any questions or think I’m full of it, drop me a line in the comments.

Like what you read? Give Richard Rudy a round of applause.

From a quick cheer to a standing ovation, clap to show how much you enjoyed this story.