WordPress SEO: The definitive guide to better website positioning in WordPress.
WordPress is one of the best, if not the best CMS when it comes to SEO. That said, spending your time on the SEO of your WordPress site may seem like a waste of time, but it’s not. Optimizing your site with the best practices outlined in this WordPress SEO guide will help improve your search engine positioning, generate more subscribers to your newsletter, and have a better site overall.
Since I take and preach a holistic view of SEO, meaning I think WordPress SEO should be addressed in all aspects of your digital marketing and PR, this guide covers many subjects and is therefore an extensive read. Check out the table of contents below to get straight to the subject of your choice if you are in a hurry.
Also read: What is SEO?
Updates to this WordPress SEO Guide
This article is updated with best practices for WordPress SEO. The goal is to centralize other content already produced in order to make it a single source for consultation: a definitive guide to WordPress SEO.
It assumes that you have a WordPress site (or are planning to have one) and use the Yoast SEO plugin. Yoast’s SEO plugin has numerous features that will help and facilitate the implementation of many aspects described in this WordPress SEO guide.
As research, SEO, and the WordPress platform evolve I will continue to keep this article updated with best practices. Also subscribe to my newsletter to receive notifications when this article is updated.
- WordPress SEO: The definitive guide to better website positioning in WordPress.
- WordPress SEO Basics
- Template optimization
- Advanced WordPress SEO and duplicate content
- Site structure for better ranking
- Conversion Optimization
- Comment Optimization
- Off-site SEO
- Measuring Results
- WordPress SEO Conclusions
By default, WordPress is a well-optimized platform, much better than other CMS platforms. Still, there are small adjustments you can make to further optimize it and make it easier to use.
The first thing to adjust is your permanent link structure. You can find the permanent link settings under Settings > Permanent Links. The standard permalink format is
?p=<postid>, but we prefer to use
/categoria/nome-do-post/. For the first option, change the setting to
To include the category, select “Custom Structure” and change the value to
/%category%/%postname%/. If you had
?p=<postid> as your permanent link structure WordPress will take care of the redirects for you This will also occur if you switch from
/%category%/%postname%/. If you change to another permalink structure it is good to make sure that the redirects will occur correctly.
Also read: Friendly URLs and SEO
www vs non-www
You should think about how you want to display your website, www.dominioexemplo.com.br or simply dominioexemplo.com.br. Make sure that in your general settings, under Settings > General, the version you want to display is properly selected:
You will also want to select this option correctly in Google Search Console. Go to your Search Console and select your preferred domain, you will find it under Settings > Preferred Domain:
Where you can set this up:
The last thing you might want to do in your permalinks structure to improve your WordPress SEO, is to remove stop words. Words like “one”, “and”, “the”, etc. If you use Yoast’s SEO plugin it automatically removes these words from your URLs as soon as you save a post, so you’re not left with those long, ugly URLs if you’ve made a title in sentence format.
This is not an improvement that you will want to make after your posts are published. If people have already linked to your pages, try not to change the permanent link, and if you do, make sure you redirect properly. In many cases WordPress should redirect the old URL to the new one, but if it doesn’t you should do the redirect manually.
SSL or non-SSL
Historically, adopting SSL (having your site accessible by https) was an option. Many sites did not opt for this extra layer of security.
Today however, SSL is mandatory – search engines can “penalize” sites that do not have an SSL security certificate. It is also good practice to use SSL to prevent hacker attacks.
Additionally, many optimization and performance improvement techniques are tied to the use of valid SSL/HTTPS.
The title, the content tag
<title> of your page, is one of the most important factors for ranking in search results. It is not just the title of the tab or browser window, it is also the first line that people see in searches, followed by the URL (or the navigation path) and the snippet, usually the meta description combined with the date:
In many blogs, the post titles are still “Blog title ” Blog archive ” Keyword” or “Blog title ” Keyword”. For your WordPress blog to get the traffic it deserves, avoid this for two reasons:
- Search engines put more weight on the first few words, so if your keywords are near the beginning of the page title, you have a better chance of ranking better.
- People scanning the results pages see the first few words first. If your keywords are at the beginning of the snippet you are more likely to get more clicks.
Controlling Titles with Yoast SEO Plugin
You can control your SEO titles with Yoast’s SEO plugin. There are two parts to the plugin for this control. First, as soon as you install and activate the plugin, you get an SEO session in your site’s admin panel. Go to SEO > Titles and Goals and you will see some tabs for different pages on your site. For each post type and taxonomy you can select a title template (as well as the meta description but we will see that in a moment). For posts on our site we have something like this:
There are some variables that you can use in titles and descriptions (meta title and meta description), they are listed and explained in the help tab at the top right of the page. Make sure you check where the template works and that you are not generating duplicate titles for example. In this case you must either check the “Force rewrite” checkbox on the same page or modify your template.
For the other pages we have the following settings:
- Categories, tags and other taxonomies:
%%term_title%% %%sep%% Arquivos %%page%% %%sitename%%
- Search pages:
Você procurou por %%searchphrase%% %%page%% %%sep%% %%sitename%%
- Page 404:
Página não encontrada %%sep%% %%sitename%%
- Author File:
%%name%%, autor em %%sitename%% %%page%%
There are some interesting features, for example: you can use
%%cf_<custom field name>%% to use a custom field, a meta value, and a meta user.
The template code
%%sep%% replaces the tab with the tab selected on the first tab:
Optimizing Posts Individually
Now that we have set up our templates, we will start optimizing posts and pages individually. For this we use the snippet preview added by the Yoast SEO plugin:
This preview will automatically fetch the values you had already entered in your post and apply them to your template, but you can still overwrite the title completely using the title field as below:
The field will show the warning below if your title is becoming too long. The title length is not fixed or limited but limited to the display length in search results.
For titles it is important to note:
- They should always contain your brand name, preferably at the end, so people will recognize your brand name in future searches.
- They should always contain the keyword that you thought was most important for the post or page in question, which we will call the focus keyword from now on. The focus keyword should preferably come at the beginning of the title.
- The rest of the title should entice people to click.
Now that we have our proper titles, we should focus our attention on the meta descriptions. The meta description can be used by search engines to show in the snippet, the black part of the text displayed below your URL. The meta description is normally only used when it contains the keyword that the user is searching for.
Some plugins use “automatic descriptions”. They use the first sentence of a post to populate the meta description by default. This is not recommended. The first sentence can be an introductory sentence that may not have much relation to the subject.
Also, the only well-written descriptions are hand-written, and if you are thinking of auto-generating the meta description, don’t do it and let the search engine control the snippet. If you don’t use a meta description, the search engine will find the searched keyword in your document and automatically grab a piece of content around it.
Auto-generating a snippet is a shortcut, and there are no true shortcuts in (WordPress) SEO (none that actually work).
So use the meta description field of the Yoast SEO plugin to write the meta description. Make sure it will entice the reader to click through and make sure you include the keyword of your post at least once in your meta description.
Read also: How to create the right meta description
You will notice that I have not mentioned meta keywords. I don’t use them anymore and neither should you. Meta keywords had their value in the past but are no longer taken into consideration by search engines (since 2009). So simply don’t waste time on them, there are other ways to optimize.
An often overlooked part of WordPress SEO is how you handle your images. Writing good alt tags for images and thinking about how you name the files can generate extra traffic in search engine image search. In addition, you will be helping your readers, who for some reason are having difficulties with your browser, to identify what your content is about.
Proper use of the alt attribute for images is also something that is checked in the “Page Analysis” of Yoast’s SEO plugin.
Read also: Image optimization: alt tag and title tag
To inform Google and other search engines that your site has been updated, you can use XML sitemaps. Yoast’s SEO plugin generates an XML sitemap of all your posts, pages, custom posts and all your taxonomies such as categories, tags and other custom taxonomies by default. If you want to exclude some type of content from the sitemaps (if you don’t want to index it) just change the specific option for the content type in the plugin settings.
When you publish a new article or page, the XML sitemap is automatically sent to Google (and other search engines) helping them to easily (and quickly) find your new content.
It is also convenient to split these XML files into smaller parts, so Google has to work to index only the new “sub” sitemap when a post is published, the other sitemaps being unchanged, using the modification date option (this is also covered by Yoast’s SEO plugin).
Yoast’s SEO plugin also includes the images from each post in its sitemap, which makes your images rank better in Google’s image search. The plugin also “forces” a post to be entered if it is not indexed in the search engine.
Finally, it has a full API, allowing other developers to add other sitemaps to the plugin, which means that News SEO and Video SEO extensions can be added. These extensions generate respectively a news sitemap and a video sitemap.
You will want to add navigational trail to your posts and pages. Navigation paths or breadcrumbs are links, usually near the page titles and look like “Home > SEO > WordPress SEO”. They are good for two reasons:
- They allow the visitor to easily navigate your site.
- They allow the search engine to determine the structure of your site more easily.
These navigation trails should link to the home page of your site and to the article category. If the published post has more than one category you must choose one. To use optimized trails, adapt your theme’s
page.php page to use the navigation trail from Yoast’s SEO plugin. You can find the navigation path settings under SEO > Internal Links.
Although most WordPress themes do this adequately, make sure that the title of your post is a
<h1>, just it. The name of your site or blog should be
<h1> only on your home page, on post and category pages it should be no more than a
<h3>. Your sidebar should also not be full of
<h3>. These are easy to edit in your
Read also: Headings and SEO
A very important factor in how many pages the search engine will crawl on your site per day, is how fast your site loads. You can do three things to increase the speed of your WordPress site:
- Optimize your template to make only necessary requests to the database.
- Install a caching plugin. I recommend W3 Total Cache if you already have some technical knowledge or WP Rocket if you have no knowledge on the subject.
- Caching plugins work even better if combined with a CDN like MaxCDN or Cloudflare.
Keep an eye on your hosting as well, saving a lot on hosting your site may not be a wise decision. If you want your site to perform and support high loads look for a good web host.
Read also: Understanding WordPress hosting
Do you really need to link to all partners and advertisers in your sidebar? Or maybe it is wiser to do this only on some of your pages? Google and other search engines today do not give much value to these links in the sidebars, so you are not benefiting your partners and yourself: you are letting your visitors leave your site when you actually want them to browse a bit more in your content.
The same goes for search engines: in posts, these links are not necessarily related to the topic, so they do not favor your SEO. Get rid of this sidebar full of links that take the visitor to other pages or off the site. Use these links and widgets only on some pages or sub-pages.
The content of the sidebars can be changed per sidebar. Many themes allow the creation of sidebars, and you can configure them for each page.
For some sites an HTML sitemap may not make sense, especially when your site is a blog. For institutional sites with many page levels an HTML sitemap can be beneficial for visitors and search engines.
Once you have gone through the basics, you will realize that the rest of the problems are really just one thing: duplicate content. Mostly actually. By default, WordPress comes with a few different types of taxonomies:
Finally, each author has their own archive page also at
/author/<author-name>/, resulting in duplicate content for single author blogs.
In essence this can mean that a post can be available on up to 5 pages beyond the page it is supposed to be on. We have to handle this duplicate content by allowing the search engine to crawl it, but not index it, and fix the pagination that comes with this duplicate content.
Using Yoast’s SEO plugin, make sure to prevent the indexing (or even existence) of files that are not applicable to your site. Set this up under SEO > Titles and Targets, where you will find the following options under the “Files” tab:
The settings above are the settings for my site. As you can see, I have completely disabled date-based files, since I don’t use them. Any date-based link will redirect to the home because of this setting. I left the author files intact, but set the subpages to noindex and follow by default. This way you will never land on a page 2 of an archive on my site from a search engine (change this in SEO > Titles and Goals > Others tab).
On smaller sites it may make sense not to index categories or tags, but use this option wisely.
There is one type of file that is noindex and follow by default in the Yoast SEO plugin: the search results page. This is a Google best practice for which a configuration is left out, as you should have.
Much has changed in how Google handles paginated files since it introduced support for links
rel="prev". Luckily Yoast’s SEO plugin takes care of this automatically.
If your blog is a single-author blog, or you don’t think you need author files, use the SEO plugin to disable author files. If you don’t think you need date-based archiving, disable them too. Even if you are not using these files in your template, someone can link them and mess up your WordPress SEO strategy.
Make sure that if a bot goes to a category page, it can reach all the underlying pages without any problems. Otherwise, if you have many posts in a category, a bot may have to go back 10 pages before it finds the link to one of your older posts.
There is an easy solution, in fact, there are several plugins that deal with this. My favorite is WP-PageNavi, maintained by Scribu, one of the best WordPress developers.
In February 2009, the major search engines introduced the element
rel = "canonical". This is another utility to help combat duplicate content. WordPress has built-in support for canonical link elements in posts and single pages, but it has some minor flaws in that. It does not produce canonical links on any other page. With the Yoast SEO plugin enabled, you automatically get canonical link elements for every page type in WordPress.
Blogs are easily indexed due to their structure of categories, tags, etc.: all articles are well linked and generally the markup is well done and clean. However, all this comes at a price: your ranking is diluted. It is diluted by one simple thing: comments.
You may have already noticed, or will see next, that this WordPress SEO post is not open for comments. Why? One reason is that I want to position this article for the term “WordPress SEO”, so it must have the right keyword density. And that is where things go wrong. Comments destroy your carefully constructed keyword density.
So I have decided to close for comment my most important articles. When necessary I can update it and make a new post telling you what has changed in it.
Another way to conduct this is to have your main articles as pages rather than posts. That is, you create a page (which does not receive comments) and can mention and link updates through posts.
If a post on your blog becomes incredibly popular and starts ranking for a keyword, like this one for WordPress SEO, you can do the following:
- create a new post with updated and improved content;
- change the old post slug to
- publish the new page at the old publishing URL, or redirect the old publishing URL to the new URL;
- send an e-mail to everyone who linked to your old post telling them what you have updated and improved about your old post;
- hope to receive links again;
- improve your positioning even more, now that you have it:
- more control over keyword density;
- even more links pointing to the article;
- the ability to keep updating the article as you see fit to improve its content and ranking.
Some among you will say: I could use a 301 redirect from the old post to the new post with the same effect. True. Except: you would lose the comments on the old post, which is, in my opinion, a sign of disrespect to the people who took the time to comment. Of course, you must treat this technique with care and not abuse it to position other terms. For example, this article: if you came here via a social media site like Facebook, expecting an article about WordPress SEO, this is exactly what you got!
Internal linking is extremely important to help Google understand the structure of your site. You should not only show related posts in your post, but also link in your text to other related posts. The more links a post or page receives, the more important it is to the search engine. In Yoast’s SEO plugin, there is a text link counter, if you see that one of your essential or basic articles has few links, you can start working on that immediately.
In Yoast SEO Premium, there is even an internal linking tool that helps you find the right posts or pages to link to.
One of the most common problems we encounter on websites is the overuse of tags. Note that a tag in itself does not improve your SEO. The only way to improve your SEO is to relate one content to another and, more specifically, a group of posts to each other.
Get your readers to subscribe!
Many bloggers still think that since their blog is a blog, they don’t need to optimize anything. Wrong. To get people to connect with you, they need to read your blog. And what do you think is easier: getting someone who is already visiting your blog to visit regularly and then subscribe to your blog, or asking someone to visit your blog for the first time and subscribe immediately?
One of the things I have found to be very important, and more bloggers seem to have discovered this, is that an RSS subscribe button is relevant, as is offering a way to subscribe by email. We offer some email subscription options using MailChimp, and I’ve found that people tend to click on them more.
Another thing to keep in mind is when people might want to subscribe to your blog. If they just read an article of yours and really liked it, that would be the ideal time to reach out to them, right? That’s why more and more people add phrases like this one at the end of their posts: “Did you like this post? Subscribe to our newsletter and get a lot more! “
Another great time to get people to subscribe is when they first comment on your blog, for which we use a comment redirect plugin. Which brings us to the next big aspect of WordPress SEO:
Involve your commentators
Comments are one of the most important aspects of blogging. As Wikipedia states:
The ability of readers to leave publicly visible comments and interact with other commenters is an important contributor to the popularity of many blogs.
Comments are not just nice because people tell you how special you are, or that you made a mistake, or whatever else they have to tell you. Above all, they are cool, because they show engagement. And engagement is one of the most important factors in getting people to connect with you: they show they care, they open the discussion, now all you have to do is respond and you’ll be building a relationship!
The easiest way to get people to do something is: ask them to do it. Write in an engaging style and then ask your blog readers for their opinion, their take on the story, etc.
Another important thing is your comment call. : Do you still use “No Comments” “? Or is it “No comments yet, your thoughts are welcome” “? Feel the difference? You can change this by opening your template
index.php, look for
comments_popup_link () and change the texts within this function.
Another thing to do is to thank people when they comment on your blog. Not every time, because that is annoying, but doing it the first time is a good idea.
To do this you can install a comment redirect plugin. This plugin allows you to redirect people who made the first comment to a specific thank you page.
Now that people have participated in the conversation on your blog, you must ensure that they stay in the conversation. This is why you should install a plugin that allows you to subscribe to comments, it allows people to subscribe to a comment thread as if they were on a forum and sends an email with each new comment. That way you can continue the conversation, and perhaps your readers will offer new points of view for new posts.
If you have followed all the WordPress SEO advice above, you have a great chance of being successful, both as a blogger and in the search engines. Now the last step sounds easy, but it is not. Go there and talk to people online.
There was a movement on the web for a while that was called “You comment – I follow”. This movement called for you to remove the nofollow tag from your comments to “reward” your visitors. I agree in parts. If you have a very popular blog you might get a lot of spam because of this. I advocate that you really follow your visitors! Go to their websites and leave a comment on one of their articles, a good and insightful comment, so that they will respect you even more.
If you think it is too much work, realize that on average about 1% of your visitors will actually leave a comment. This is a group of people you need to take care of!
Twitter is a cool form of micro-blogging/chatting or whatever you want to call it. Almost all the “nice” people are there, and they read your tweets more often than they read your e-mails, if you knew how to reach them by e-mail.
For starters, if you use WordTwit or Twitter Tools, all your posts can be announced on Twitter, which will usually get you some initial readers! People will be even happier to comment on Twitter, which may lead you to an extra conversation or two.
If you want to rank for certain keywords, go to Google and see which blogs are in the top 10 for those keywords. If you can invest a little, the SEMrush tool has a specific module for link building. Read these blogs, start posting insightful comments, follow up their posts by making a post on your own blog and link to them: communicate! The only way to get the links you need to rank is to be part of the community.
A good SEO campaign depends not only on implementing changes, but also on measuring the impact of those changes, seeing what works, and making more of it. Perhaps the best Analytics tool on the market is Google Analytics. You can implement it on your site using the MonsterInsights plugin or Google Tag Manager.
You can also evaluate results by tracking positioning, but the problem with ranking tracking is that it is difficult to determine “real” positions because of personalized and localized search results. The best result you can get by being great at WordPress SEO is more traffic.
This guide offers many things you can do on your WordPress site. It ranges from technical tips to conversion tips, content tips, conversation tips, and more. But there is still one problem: if you want to rank for highly competitive terms, you will need to do more and create excellent content that is attractive to readers. Good luck and be sure to read my other articles!
Continue reading: The Definitive Guide to Content SEO
Continue reading: 10 pros and cons of being an SEO professional
- WordPress SEO (Yoast)