Key takeaways
- Good technical SEO services for WordPress websites start with the fixes that can switch off search traffic: indexing settings, robots.txt, sitemaps and redirects.
- WordPress creates duplicate and thin URLs on its own: attachment pages, tag and date archives, search results and comment pages. Decide what each one should do.
- WooCommerce filter and sort URLs can waste crawling. Google recommends blocking them in robots.txt if you don’t need them indexed.
- Speed work comes after indexing work. Don’t lazy-load the main image at the top of the page.
- Duplicate structured data and title templates are worth fixing, but last.
Technical SEO services for WordPress websites should follow a priority order, and most problems I find on WordPress sites are not exotic. They come from defaults, plugins that overlap and settings nobody has opened since launch. The difficulty is knowing which fix matters most on your site, because a list of 80 audit warnings is no help to a developer with one free afternoon.
I have worked in SEO and digital marketing for more than 16 years, much of it on WordPress, and this is the order I work in. Fixes are ranked by impact and effort: the ones that can stop Google indexing your pages come first, clean-up that rarely moves rankings comes last. Each fix says where to look in WordPress.
If you want to know what a WordPress engagement should include overall, I covered what WordPress SEO services should include separately. This article is the technical list itself.
Technical SEO services for WordPress websites: the 15 fixes ranked
| # | Fix | Impact | Effort | Where in WordPress |
|---|---|---|---|---|
| 1 | Search engine visibility and stray noindex | Very high | Low | Settings, Reading; SEO plugin |
| 2 | robots.txt that blocks too much | Very high | Low | Physical file in the site root |
| 3 | One sitemap, listing only indexable URLs | High | Low | Core or SEO plugin sitemap |
| 4 | One canonical host and protocol | High | Low | Settings, General; server redirects |
| 5 | Redirect chains and stale redirect rules | High | Medium | Redirect plugin, server config |
| 6 | Attachment pages | Medium | Low | Option or SEO plugin setting |
| 7 | Thin tag, date and author archives | Medium | Low | SEO plugin settings |
| 8 | Internal search result pages | Medium | Low | Theme, SEO plugin |
| 9 | WooCommerce filter and sort URLs | High (shops) | Medium | robots.txt, filter plugin |
| 10 | Comment pagination URLs | Low | Low | Settings, Discussion |
| 11 | Lazy-loaded main image | Medium | Low | Theme, performance plugin |
| 12 | Plugin and script weight | Medium | Medium to high | Plugins, page builder |
| 13 | Page caching and server response | Medium | Medium | Hosting, caching plugin |
| 14 | Duplicate structured data | Low | Low | Theme and SEO plugin output |
| 15 | Title and heading templates | Low | Medium | Theme templates |
The ratings are my judgement from audit work, not measurements. On a shop, fix 9 moves up the list; on a five-page brochure site it disappears.
Tier 1: fixes that can switch off search traffic
WordPress.org’s Reading Settings documentation explains that ticking “Discourage search engines from indexing this site” has, since version 5.3, added a robots meta tag with noindex,nofollow to your pages. It adds that “it is up to search engines to honor your request”. I covered how this box survives launches in why WordPress and SEO services work best together, so here is the short version: check it, then check that your SEO plugin isn’t adding noindex to page types you want in Google.
2. robots.txt that blocks too much
The same documentation notes that the setting’s robots.txt behaviour only works when WordPress is installed in the site root and no robots.txt file exists. In other words, a physical file in the root takes over, and whatever is in it is what crawlers read. I still find files left over from development, or ones that block /wp-content/, which is where the theme’s stylesheets, scripts and media library live. Read the file line by line. It should be short.
3. One sitemap, and only indexable URLs in it
Since WordPress 5.5, core exposes a sitemap index at /wp-sitemap.xml covering public post types, taxonomies, author archives and the homepage, with up to 2,000 entries per sitemap by default. Core sitemaps are disabled when the site discourages search engines. Most SEO plugins replace the core sitemap with their own. The problem I see is the leftover: Search Console has both submitted, or the sitemap lists URLs you have set to noindex or redirected. Submit one, and make sure every URL in it returns 200 and is meant to be indexed.
4. One canonical host and protocol
http and https, www and non-www, with and without a trailing slash: each pair should collapse to one version with a single redirect. Check that the WordPress Address and Site Address in Settings, General match the version you want, and that the server redirects the others.
5. Redirect chains and stale redirect rules
Every permalink change, slug edit and redesign adds redirects. Over the years they stack into chains (A to B to C) and loops, often spread across a plugin, .htaccess and the host’s panel at once. Pick one place to manage redirects, collapse chains so each old URL goes straight to its final destination, and update internal links to point at the final URL directly.
Tier 2: URLs WordPress creates on its own
6. Attachment pages
Every uploaded image can have its own attachment page: a URL with little more than the image on it. WordPress changed this in 6.4. Its developer note on attachment pages says new sites have the option wp_attachment_pages_enabled set to 0, which redirects attachment pages to the file itself, while “On existing sites, the option is set to 1 on upgrade, so that attachment pages continue to work as is.” So an older site still has them unless someone switched them off. Turn them off, or use your SEO plugin’s redirect setting.
Tags added freely create hundreds of archives with one or two posts each. Date archives repeat the blog in another order. On a single-author blog, the author archive is a copy of the blog index. Keep the archives that work as real landing pages, noindex or disable the rest, and stop creating one-use tags.
8. Internal search result pages
WordPress search results live at URLs with ?s= in them. They are useful for visitors and useless in Google. Make sure they carry noindex and that nothing on the site links to them as if they were normal pages.
9. WooCommerce filter and sort URLs
Layered filters for colour, size and price, plus sort orders, can produce a near-endless set of URLs. Google’s guide to managing crawling of faceted navigation says crawlers “will typically access a very large number of faceted navigation URLs” before recognising that many are useless, and that this leaves less time for new, useful pages.
If you don’t need filter pages indexed, Google recommends disallowing them in robots.txt, or using URL fragments, which “will have no impact on crawling”. If some filtered pages deserve to rank (a category plus one popular attribute, for example), give those a proper page and keep the rest out of crawling. Google also says to use the standard & separator and return a 404 when a filter combination has no results.
Test before you block
Before adding a robots.txt rule for filter parameters, list ten real filter URLs and ten real product and category URLs, and check the rule against all twenty. A rule that is one character too broad can block your categories.
10. Comment pagination URLs
If “Break comments into pages” is ticked in Settings, Discussion, a popular post gets extra URLs for each page of comments. On most sites I untick it. If comments are a real part of the content, keep it and check those pages point their canonical at a sensible URL.
Tier 3: speed work that comes after indexing
Speed matters, but in my priority order it never beats a page that can’t be indexed. These are the three WordPress-specific fixes I make most.
11. Don’t lazy-load the main image
WordPress added native lazy loading for images in version 5.5. web.dev’s analysis of lazy loading and LCP found that the WordPress technique “very clearly helps reduce image bytes at the cost of a delayed LCP”, and that sites “may benefit from more eagerly loading images above the fold.” Check your hero or featured image: if a theme, page builder or performance plugin adds loading=”lazy” to it, remove it for that image.
12. Plugin and script weight
The usual pattern is a form plugin, slider, chat widget and page builder each loading their scripts on every page, including the ones that don’t use them. Remove what you don’t use, load the rest only where it is needed, and test the heaviest templates (home, category, product) rather than a simple post.
13. Page caching and server response
Without page caching, WordPress builds every page from the database on each request. A caching plugin or host-level cache and a decent hosting plan fix most slow server responses. Confirm the cache isn’t serving a logged-in or staging version to visitors.
Tier 4: clean-up worth doing last
14. Duplicate structured data
Themes and SEO plugins can both output schema markup, so a page ends up describing itself twice, sometimes with different names or dates. Pick one source (usually the SEO plugin), switch off the other and check the output. What a plugin like Yoast does and doesn’t handle is covered in what Yoast SEO does for your rankings.
15. Title and heading templates
Common template issues: every archive page shares the same title, page 2 of a category repeats page 1’s title and description, or the logo is wrapped in an H1 on every page so the real heading is second. These rarely cost rankings on their own. Fix them when the rest is done.
On WordPress, the expensive technical problems are almost always settings and leftovers, not code.
How I work through the list
I start with a crawl and Search Console, mark each of the fifteen as fine, needs work or not relevant, and hand your developer a ranked list with the reason for each item. Tier 1 is usually done in a day. Tiers 2 and 3 depend on the size of the site and how many plugins are involved.
Before you hire anyone for WordPress technical SEO
- Ask for a ranked list, not a raw tool export.
- Ask which items need a developer and which are settings you can change yourself.
- Ask how each fix will be checked after it goes live.
- Keep admin access in your own name; give the SEO a separate account.
If you want the list worked through for your site, that is what our WordPress SEO audit does. For sites beyond WordPress, or where the problems are in hosting and rendering, see our technical SEO services. I charge by the hour, so a small site with a short list pays for a short job.
FAQ
What are reliable technical SEO services for WordPress sites?
Reliable services give you a ranked list of fixes with the reason for each, say which ones your developer must do, and check each fix after it goes live. They start with indexing and crawling issues before speed or markup. Be wary of anyone who sends a tool’s export with hundreds of warnings and no priorities.
What is WordPress technical SEO?
It is the work of making sure search engines can crawl, index and understand a WordPress site: settings, robots.txt, sitemaps, redirects, duplicate URLs WordPress generates, performance and structured data. It is different from content work, which decides what the pages say.
Do I need a plugin for WordPress sitemaps?
No. WordPress has created a sitemap at /wp-sitemap.xml since version 5.5. Most SEO plugins replace it with their own, which is fine, as long as only one is submitted to Search Console and it lists only pages you want indexed.
Should I turn off WordPress attachment pages?
On most sites, yes. New sites since WordPress 6.4 redirect attachment pages to the file by default, but sites that existed before the upgrade keep them unless someone changes the setting. Your SEO plugin can usually redirect them for you.
How long does a WordPress technical SEO fix list take?
Tier 1 fixes are usually settings and a few files, so they are quick. Archive, filter and speed work takes longer and depends on the site’s size, theme and plugins. A ranked list lets you stop at the point where the remaining items are no longer worth the hours.
If your WordPress site has an audit full of warnings and you don't know which fix comes first, send it to me and I will put it in order.
Eugen Platon · SEO consultant with 16+ years in SEO and digital marketing · free 10-minute first call