In the year 2014 my article “WordPress SEO, basic optimization” was published in the WP Magazine.
Since that time WordPress updated and I decided to create an article in my blog, the content of which will be updated over time, following the trend of SEO and WordPress updates.
In this “Basic SEO for WordPress” article there are described settings of the CMS itself, plugins, and other hints that will help the site owner regardless of the chosen strategy of promotion in the future to get a tangible SEO effect. I would say – it’s basics, which you need to implement in any case.
By default (Settings → Permalinks) WordPress creates URLs using a digital ID, for example:
yourdomain.com/?p=123. Concisely, nutshell, unfortunately not informative.
Do not scoff on possible visitors from search engines, and on search engines themselves — specify links in understandable words, increase the weight of those words on the page. I personally prefer to use the following combination:
Thus a clear logical structure is dictated, it is easier for search engines to identify meaningful sections on the site, as well as the user can optionally enter the section by removing characters to the nearest slash.
If you need additional customization – try to check this list of possible structure tags.
Do not forget to define the URL of your website (Settings → General) — with or without the www, http, or https protocol:
After you save changes – check the redirects by typing the address of the homepage in different variations. If the redirection does not work – this may force search engines work with your website as with a pair of duplicates, and common weight of inbound links can be dispelled. For example, instead of 100 links, leading to page
http://www.yoursite.com/page/ you only get 60 and 40 others will lead to the duplicate at
Canonical links are links that are not visible to users, but are working for search engines similarly to 301 redirect. With their help, you can specify the page-source for the search engines in case if the need arises to use the same content multiple times in different locations.
Several possible cases where WordPress can create multiple addresses for one page:
- Source page:
- The same page, but with an anchor for response to comment:
- The same page, but with access via ID number:
For users these pages will look exactly the same, but for search engines – three addresses means three different pages. This means that, as in the case of duplicate domains, referential mass may be scattered, and, besides, the pages will be judged as duplicates at the same domain, what search engines is not too fond of.
In this case, simply adding this code
<link rel="canonical" href="http://somesite.com/page/"> into the
<head></head> section will solve the problem of duplicate records, since canonical link will redirect search engines robots to the source page.
You can either implement such links manually into your theme, or you can use one of the SEO-plugins that allow you to resolve the issue automatically. I personally prefer Yoast SEO.
Taxonomy in the context of WordPress SEO
Taxonomy is, in general, teaching about the principles and practice of classification and systematization.
WordPress by default uses two kinds of custom taxonomies: categories (vertical hierarchy) and tags (horizontal hierarchy).
How to use them? It is simple. Vertical hierarchy is used for clear systematization of the structure so that search engines would be able to understand the site structure easily (where sections are, where single pages, etc.), as well as users would be able to understand easily and logically – how to move through menus and “breadcrumbs”.
Horizontal hierarchy is used primarily to speed up retrieval of information, for both: humans and robots. “Tag cloud” will allow immediately go to the needed topic by couple of clicks, without plunging into the tree of vertical hierarchy. Apply tags to every post and page, where it seems justified, but don’t overdo it. Up to 10 still looks normal, but more than 30 already looks spammy.
robots.txt is a text file, located by default in the root of the website and recommends robots of search engines to index or not to index certain parts of the site.
WordPress by default does not contain this file on the server. When requesting this address
http://yoursite.com/robots.txt it is created virtually, based on CMS settings, which can give not too wide choice of “allow bots to index your website” and “close the website indexation totally”.
However, if you need a real file in the root of the website, where for some reason you want to exclude from the search any files or pages – create it manually (virtual file automatically will disappear), or use a plugin that will change the virtual file, such as: DL Robots.txt (RU).
sitemap.xml file – list that stores addresses of pages of your website that you would like to pass to the search engines for indexing. Format, the maximum number of pages and the maximum amount of this file vary slightly from search engine to search engine, but generally conform to standard Sitemap Protocol.
WordPress by default does not contain sitemap.xml file. You can solve this problem in the following ways:
- through the plugin (again, I prefer Yoast SEO, though there are other plugins in repository), configure and generate automatically;
- use any online service (just type in a search engine
XML Sitemap), generate on request and manually add to your server;
- write the output yourself using native functions of WordPress.
Snippet in the SERP
From all well-known fields which have a direct impact on the snippet in the SERP, WordPress only supports Title by default (function
wp_title ()), which automatically displays the name of the post or page.
If you want more (add the Description meta tag, customize the Title tag, add Google + Publisher Link, Twitter Cards and Open Graph) – you have to use plugins (same Yoast SEO) or custom fields (wonderful plugin to work with them – Advanced Custom Fields) and output them directly into the code of theme of the website.
Separately it is necessary to tell about the site icon or favicon.
Starting with WordPress version 4.3 it by default includes a function for adding a favicon (Appearance → Customize → Site Identity). However, if your logo will be placed on a transparent background – I advise to use specialized plugin (like Favicon by RealFaviconGenerator), or write code manually, because different systems and devices may display transparency of icons in different ways.
Semantic markup – is a page markup with use of additional tags and attributes that help search engines robots to process the information contained in the content.
I’ve already mentioned, for example, Open Graph Protocol – it is one of the types of semantic markup, which was developed by Facebook. You are able to see the result of it each time you publish some link in you Facebook post: some picture from the page appear under the post, some title, description, maybe video. This means that Facebook robot checked link, that you have inserted into your publication, read the Open Graph tags (which picture to take, what title to add, and so forth), if they were there, and uploaded it all into your publication.
Open Graph is used not only by Facebook but also by other social networks, so do not ignore it.
Schema.org is allocated by that it is officially supported by the leading search engines on the planet, respectively – the more you use it to describe your content, the more benefits it will bring to you in SERP. However, that is the problem with Schema.org – it is very extensive and automatically can be added to the site only in a very small volume. Accordingly in WordPress by default it does not supported.
But – less is better than nothing, and therefore I strongly advise to take a look at the Add Meta Tags plugin. Important – after the installation do not forget to disable the Open Graph in fields of the plugin and other tags that you already use on the website, for example through Yoast SEO, otherwise tags might be duplicated, and not always with the same content.
Firstly, you need to remember that WordPress is not responsible for your website’s code in full. Mostly it depends on the theme you are using.
Warned – hence, armed:
- Check out how H1 is generated in your pages template, for example. If it is already displayed by default with a copy of the title inside – do not include the H1 into content itself. This header (H1) must be unique on the page;
- Check – if the category displays the post entries each with its own H1 heading, separated by
<section></section>tags and with
<!DOCTYPE html>on the page, i.e. the browser will work with HTML5, which allows the use of multiple H1 headers in such cases;
- Check for hidden code at the footer of the website or at meta tags. You will not like it, especially at first, if you’ll mess your website with external links to irrelevant content.
Beyond that, appropriate standard recommendations for all sites – check code validation, fill the
alt attributes for all images and so on.
Speed up indexation
WordPress by default provides the ability to send pings (messages) to different services, notifying them that you have a new article (Settings → Writing → Update Services).
I would not recommend spamming everyone and everything, banal because sooner or later you will start to fall into the black sheets, and in addition, each ping creates some load on the server.
However, in addition to the default WordPress Ping-O-Matic service (
http://rpc.pingomatic.com/) I would recommend at least add several other resources:
As well as a few more by analogy, if the site you have is multilingual (for example – with Russian language):
- and so on.
A few tips in addition to aforesaid:
- Do not use full content of the post in the category loop. Use the function
the_content(). Thus, you will reduce the number of duplicated content at your website and will make it easy for users to find the necessary material, because that will accelerate the scrolling;
- Use the Excerpt field. This will allow you to display some interesting text about the article, not just the first few lines of text entry with an ellipsis at the end and some words about “read more”. Also – it’s good tool of saving you from additional duplicate content;
- Exclude archives by date from search engine indexing. Such pages do not carry any special thematic load, but completely duplicate existing categories;
- Exclude site search results page from search engine indexing. Nothing useful there, except for duplication of existing entries and the SERPs.
- Do not exclude tag pages from search engine indexing like this one:
http://yoursite.com/tag/something/. In contrast to searche results pages and archives by date – this type of page carries useful thematic load that you identified yourself. Regarding duplicate content, Google promised not to prosecute such things if all will be done in “white” way (tags just fall into this category), without malice.