I started writing my beginner's guide to WordPress
SEO
a while back, and have since done a load of posts on the subject, an
article in the Search Marketing Standard, newsletters, and
presentations. It's time to let all the info of all these different
articles fall into one big piece: the final WordPress SEO tutorial.
Note: this article hasn't been updated yet since the beta release of my
WordPress SEO plugin, but that plugin does cover a lot of the stuff needed below, so
do check it out! When that plugin goes into a more stable development mode, this article will of course be updated.
If you're more of a visual type, try this WordPress SEO
video. It's an hour long presentation I gave at A4UExpo London, that covers most of what's in here too.
As
search, SEO, and the WordPress platform evolve I will keep this article
up to date with best practices. If you don't have the time to do this
kind of optimization yourself, consider hiring us to do it, check out
our
WordPress consulting services.
As
I take quite a holistic view on SEO, this guide will cover quite a lot,
check out the table of contents for some quick jumping around.
1. Basic technical optimization
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.
1.1. Permalinks
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.
Optimize your Titles for SEO
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.
1.3. Optimize your Descriptions
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).
1.4. Optimize the More text
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.
1.5. Image Optimization
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:
2. Template Optimization
2.1. Breadcrumbs
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 my
breadcrumb plugin.
2.2. Headings
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.
2.3. Clean up your code
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.
2.4. Aim for speed
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. I've highlighted how to do this in my post about speeding up WordPress.
- Install a caching plugin. I highly recommend W3 Total Cache, which is a bit of work to set up, but that should make your blog an awful lot faster.
- W3 Total Cache works even more magic when combined with a CDN like MaxCDN. Read more about WordPress CDN stuff here.
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. I use
VPS.net myself, and they've proven to be better than most everything I've seen in hosting, but I've got great experience with
Page.ly too. If you want to know more be sure to read my article about
WordPress hosting.
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.
3. Advanced WordPress SEO and Duplicate Content
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.
3.1. Noindex, follow archive pages
Install my
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.
3.2. Disable unnecessary archives
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...
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, in fact, there are several plugins that deal with this. My favorite one at the moment is
WP-PageNavi, but most others will work too. If you have the
Genesis Theme, you can just enable numeric navigation under Theme Settings -> Content Archives.
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.
4. A site structure for high rankings
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.
4.1. Pages instead of posts
You've
probably noticed by now, or you're seeing now, that this WordPress SEO
post is actually... not a post. It's a page. Why? Well for several
reasons. First of all, this article needed to be a "daughter"-page of my
WordPress page, to be in the correct place on this blog. 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.
4.2. New wine in an old bottle
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!
4.3. Linking to related posts
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.
5. Conversion optimization
Get those readers to subscribe!
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 my own
comment redirect plugin. Which leads me to the next major aspect of WordPress SEO:
Get those readers involved
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!
6.1. How you get people to comment
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.
6.2. Bond with your commenters
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 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. Note that
some people think this is spam, and that laws in several countries might
prohibit the use of this. I can't tell you, because I'm not a lawyer.
Another option, which is a bit less obtrusive / spammy, is to install my
comment redirect plugin. This plugin allows you to redirect people who have made their first comment to a specific "thank you" page.
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.
7. Off site blog SEO
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.
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!
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.
7.3. Find related blogs, and work them
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.
8. Conclusions on WordPress SEO
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.
If you want to keep updated on the latest news about WordPress, and hear more tips as I come up with them, then subscribe to my
WordPress mailing-list
right now. If you need help implementing all the tips in this article,
or want me to review whether you've done a good job implementing it all,
order a
website review!