WordPress SEO: The Ultimate Guide

Article stats:
Linking websites 15
Backlinks 28
InLink Rank 28.0
Data from: backlink checker tool.
SEO for WordPress: Quick Start Guide

If you are in the SEO industry, you will inevitably have to deal with WordPress-based websites. This guide will help you save time and get over tech-related issues faster, so that you can get yourself straight to what you do best — search engine optimization and strategizing.


WordPress is one of the most widely used content management systems around the web. According to W3Techs survey, as of October 01, 2017 around 28.8% of websites depend on WordPress as a content management or blogging platform. This CMS shows the highest growth rate for several years in a row.

What makes it so popular?

1) WordPress is easy to use even for non-techies,
2) It has rich functionality,
3) It's flexible, and
4) It's absolutely free.

However, here are a few things you need to understand before you start optimising your WordPress website.

  • Keep in mind that a WordPress website does not differ from any website out there. You should apply the very same search engine optimization techniques to it as you would to any other website.
  • WordPress is often referred to as an SEO friendly content management system (CMS). It is indeed true: WordPress lets you implement many on-page SEO techniques. However, a WordPress website doesn't come optimized out of the box. In other words, if you simply switch to WordPress from Joomla or Drupal, the rankings are unlikely to grow without additional effort.
  • Some crucial WordPress SEO changes require that you poke in PHP or HTML or install and tune up plugins. If any of these words sounds scary to you, be ready to spend extra time on reading additional tutorials.
  • If you need answers to the questions like "What is a title tag? What are SEO friendly URLs?" please refer to our online SEO book first.
  • For the purpose of this guide, I presume that you make a fresh installation of WordPress and are building your website from scratch.


Do not make any significant changes like installing or uninstalling the plugins or editing the theme on the production website without prior testing. Plugins may conflict with each other or the WordPress version of your website. This may cause malfunctions or undesired website behavior.

It's safe to play around with WordPress on your local development server first.

If you still don't have one, consider XAMPP or MAMP.


Pretty URLs

Earlier WordPress versions were shipped with "ugly" URLs. For example, a blog post used to have a URL like this http://mydomain.com/?p=1354.

The latest versions use "pretty" URLs by default in the "date+name" format, e.g. http://mydomain.com/2016/02/28/sample-post/.

While this is clearly an improvement, you might want to consider taking the date off your URLs. In this case, your older posts with great and still useful content don't shout at users "hey, the information here is as old as your grandma".

In order to adjust URL settings, go to Settings > Permalinks in your Admin panel.

If you need a comprehensive long-read guide on permalinks, have a look at this WordPress help article.

Note: In order to enable pretty URLs, WordPress should have write access to the .htaccess file, if you run your WordPress website on an Apache web server (most likely this is the case).



WordPress does not create a physical, permanent robots.txt file on the server. The CMS generates it on the fly, when a client requests it via http://mydomain.com/robots.txt. However, if you manually create a robots.txt file in the WordPress root directory, it will override the default settings.

If you stick with a dynamically generated robots.txt file, you have two options to manage it:

  • Use WordPress plugin like Multipart robots.txt editor. The plugin lets you include the following records in robots.txt: WordPress core records (it will include the /wp-admin folder), plugin and theme generated records, the list of ‘bad bots' (maintained by the plugin developers), and your custom records.
  • Edit the do_robots() function in /wp-includes/functions.php and customize it up to your requirements using the $output variable. See the code below.
function do_robots() {
	header( 'Content-Type: text/plain; charset=utf-8' );

	* Fires when displaying the robots.txt file.
	* @since 2.1.0
	do_action( 'do_robotstxt' );

	$output = "User-agent: *\n";
	$public = get_option( 'blog_public' );
	if ( '0' == $public ) {
	$output .= "Disallow: /\n";
	} else {
	$site_url = parse_url( site_url() );
	$path = ( !empty( $site_url['path'] ) ) ? $site_url['path'] : '';
	$output .= "Disallow: $path/wp-admin/\n";
	$output .= "Allow: $path/wp-admin/admin-ajax.php\n";

	* Filter the robots.txt output.
	* @since 3.0.0
	* @param string $output Robots.txt output.
	* @param bool   $public Whether the site is considered "public".
	echo apply_filters( 'robots_txt', $output, $public );

In most cases, you wouldn't need to make changes to robots.txt often, so it's more reasonable to use a static robots.txt file. This way you'll be able to easily access it via FTP anytime to make changes. What's more, you don't have to install additional plugins. You can use WebSite Auditor to quickly generate a robots.txt file.

WebSite Auditor how-to:

1. Open your WebSite Auditor project and click on the Site Structure tab in the left-hand sidebar, then click on Pages.

2. On the next screen click on the Robots.txt button to open the robots.txt creation wizard.

The wizard allows to fetch your current robots.txt file, create a new one, and add, edit, remove, or test the rules.

3. At the next step, the software will prompt you to choose whether you'd like to save the file or upload it to your site right away.



In 2014, Google added HTTPS to the list of ranking factors. It's not among the top important ranking signals, but going HTTPS may still give you a slight ranking boost.

Note: If you are starting a new project, it’s wise to implement HTTPS from day one. However, if you've made up your mind to move your website from HTTP to HTTPS, I highly recommend reading this HTTPS-migration case study. It is packed with valuable tips and instructions for a smooth migration.

Here's how you can set up HTTPS on your WordPress site.

  • 1. Get a dedicated IP address for your website.
  • 2. Obtain SSL certificate.
  • 3. Configure your web server to use the SSL certificate.
  • 4. The easiest part: go to Settings > General in the WordPress Admin panel. In the WordPress Address (URL) and Site Address (URL) fields, fill in your website home page URL with https in it.

  • 5. Test the https setup with this tool by SSL labs.

Note: if you need to set up the CMS to serve www or non-www, don't forget to do it right now. Just prefix the domain name with www if necessary.

WebSite Auditor how-to:

WebSite Auditor can easily help you diagnose and fix issues with HTTPS and www/non-www. The tool will collect all the necessary information as soon as you create your WebSite Auditor project:


XML sitemap

WordPress doesn't generate XML sitemaps out of the box. You may use one of the plugins to add this functionality. Google XML Sitemaps is probably the most widely used and reliable solution. When choosing an XML generator plugin, make sure it lets you do the following things:

  • Include/exclude user-defined URLs
  • Include/exclude WordPress taxonomies
  • Set crawling priority
  • Change crawling frequency.

Once installed and activated, Google XML Sitemaps automatically generates the sitemap and notifies the search engines about it. The default plugin settings will meet the requirements of most users. The plugin generates the sitemap on the fly, when a client requests it, so there is no physical XML file on the server.

Note: If your website is updated rarely, it's better to create a physical, permanent XML sitemap file, and upload it to the WordPress root directory. This will reduce the server load.

WebSite Auditor how-to:

You can use WebSite Auditor to create your sitemap.

  • 1. Open your WebSite Auditor project and click on the Site Structure tab in the left-hand sidebar, then click on Pages.

  • 2. On the next screen click on the Sitemap button to create a sitemap.

  • 3. Now you can select which pages to include in the sitemap, set their change frequency, priority, and modification date. Unlike most plugins, WebSite Auditor lets you exclude pages blocked from indexing by robots.txt or Robots tags from your sitemap.

  • 4. Select if you'd like to save the sitemap on your computer or upload it to the server.

Site speed

Site speed is one of the most important "technical" ranking factors. You should make every effort to improve your site's load time. There are a few easy solutions to help you improve your WordPress website's speed.

  • 1. Do not get obsessed with plugins. Yes, they do extend the functionality of your website, but they slow the site down, too. Install only those plugins that provide real value. Scrutinize the plugins before installing them to the production website, and test website speed with and without them.
  • 2. Clean up your WordPress theme from unnecessary data base calls, functions, and Java scripts. E.g. you might substitute this function call <?php header_image(); ?> with a static link to your header image, if it's not supposed to change often.
  • 3. Install a caching plugin. The plugins of this kind create static HTML versions of the dynamic pages and return them when requested by a client. This significantly reduces the server load and consequently speeds the website up. There are two leading caching plugins available- W3 Total Cache and WP Super Cache. W3 Total Cache is very customizable and feature-rich, but you'll need to have a clear understanding of web technologies to unlock its full potential. On the contrary, WP Super Cache is as easy as pie and designed to meet the typical requirements of a non-techie user - you just switch it on and it works.
WebSite Auditor how-to:

WebSite Auditor analyzes the page speed factors and comes up with suggestions on how to speed the website up. It analyzes pages against the same factors that make up a good page speed according to Google.

  • 1. In WebSite Auditor, go to Content Analysis > Page Audit in the left-hand sidebar.
  • 2. Add a page to analyze. Click Add Page and follow the instructions.

  • 3. Click on the Technical Factors tab. Among other SEO factors, WebSite Auditor will analyze technical factors that can impact the page speed. If you click on any of the factors, you will get detailed recommendations in the right-hand side panel.

Broken Links

Checking for broken links is boring; fixing them is even more boring! If you hate this task as much as I do, give the Broken Link Checker plugin a try. It automatically checks your website for broken links (the plugin checks not only posts or pages but comments as well). It then can send email notifications and log the results of the check. All the broken links are listed in the spreadsheet. You can then fix them or edit if necessary on one handy screen.

WebSite Auditor how-to:

When you initially create a project in WebSite Auditor, the software automatically checks your whole website for broken links. You can see the list of broken links (if any) in the Site Structure module by simply clicking on Broken links. The list will be displayed in the right-hand side panel. You can see the page where the broken link is located, as well as the link's anchor text and URL. This info is enough to quickly locate and fix the broken links.


Schema Markup

Schema markup is a special data format that is used to convert the data into the structured data. The term "structured data" stands for the meaningful information. It contains facts, concepts, and describes the relationship between them.

Why should you care about the structured data? In a nutshell, the search engines and Google in particular always try to improve the search experience. As the result, Google's search result pages are "enhanced" with a lot of additional information, including recipes, flight information, rating stars, etc. The snippets with enhancements normally have higher click-through-rate and get more traffic than plain snippets. These enhancements or content type features appear in search only if Google understands the data on the source websites. Unfortunately, search engines are not yet smart enough to fully understand the content of the pages like humans do. It is your job to help them, especially, if you want to get more exposure in search.

There is the Schema Wordpress plugin that adds essential mark up to your blog. No coding skills are required. It adds Article schema to each blog post in JSON-LD (the syntax that is recommended by Google). Optionally, you can include Breadcrumbs, Comments, Audio-/Video-object schemas, as well as the information about your organization and authors.

WebSite Auditor how-to:

WebSite Auditor lets you detect the pages that don't have structured data markup. The Structured Data Markup column is disabled by default. In order to enable it, click on Site Structure > Pages, click on Customize Columns icon and check Structured Data Markup box. You can now verify, if all the important pages contain the markup.


AMP Pages

AMP stands for Accelerated Mobile Pages. As the name suggests, this technology aims to speed up the load of the webpages on the mobile devices. What makes the AMP pages fast? AMP technology strips a lot of HTML tags, JavaScript and CSS; plus, it leverages server-side caching. AMP pages look lean and lack the fancy styling of ordinary webpages.

AMP is not likely to have the direct effect on the website rankings, it's more about user experience and load speed.

As a Wordpress user, you can get ready for AMP with no stress. Wordpress comes with a default AMP plugin. The only thing you should care about is the compatibility with other plugins. In particular, make sure that all SEO meta-data is correctly passed from ordinary pages to the AMP pages. This should be solved on a case-by-case basis, and I have no universal recipe for you.


Free Themes

Due to security considerations, I strongly discourage you from installing free themes that don't come from the official WordPress directory. A "free" theme from untrusted sources may contain malicious or unwanted pieces of code.

Very often "free" themes have some outgoing links included in the footer or sidebar. These links typically have commercial anchors and they have nothing to do with the developer of the theme. The license agreement of such themes usually prohibits you from removing the links. It's up to you to decide how to deal with them, but at least don't forget to add a "nofollow" tag.

As a rule of thumb, scan the theme files for the obfuscated pieces of code (it may look like this: aGVsbG8gcGVvcGxlIHRoaXMgYW4gZW5jb2RlZCBzdHJpbmc= ); if you come across such strings, consider another theme.

Also, pay attention to the usage of third-party JavaScript in the theme. Check out the theme's functions.php file. It may contain some undesirable code too. Remember: you get what you pay for ;)


Site structure

When you mold the structure of your WordPress website, you may adopt either of the two approaches or their combination:

  • 1. Use Page as the core element. This lets you set a parent-child relationship among the pages to arrange your content into groups.

    This structure is handy if you're building a simple website for your business. The logical hierarchical arrangement of Pages will then allow you to insert breadcrumbs, nested menus, etc. easier.


As you can see above, this structure is purely hierarchical: there is only one primary way, or path, to any given page.

  • 2. Use Post as the core element. The content is then structured using Category and/or Tag taxonomies. Unlike Tags, Categories are hierarchical.

    This is the best choice for blogs, product catalogues, directories, and similar websites. Category or Tag pages list all the posts that belong to them, while Page only displays its content.


Pagination and crawling

Blog Category and Tag pages normally list multiple posts and consist of a series of pages. By default, the navigation across the series of pages is implemented with two links: "Newer posts" and "Older posts". However, this solution is not always optimal for a number of reasons:

  • It's not user friendly (What if I want to skip to page No. 9 in the series?)
  • It's harder to reach the paginated content for the search engines' crawlers.

WP-PageNavi fixes these issues. The plugin replaces the standard pagination with "Previous 1 – 2 – 3 – 4 – … Next" kind.



By design, comments enable visitors to contribute to your blog and communicate with you and each other. In reality, comments generate loads of spam.

Enable comments only if you feel you have enough resources to moderate them and follow up on them, otherwise the comments section will inevitably turn into a spam bin. The few steps below will make your life easier.

  • 1. Automatically close comments after a certain period of time since the post was published. In the WordPress Admin Panel, go to Settings > Discussion. Check the Automatically close comments on articles older than box and enter the number of days you'd like comments to be open for.
  • 2. Activate the Akismet plugin. Akismet is included in WordPress by default. You should visit the Akismet website and get the API key to use the plugin. Akismet is free for personal use. If you run a commercial website, you can get the paid API key. Keep in mind, it does make mistakes and you'd still need to review the comments.
  • 3. Give WP-SpamShield Anti-Spam a try. In this scenario, the user wanting to leave a comment would need JavaScript and cookies to be enabled in their browser. WP-SpamShield Anti-Spam also sets the minimal comment length and commenting speed. As a result, it stops primitive spam bots pretty well.

Duplicate content

External duplication:

Content of a WordPress site is normally available in RSS format. This makes your posts easy to scrape and re-publish for blogs and platforms that live off scraping content. Google's pretty strict about content uniqueness and may not be able to tell between the original and the scraped version; so it's in your best interest to make your website harder to scrape.

In the WordPress Admin Panel, go to Settings > Reading. Select For each article in a feed, show: Summary. You can also reduce the number of items shown in syndication feeds.

Internal duplication:

By default, WordPress generates a lot of duplicate content. It has Archive, Author, Category, and Tag pages, and there may be hundreds of tags and categories. The same page may belong to all of these groups, and be listed dozens of times across the website. Here's how to deal with the problem.

  • 1. Use the minimal required number of categories and tags, and develop guidelines for the website contributors on how to use them. For example, consider if it is useful to populate the sidebar of your blog with Calendar, Categories, and Tag Cloud simultaneously? Will it provide value to the user? Will the user benefit if there are 42 tags attached to a blog post?
  • 2. Use the canonical tag. There are several plugins to help you do this, e.g. Yoast SEO.
  • 3. Implement rel=next/previous tags for paginated content.
  • 4. Create an excerpt for each post you publish. It will appear both in RSS feeds and on Category, Tag, Author, and Archive pages (depending on the theme settings). As a result, your original content will stay on the page where it belongs, and the excerpt will be duplicated on other pages.
    If the excerpt doesn't appear on Archive or Category pages in your theme by default, you'd have to create custom page templates. The detailed the_excerpt() function reference and the full guide on WordPress Templates will come in handy if you are going to cope with this task yourself.
  • 5. Create meaningful descriptions for tags and categories. Thus, each category or tag page will have unique content above the list of posts or excerpts.
WebSite Auditor how-to:

As a starting point for your duplicate content check, you may identify the pages with duplicate titles or meta descriptions. In WebSite Auditor's Site Structure > Site Audit module, scroll down to the On-page section. The software will warn you about any title or meta description duplication across your site and help you fix it.


Content optimization

If you are serious about on-page optimization, you'll need to consider up to 20 separate SEO factors to optimize on each landing page. Thus, optimizing larger websites without using professional tools gets a little daunting.

As you may guess, there are WordPress plugins to help you with on-page optimization. My tool of choice is the Yoast SEO plugin. It's very versatile. Above all, I like its on-page optimization features.

For each page, you can set a focus keyword. The plugin performs brief content analysis based on this keyword and suggests the improvements to make (if necessary). It analyzes such basic factors as content length, keyword count in title, description and the <h> tags.

Each page gets a color-coded optimization score, so you can easily keep track of your on-page optimization activities.

Yoast SEO is helpful with basic tasks. However, if you want to get deeper into details and not to miss a single tweak that can improve your rankings, do use WebSite Auditor.

WebSite Auditor how-to:
  • 1. Determine the "as is state".
    Open your WebSite Auditor project and navigate to the Content Analysis module. Click on Add Page. The dialogue window will pop up. Select a page you want to analyze. Enter the target keywords and select a search engine where you aim to improve your rankings.

Along with your page, WebSite Auditor will scan the websites that rank in top 10 for the keywords you entered. The tool will then suggest how you can improve your pages based on the information collected from the best-performing pages of your competitors.

  • 2. Go through the list of suggested improvements.
    In the left-hand upper corner, there is a page optimization rate gauge. Whenever you make an improvement to your content, feel free to come back to WebSite Auditor's Content Analysis module and click the Update button to see how each change affects the overall optimization rate of a page.

  • 3. Implement the changes, grab a coffee and watch your rankings improve over time.

Over to you

That's it. You are all set for a good launch of your WordPress based website. As always, I'd be happy to answer your questions. Comment on!