10 Essential WordPress Plugins

10 Essential WordPress Plugins

In my opinion, WordPress is the best blogging software that exists currently. This is because of the sheer number of Plugins that are available for it that help customize the software to each individual blogger’s exact needs. WordPress themselves have recognized the need for the functionality of many plugins and have added that funcionality into Jetpack. This includes old plugins such as “Stats,” “Shares,” and “Spelling and Grammar.”

But there is still a huge amount of critical functionality that any WordPress blogger should take advantage of.

10 Essential WordPress Plugins

WordPress SEO by Yoast

If you have to limit your self to only two plugins from this list, this one is the first one. SEO or Search Engine Optimization is how bloggers get traffic. By optimizing SEO for each of the three big search engines (Google, Bing, Yahoo,) you can increase traffic to your site.

Yoast’s plugin is the king of SEO for WordPress. The biggest downside is that it does so much that it has a bit of a learning curve. The good news is that the developer has an extensive collection of blog articles aimed to get the most of out this plugin. But anyone who implements this plugin will find their website will increase in search rankings.

10 Essential WordPress Plugins


Akismet is the second most important plugin any WordPress blog must have installed. It helps to block spam comments from software bots. Before implementing this I saw 100+ spam comments a day. After doing so I see one or two a week. It does require sign up on the Akismet Website to get an API key. After entering the key into the settings, this plugin automatically takes over.

10 Essential WordPress Plugins

Yet Another Related Posts Plugin (YARPP)

Probably one of the single most useful plugins to help readers really explore blogs. Using an advanced algorithm that considers post content, tags, categories and post titles it displays a customizable number of “related” or similar posts to the currently displayed one. This gives readers a chance to see other posts that maybe interesting to them.

Adsense Optimizer

Despite not having been updated for over two years, Adsense Optimizer is one of the best plugins for integrating Google Adsense into a WordPress page that I have ever found. It has the ability to be used as a Widget, or fine grain control to load at the top of a post, in the middle of a post, at the bottom of the post, and even between posts on archive pages.

Quick Cache (Speed Without Compromise)

Until recently WP-Super Cache was “the” WordPress Caching software. Quick Cache blows it away. It is just as simple to setup initially and has the added feature of a “Clear Cache” button in the tool bar, allowing the author to quickly see updates to posts that have already been posted. The difference in speed between this Plugin and Super Cache is the same between Super Cache and the default WordPress Cache Plugin.

DB Cache Reloaded Fix

DB Cache Reloaded caches database queries. A major portion of WordPress’ slowness comes from repeated Database queries. By implementing this plugin these queries are cached, increasing speed of pages even more. It works seamlessly with Quick Cache above.

WordPress Hashcash Extended

WordPress Hashcash Extended works in conjunction with Akismet to stop robot generated spam comments on blogs. It works by causing visitors to “use obfuscated javascript to submit a proof-of-work that indicates they opened your website in a web browser.” While this sounds complicated – it is actually invisible to visitors and administrators. Comments caught for spam will have an admin visible “Hashcash not matched” message at the bottom. The downside to this is that it also sometimes catches ping backs, but most people at least glance at every spam comment to double check them anyways so this is not a huge problem.

Better WordPress reCAPTCHA

Just in case WordPress Hashcash and Akismet aren’t working, Better WordPress reCAPTCHA helps stop spam robots. it uses the famous anti-spam reCAPTCHA program that forces commenters to type in two separate words. Unlike earlier reCAPTCHA plugins, this one installs itself in the comments section exactly where it needs to. The configuration options are simple to understand, AND it works in conjuction with Akismet to be sure to capture even more comments. A big plug is that one of the configuration modes disables the reCAPTCHA for repeat commenters who have successfully commented before. With the implementation of all three anti-spam plugins listed above, I get maybe one spam comment a month now.

Udinra All Image Sitemap

Udinra automatically creates site maps of images. This is great for image heavy blogs that would otherwise have very little SEO on them due to a lack of content. The key is to make sure the Description and ALT tags on images are filled in, otherwise this plugin doesn’t have much to work with.

List category posts

This is another administrator useful plugin. By building upon WordPress’ built in Category shortcode functionality, admins have a powerful way to list all posts in a specific category. One of the best features is that the number of posts can be limited. Another very powerful feature is that posts from multiple categories can be included, or posts that meet two (or more) categories.

There are thousands of good, even great, WordPress Plugins. The above ten are the first ones I install on any WordPress website I create, but I am always looking for more and better functionality. What are some “must have” WordPress plugins you use? Please comment below!

How To: Streamline WordPress by removing Database calls

How To: Streamline WordPress by removing Database calls

*Warning – the following instructions involve editing PHP code. Doing so incorrectly can mess up a working blog very badly. Only attempt if you are confident you know what you are doing.*

One of the powers of WordPress is that it is very customizable with thousands of themes and as many plugins. A lot of this customization is done via generic database calls that store the required information. This has two advantages, theme designers know exactly what calls to make so that a blog shows all the required information. And this allows blog admins to quickly and easily flip between themes with no configuration needs afterwards.

But the downside is that a blog makes over a dozen database calls just to bring up a single web page. Many of these are stored in the header.php and footer.php files and only shows such information like the blog name, title, and dynamic links to resources pulled up every time. By removing these database calls and hardcoding the links we can not only streamline and quicken webpage loading, we can also reduce the number of database calls a page needs.

Note that several themes will update automatically occasionally. This will remove any changes you’ve made. The best suggestion is to copy your preferred theme to a new theme directory and call it a different name, then make the new theme your active one that you’ll streamline.

Here is the Header.php file from the “life-is-simple” WordPress Theme. This is a pretty simple and generic theme so it makes a good example.

<html xmlns="http://www.w3.org/1999/xhtml" >

<meta http-equiv="Content-Type" content="
  charset=" />
<meta name="generator" content="WordPress " />


@import url(  );

<link rel="shortcut icon" href="/icon.png" type="image/x-icon" />
<link rel="pingback" href="" />

<body >

I highly suggest changing one line at a time and testing it before going on to the next. This will help find any errors that popup through misplaced tags.

In the WordPress world, <?php denotes a database lookup of some sort. These are the lines that we want to try to remove as much as possible, but there are a few other locations we can clean up also.

<html xmlns="http://www.w3.org/1999/xhtml" >

<meta http-equiv="Content-Type" content="
  charset=" />

can be streamlined to:

All we did was remove the database lookup by hard coding the variables that would have been found. It’s critical to note that the charset maybe different for your blog depending on the language of the blog. The exact charset you should use is beyond the scope of this post, if you want to know more about charsets, here are some good links:
WordPress Database Charset and Collation Configuration
How to Avoid Character Encoding Problems in PHP
Seeing Weird Characters On Your Blog? Here’s How To Fix Your WordPress Character Encoding (Latin1 to UTF8)

For SEO reasons, we probably want to keep the next php lookup:

<meta name="generator" content="WordPress " />

But the title lookup can streamlined drastically


As the blog author we know what the page title (wp_title,) and bloginfo already are – in fact when first setting up WordPress these were likely two of the very first things entered. Just in case it’s needed, these are under General -> Settings. The page title is “Site Title,” and bloginfo is the “Tagline” field.

How To: Streamline WordPress by removing Database calls

So we can minimize this line to:

Pacific Northwest Photoblog - Travel Photos and History from the Pacific Northwest

The next line we can remove is the favicon, this is the 16×16 pixel icon that shows in the address bar and is saved when a page is bookmarked. The actual name can change from theme to theme, but it will always be located in the theme directory under wp-content. So this line:

<link rel="shortcut icon" href="/icon.png" type="image/x-icon" />


The icon may also have an .ico extension, or it can be something called favicon.png.

The next database lookup finds the pingback url. Note that this is an href= link that is looking for an html link, the database lookup simply grabs the webpage url, then appends /xmlrpc.php to it. All we do is add the link ourself.

<link rel="pingback" href="" />

In the original code above, the next database lookup is a critical one. This brings up the actual “body” of the blog. This could a static page, or a list of posts, depending on what settings were chosen in the blog. Either way, skip over the following database lookup because it is hugely critical.

<body >

In the header wrapper though, we have another familiar line:

<a href="/">

This is almost exactly the title line from above, but with an href link to the home page in it.

Pacific Northwest Photoblog

Travel Photos and History from the Pacific Northwest

At this point the header.php file is streamlined quite significantly. Next we go to the footer.php file as there is a couple more database lookups we can hardcode here also.

Original footer.php file:

As you can quickly see there is another “bloginfo” lookup here including an HTML link, just like the title lookup had in header.php.

Pacific Northwest Photoblog .  <?php _e('"Life is Simple" is a simple theme for WordPress, powered by Chereshka.', 'life-is-simple'); ?>

Some people would suggest removing the link to the Theme artist if it exists, along with other “useless” information. Personally I prefer to leave it to give credit to the people who provided the theme for free, but it does take a little resources to serve up. Every line removed decreases the load time slightly and will make a big difference if a blog is getting thousands of hits at once.

But we can do one other thing – remove the year lookup as defined by this piece of code:

I wanted to add my copyright blurb here so changed the code to:

Pacific Northwest Photoblog Copyright Rick Hamell 2006-2014.  <?php _e('"Life is Simple" is a simple theme for WordPress, powered by Chereshka.', 'life-is-simple'); ?>

Some blogs will have an RSS feed link in this area. For posts this typically look like

And for comments the RSS Feed typically looks like this

My rss feed is http://PNWPhotoBlog.com/feed/ . But RSS Feeds can look a little different, especially if you use Feedburner. So be sure to check the exact link before editing the code.

Personally I do not care if people subscribe to my comments via RSS, but I would like more readers to subscribe to my general RSS feed. My full code now looks like this:

Pacific Northwest Photoblog Copyright Rick Hamell 2006-2014.  Subscribe via RSS

<?php _e('"Life is Simple" is a simple theme for WordPress, powered by Chereshka.', 'life-is-simple'); ?>

For perspective, this is what my footer now looks like:
How To: Streamline WordPress by removing Database calls
You can see how I have two links in here, one that goes to the home page, and one that allows users to subscribe to my RSS feeds.

By these directions we’ve removed sixteen full database lookups! This halved the loading time of my webpage, PNWPhotoblog.com. That is quite a difference, don’t you agree?

Thanks to Joost de Valk “Yoast” for his very informative blog post “Clean up you theme” that inspired this post. If you have any comments, suggestions, questions, or want to correct my code, please leave a comment below.