As search, SEO, and the Wordpress platform evolve I will keep this article up to date with best practices.
As I take quite a holistic view on SEO, this guide will cover quite a lot, here's the contents:
Out of the box, WordPress is a pretty well optimized system, and
does a far better job at allowing every single page to be indexed than
every other CMS I have used. But there's a few things you should do to
make it a lot easier still to work with.
The first thing to change is your permalink structure. In WordPress
2.5, you'll find this page under Settings -> Permalinks. The default
permalink is
?p=<postid>, but I prefer to use either /post-name/ or /category/post-name/. For the first option, you change the "custom" setting into /%postname%/:

To include the category, you change it to /%category%/%postname%/.
Once you've done that, you'll want to install the Redirection plugin,
and make sure that under Manage -> Redirection -> Options, making
sure both URL Monitoring select boxes are set to "Modified posts". Now
you can change those permalinks to perfectly SEO'd permalinks without
having to do anything else, or worry about the search engine
consequences.
WWW vs non-WWW
Another good thing to configure now you're on that screen anyway is the
Root domain: Add WWW / Strip WWW one. Make a choice, and set it here,
don't enable both, some search engines still can't handle that. And
enable the redirect index.php/index.html one too, it won't hurt you,
and might even do your WordPress SEO some good.
URL stopwords
The last thing you'll want to do about your permalinks to increase your WordPress SEO, is install the SEO Slugs
plugin, this will automatically remove stop words from your slugs once
you save a post, so you won't get those ugly long URL's when you do a
sentence style post title.
By default, the title for your blog posts is "Blog title » Blog
Archive » Keyword rich post title". For your WordPress blog to get the
traffic it deserves, this should be the other way around, for two
reasons:
- Search engines put more weight on the early words, so if your
keywords are near the start of the page title you are more likely to
rank well.
- People scanning result pages see the early words first. If your
keywords are at the start of your listing your page is more likely to
get clicked on.
For more info on how to craft good titles for your posts, see this excellent article and video by Aaron Wall: Google & SEO Friendly Page Titles. I prefer to do this with HeadSpace, as that makes it very very easy. You should check your header.php though, and make sure that the code for wp_title(); contains two quotes, so it looks like this: wp_title('');. This makes sure you have absolute control over the title and don't have any annoying separator in there.
After that, go into the HeadSpace settings, and make them look something like this for your posts and pages:

For the other pages, I have the following settings:
- Posts / Pages:
%%title%% - Blog Title
- Categories:
%%category%% Archives %%page%% - Blog Title
- Tags:
%%tag%% Archives %%page%% - Blog Title
- Archives:
Blog Archives %%page%% - Blog Title
With HeadSpace, you can also write optimized titles for each post
specifically, overriding the settings here. This way you have absolute
control over your titles, and can make sure your WordPress titles are
actually helping your SEO.
Give each category a decent description, and use HeadSpace to add that description to the meta description, by adding %%category_description%%
in the Description field. After that, write a description for each post
or page that you actually want to rank with. The descriptions has one
very important function: enticing people to click, so make sure it
states what's in the page they're clicking towards, and that it gets
their attention.
Automated descriptions
In my opinion, auto generating descriptions is a load of bull, most
plugins pick the first sentence, which might be an introductory
sentence which has hardly anything to do with the subject, or another
sentence with a keyword in it, which might be completely wrong to pick
as description. Thus, the only well written description is a hand
written one, and if you're thinking of auto generating the meta
description, you might as well not do anything and let the search
engine control the snippet... If you don't use the meta description,
the search engine will find the keyword searched for in your document,
and automatically pick a string around that, which gives you a bolded
word or two in the results page.
Auto generating a snippet is a "shortcut", and there are no real shortcuts in (WordPress) SEO (none that work anyway).
Another neat featuer of HeadSpace is that you can use it to optimize
the more text, so if you use a more tag on the frontpage, you can
replace the default "Read more" link with something meaningful for
every post. It's small things like that that make your WordPress SEO
the best.
An often overlooked part of WordPress SEO is how you handle your
images. By doing stuff like writing good alt tags for images and
thinking of how you name the files, you can get yourself a bit of extra
traffic from the different image search engines. Next to that, you're
helping out your lesser able readers who check out your site in a
screen reader, to make sense of what's otherwise hidden to them.
You should of course be writing good titles and alt tags for each
and every image, however, if you don't have the time for that, there is
a plugin that can help you. The plugin is called SEO Friendly Images, and it can automatically add the title of the post and or the image name to the image's alt and title tag:

You'll want to add breadcrumbs to your single posts and pages.
Breadcrumbs are the links, usually above the title post, that look like
"Home > Articles > WordPress SEO". They are good for two things:
- They allow your users to easily navigate your site.
- They allow search engines to determine the structure of your site more easily.
These breadcrumbs should link back to the homepage, and the category
the post is in. If the post is in multiple categories it should pick
one. For that to work, adapt single.php and page.php in your theme, and use the breadcrumb plugin.
Although most themes for WordPress get this right, make sure your
post title is an <h1>, and nothing else. Your blog's name should
only be an <h1> on your frontpage, and on single, post, and
category pages, it should be no more than an <h3>.
These are easy to edit in the post.php and page.php templates. To learn more about why proper headings are important read this article on Semantic HTML and SEO.
All that javascript and CSS you might have in your template files,
move that to external javascripts and css files, and keep your
templates clean, as they're not doing your WordPress SEO any good. This
makes sure your users can cache those files on first load, and search
engines don't have to download them most of the time.
A very important factor in how many pages a search engine will
spider on your blog each day, is how speedy your blog loads. You can do
two things to increase the speed of your WordPress.
- Optimize the template to do as small an amount of database calls as necessary.
- Install a caching plugin. I highly recommend WP-Super-Cache, which is a bit of work to set up, but that should make your blog an awful lot faster.
Also, be aware that underpaying for hosting, is not wise. If you
actually want to succeed with your link-bait actions, and want your
blog to sustain high loads, go for a good hosting package.
2.5.
Do you really need to link out to all your buddies in your blogroll
site wide? Or is it perhaps wiser to just do that on your front page?
Google and other search engines these days heavily discount site wide
links, so you're not really doing your friends any more favor by giving
them that site wide link, nor are you helping yourself: you're allowing
your visitors to get out of your site everywhere, when you actually
want them to browse around a bit.
The same goes for the search engines: on single post pages, these
links aren't necessarily related to the topic at hand, and thus aren't
helping you at all. Thus: get rid of them. There are probably more
widgets like these that only make sense on the homepage, and others
that you'd only want on sub pages.
Some day you will probably be able to change this from inside
WordPress, right now it forces you to either use two sidebars, one on
the homepage and one on sub pages, or write specific plugins.
Once you've done all the basic stuff, you'll find that the rest of
the problems amount to one simple thing: duplicate content. Loads of it
in fact. Out of the box, WordPress comes with a few different types of
taxonomy:
- date based
- category based
- tag based
Next to that, it seems to think you actually need to be able to
click on from page to page starting at the frontpage, way back to the
first post you ever did. Last but not least, each author has his own
archive too, under /author/<author-name>/, resulting in completely duplicate content on single author blogs.
In essence that means that, worst case scenario, a post is available on 5 pages outside of the single page where it should
be available. We're going to get rid of all those duplicate content
pools, by still allowing them to be spidered, but not indexed, and
fixing the pagination issues that come with these things.
Install the robots meta plugin, and make sure the settings prevent indexing of all archive pages, like this:

Now the search engine will follow all the links on these archive
pages, but it won't show those pages in the index. Not everybody will
agree on this policy, and others will tell you to just show a snippet
of each post on the archive page. That'll also work, but in my opinion
completely throwing them out is better.
If your blog is a one author blog, or you don't think you need
author archives, use the robots-meta plugin to disable the author
archives. Also, if you don't think you need a date based archive:
disable it. Even if you're not using these archives in your template,
someone might link to them and thus break your WordPress SEO...
3.3.
Thirdly, you'll want to make sure that if a bot goes to a category
page, it can reach all underlying pages without any trouble. Otherwise,
if you have a lot of posts in a category, a bot might have to go back
10 pages before being able to find the link to one of your awesome
earlier posts...
There's an easy fix. Jaimie Sirovich wrote Pagerfix, a plugin that helps you make your pagination look like this:

To reach that, install that plugin, and change this section in f.i. your index.php:
<div class="navigation">
<div class="alignleft">
<?php next_posts_link('« Older Entries') ?>
</div>
<div class="alignright">
<?php previous_posts_link('Newer Entries »') ?>
</div>
</div>
Into this:
<div class="navigation">
<?php
pager_fix(" "," "," ","« Previous page","Next Page »","strong");
?>
</div>
Do that in your index.php, your archives.php, and all other archive templates you might have.
Another easy step to increase your WordPress SEO is to stop linking
to your login and registration pages from each and every page on your
blog. The same goes for your RSS feeds, your subscribe by e-mail link,
etc. Robots Meta has an option to nofollow all your login and
registration links. You'll probably have to go into your RSS links and
nofollow those by hand. If you're using the meta widget, you might want
to enable the option in robots meta to replace that with one that has
nofollowed links.
Blogs are spidered so easily due to their structure of categories,
tags etc.: all articles are well linked, and usually the markup is nice
and clean. However, all this comes at a price: your ranking strength is
diluted. They're diluted by one simple thing: comments.
You've probably noticed by now, or you're seeing now, that this
WordPress SEO post is actually... not a post on a blog. It's a page. Why? Well
for several reasons. First of all, this article needed to be a
"daughter"-page , to be in the correct place on
this site. Secondly, to rank for the term [WordPress SEO], this article
has to have the right keyword density. And that's where things go
wrong. Comments destroy your carefully constructed keyword density.
That's why I decided to make my most important articles into pages.
That way, you can easily update them and do a new post about what
you've changed.
If a post on your blog becomes incredibly popular and starts to rank
for a nice keyword, like mine did for WordPress SEO, you could do the
following:
- create a new page with updated and improved content
- change the slug of the old post to
post-name-original
- publish the new page under the old post's URL, or redirect the old post's URL to the new URL
- send an e-mail to everyone who linked to your old post that you've updated and improved on your old post
- wait for the links to come in, again;
- rank even higher for your desired term as you've now got:
- more control over the keyword density
- even more links pointing at the article
- the ability to keep updating the article as you see fit to improve on it's content and ranking
Some among you will say: I could have 301 redirected the old post to
the new one with the same effect. True. Except: you'd lose the comments
on the old post, which is in my opinion a sign of disrespect to people
who took the time to comment, and 301 redirects take quite a bit of
time sometimes. Of course you should treat this technique with care,
and not abuse it to rank other products, but I think it can be done in
everyone's benefit. For instance this article: if you came here through
a social media site like Sphinn, expecting an article about WordPress
SEO, that's exactly what you got!
One way of getting search engines to get to your older content a bit
easier, thus increasing your WordPress SEO capabilites a LOT, is by
using a related posts plugin. These plugins search through your posts
database to find posts with the same subject, and add links to these
posts.
There's a load of these available, but I just use the one that comes
with the Simple Tags plugin, as I've found that the easiest and best
one so far.
A lot of bloggers still think that because their blog is a
blog, they don't have to optimize anything. Wrong. To get people to
link to you, they have to read your blog. And what do you think is
easier: getting someone who is already visiting your blog to visit
regularly and then link to your blog, or getting someone who visits your blog for the first time to link to your blog immediately? Right.
That's why conversion optimization is so vitally important to
bloggers as well: they need to learn how to test their call to actions
on their blog so that more people will subscribe, either by e-mail or
by RSS. (Ow btw, if you haven't subscribed to this blog yet, do it now!)
One of the things I've found to be very important, and more bloggers
seem to have found this, is that a BIG RSS subscribe button is very
important, as is offering a way to subscribe by e-mail. I even offer
daily and weekly e-mail subscribe options, using aweber (aff), and have found that people tend to really like those options too.
Another thing to be very aware of is when people might want to
subscribe to your blog. If they've just finished reading an article of
yours, and really liked it, that would be the ideal time to reach them,
right? That's why more and more people are adding lines like this to
the end of their posts: "Liked this post? Subscribe to my RSS feed and
get loads more!"
Another great time to get people to subscribe is when people have
just commented on your blog for the first time, for which purpose I use
the awesome comment relish plugin. Which leads me to the next major aspect of WordPress SEO:
6.
Comments are one of the most important aspects of blogs. As Wikipedia states:
The ability for readers to leave comments in an interactive format is an important part of many blogs.
Comments are not only nice because people tell you how special you
are, or that you made a mistake, or whatever else they have to tell
you. Most of all they're nice, because they show engagement. And
engagement is one of the most important factors of getting people to
link to you: they show you they care, and they open the conversation,
now all you have to do is respond, and you're building a relationship!
The easiest way of getting people to do anything is: ask them to do
it. Write in an engaging style, and then ask your blog's readers for an
opinion, their take on the story etc.
Another important things is your comment links. Is your comment link
"No comments »"? Or is it "No Comments yet, your thoughts are welcome
»"? Feel the difference? You can change this by opening your index.php template, search for comments_popup_link() and changing the texts within that function.
Another thing to do is thank people when they've commented on your
weblog. Not every time, because that get's annoying, but doing it the
first time is a very good idea.
Justin Shattuck thought the same, and created the Comment Relish
plugin, which I just mentiond, which sends an email after someone has
made his first comment. This email is a message you can enter yourself,
with for instance your feed URL, and in my case, a newsletter subscribe
URL, etc.
Another option, which is a bit less obtrusive / spammy, is to install the comment redirect plugin. This plugin allows you to redirect people who have made their first comment to a specific "thank you" page.
6.3.
Now that people have joined the conversation on your blog, you should make sure they stay in the conversation. That's why you should install the subscribe to comments
plugin, that allows people to subscribe to a comment thread just like
they would in a forum, and sends them an e-mail on each new comment.
This way, you can keep the conversation going, and maybe your readers
will be giving you new angles for new posts.
If you've followed all of the above WordPress SEO advice, you've got a big chance of becoming successfull, both as a blogger and in the search engines. Now the last step sounds easy, but isn't. Go out there, and talk to people online.
7.1
There's been a movement on the web for a while now that's called the "You comment - I follow".
They want you to remove the nofollow tag off of your comments to
"reward" your visitors. Now I do agree, but... That get's you a whole
lot of spam once your WordPress blog turns into a well ranked blog...
What I do advocate though, is that you actually follow your
visitors! Go to their websites, and leave a comment on one of their
articles, a good, insightful comment, so they respect you even more.
If you think that's a lot of work, do realize that, on average,
about 1% of your visitors will actually leave a comment. That's a group
of people you have to take care of!
7.2
Twitter
is a cool form of micro-blogging / chatting / whatever you want to call
it. Almost all the "cool" people are on there, and they read their
tweets more often than they read their e-mail, if you even knew how to
reach them through e-mail.
To boot, if you use WordTwit or Twitter Tools,
all of your posts can be announced on Twitter, which will usually get
you quite a few early readers! People will feel even more happy to
comment on Twitter, which might get you into an extra conversation or
two.
If you want to rank for certain keywords, go into Google Blogsearch,
and see which blogs rank in the top 10 for those keywords. Read those
blogs, start posting insightful comments, follow up on their posts by
doing a post on your own blog and link back to them: communicate! The only way to get the links you'll need to rank is to be a part of the community.
This guide gives you a lot of stuff you can do on your
blog. It goes from technical tips, to conversion tips, to content tips,
to conversation tips, and a whole lot in between. There's a catch
though: if you want to rank for highly competitive terms, you'll have
to actually do most of it.