# WordPress SEO: what the CMS does, what the plugin does, what you do

You run a product site on WordPress. Here is what the CMS already does for SEO, what the plugin must do, and what you need to change. Follow the checklist and ship pages that index, look good in search and load fast.

Updated 2026-09-14 · Source: https://porteur.ai/guides/wordpress-seo

## What WordPress core already handles

WordPress ships an XML sitemap since version 5.5. You do not need a plugin for the basic file to exist.

Set permalinks to post name. Go to Settings, Permalinks, choose “Post name”. This gives clean URLs like /pricing and /blog/your-article/ instead of query strings.

Categories and tags create archive pages. On a small site these are thin unless you curate them. Plan to noindex them with a plugin, or curate them into real hubs.

The media library creates attachment pages for each file. These dilute your index. Redirect them to the file URL or to the parent post using a plugin setting.

robots.txt in WordPress is virtual. You edit it through a plugin, not via FTP, unless your host maps a file over it. Check your plugin’s robots editor if you need rules.

## What the SEO plugin adds

You need a plugin for titles, meta descriptions, canonicals, robots meta, breadcrumbs and structured data. Yoast SEO, Rank Math, All in One SEO and SEOPress all do this class of work. Pick one, do not stack them.

- Titles and descriptions: per page and per post, with templates for archives and the homepage
- Canonical tags: set a self canonical by default and allow custom canonicals
- Robots meta: index or noindex, follow or nofollow, and advanced flags per page
- Breadcrumbs: output a breadcrumb trail and the matching structured data
- Structured data: sitewide Organisation, BreadcrumbList and per content type presets
- Sitemaps: some plugins replace the core sitemap with a richer one

Install one plugin. Run its setup wizard. Set global templates first, then fix priority pages by hand. Example: set a template for posts, then hand craft /pricing and /about/ so they read well on search.

> Rule: only one active SEO plugin that writes titles, canonicals or sitemaps. Two will conflict and produce duplicate tags.

## Permalinks, archives and media attachments to control

1. **Use the post name structure** Settings, Permalinks, select “Post name”. Save. Check a few URLs load at /slug/ without extra folders you do not need.
2. **Decide on category and tag archives** If you have five posts total, noindex these archives. In the plugin, set category and tag archives to noindex. If you run a curated hub, keep index and make each archive useful.
3. **Handle date and author archives** On small sites, set date and author archives to noindex or disable them. This removes thin pages like /2024/ and /author/admin/.
4. **Redirect attachment pages** In the plugin, enable the setting that redirects attachment pages to the file URL or to the parent post. Test an attachment URL returns the image, not a thin page.
5. **Pick a trailing slash policy** Use either trailing slash or none. Do not mix. WordPress defaults to slashes. Keep it, and let your host redirect the other form to your chosen one.

A fixed site has /guides/getting-started not /index.php?p=ID. /blog/tag/ai is either a curated hub with intros and links, or it is noindexed. /wp-content/uploads/2026/logo.png loads, and /logo-attachment/ is gone.

## Sitemaps and robots.txt on WordPress

The core sitemap lives at /wp-sitemap.xml. Some plugins replace it with /sitemap_index.xml and child sitemaps. Either form is fine if it lists only canonical URLs you want indexed.

1. **Choose one sitemap source** Use the plugin sitemap if it gives you per post type control. Turn off duplicate sitemap features from other plugins and hosting layers.
2. **Exclude thin taxonomies** In the plugin, exclude categories, tags and formats from the sitemap if they are noindex or thin. Keep posts, pages, and key custom types.
3. **Point Search Console at the sitemap** Add the top sitemap URL in Search Console’s Sitemaps report. Watch the discovered URLs count and error list for mismatches.
4. **Edit robots.txt in the plugin** Use the plugin’s robots editor to keep it simple. Allow crawling. Do not block /wp-content/ or /wp-includes/ unless you know why. Link the sitemap URL at the end.

> Warning: do not noindex in robots.txt. robots.txt blocks crawling, it does not remove a page from the index once known. Use a noindex meta tag via the plugin.

## Titles and meta descriptions that earn clicks

Write titles that match the query and fit the page. Keep around 60 characters. The plugin shows a counter. Your goal is clarity over stuffing a keyword twice.

1. **Set a good homepage title** Example: “YourProduct, simple error tracking for Next.js”. Not your brand alone. Include the category term users search.
2. **Make key pages hand written** /pricing, /features, /docs/ should have hand written titles and descriptions. Templates are fine for posts, not for conversion pages.
3. **Use plugin variables where they help** Keep a template like “%title% | YourProduct” for posts, then override standouts. Avoid variables that add dates unless your content is news.
4. **Write a meta description once** Use it to sell the click in about 150 characters. Example for /pricing: “Transparent plans. Free for 5, annual discounts. Compare features at a glance.”

Check the search appearance after indexing. If Google rewrites the snippet, adjust your first heading and opening lines to match the query better. The page text still drives the snippet choice.

## Canonicals, noindex and breadcrumbs you control

Your plugin should output a self canonical on each indexable page. For duplicates, set a canonical to the source. Example: /blog/how-to-x?ref=nav should canonicalise to /blog/how-to-x.

- Use noindex for thin archives, paginated search results and demo pages
- Use canonical for same content under different URLs, not for junk pages
- Add breadcrumbs to templates, and enable their schema output in the plugin
- Avoid indexing internal site search pages like /?s=term

A fixed site shows a breadcrumb like Home > Guides > Getting started on each blog post. The trail links to real hubs, not empty tag pages. The canonical points to the clean URL without tracking params.

## Structured data for a product site on WordPress

Use JSON-LD through your plugin or a theme snippet. Add Organisation on the homepage, BreadcrumbList on all pages and Article on blog posts. For a product, pick Product or SoftwareApplication where it fits your offer.

1. **Set sitewide Organisation** Name, logo URL, sameAs profiles. Do this once in the plugin settings.
2. **Enable breadcrumbs schema** In the plugin, toggle breadcrumb schema. Output the visible breadcrumbs in your theme and match the JSON-LD structure.
3. **Choose Product vs SoftwareApplication** If you sell software, SoftwareApplication fits. If you sell a physical product, use Product. Do not mark every page as Product.
4. **Add FAQ only when the page has real Q&A** If a page has an FAQ block, add FAQPage JSON-LD. No Q&A content, no FAQ schema.

Test in Google’s Rich Results Test. Fix required fields. Example: /pricing with SoftwareApplication has name, description, operatingSystem and offers where relevant. Keep the schema aligned with the visible content.

## Speed on WordPress: theme, plugins, host and images

Core Web Vitals as of 2026: LCP good up to 2.5 s, CLS up to 0.1, INP up to 200 ms. Aim for good on your key pages at the 75th percentile in field data over 28 days.

- Pick a lean theme. Heavy page builders and animations slow LCP and INP
- Limit plugins. Audit and remove anything that adds scripts on every page
- Use your host’s caching. Add full-page caching and object caching if offered
- Optimise images. Use modern formats, proper sizes and lazy loading
- Serve static assets via a CDN if your host offers it

1. **Measure field and lab** Open PageSpeed Insights for /, /pricing and your top post. Note field data if present and the Lighthouse lab diagnostics. Fix what repeats across pages.
2. **Reduce LCP** Set a smaller hero image on / and /pricing. Preload the main font. Remove render blocking CSS and JS where your theme allows.
3. **Stabilise layout** Set width and height on images and embeds. Avoid layout shifts when a cookie bar or chat loads. Keep CLS under 0.1.
4. **Keep interactions quick** Defer non-critical scripts. Avoid big UI libraries if you do not need them. Keep INP around 200 ms on common actions.

A fixed /pricing loads in under 2.5 s on a mid-range phone. The plan cards do not jump. The buy buttons respond instantly. Your Lighthouse score will vary by run. Track the field trend in Search Console’s Core Web Vitals report.

## Yoast vs Rank Math vs others: which to pick

Yoast SEO, Rank Math, All in One SEO and SEOPress all cover titles, canonicals, robots, breadcrumbs, sitemaps and schema. Choose one based on your comfort and the UI you like. The core feature set overlaps for a small site.

| Need | What to look for | Any of the big four offers |
| --- | --- | --- |
| Simple setup and defaults | A guided wizard, sensible templates, on-off toggles for archives | Yes |
| Breadcrumbs output | A shortcode or PHP function and matching schema | Yes |
| Schema presets | Organisation, BreadcrumbList, Article, Product or SoftwareApplication | Yes |
| Sitemap control | Include or exclude post types and taxonomies | Yes |
| Robots editing | Per page robots and a robots.txt editor | Yes |

If you need one click toggles like “redirect attachment pages” or “disable date archives”, verify the exact setting exists in your chosen plugin. Check the plugin’s current docs if the menu moved after an update.

## A WordPress SEO checklist for a product site

- Permalinks set to post name
- One SEO plugin active, wizard completed
- Homepage, /pricing, /features, /contact with hand written titles and descriptions
- Blog post template uses H1 as the title and shows breadcrumbs
- Category, tag, date and author archives reviewed, noindexed if thin
- Attachment pages redirected to the file or parent post
- Core or plugin sitemap submitted, thin taxonomies excluded
- robots.txt allows crawling and lists the sitemap URL
- Canonical tags present and correct on all key pages
- Visible internal links from / and /features to /pricing and /guides/ where relevant
- JSON-LD present: Organisation, BreadcrumbList, Article on posts, SoftwareApplication or Product where it fits
- PageSpeed Insights checked for /, /pricing and your top post, obvious bloat removed
- Image sizes constrained, lazy loading on long posts
- Search Console verified and indexing checked for new pages

Work this list top to bottom on a staging copy if you can. Recheck the sitemap and Search Console after you change indexation or redirects.

## Worked example: fixing a small WordPress site

Start with yourproduct.com on a basic theme. It uses the default Day and name permalinks, thin tag archives and attachment pages. Speed is poor on mobile. Here is the before and after.

1. **Permalinks and archives** Switch to Post name. In the plugin, disable date and author archives, noindex tags, keep categories only for curated hubs.
2. **Attachment cleanup** Enable the “redirect attachment URLs” option. Test an attachment URL now loads the image file.
3. **Titles and snippets** Write a new homepage title: “YourProduct, API monitoring for SaaS teams”. Write a /pricing description that states seats and billing. Set a post template for the rest.
4. **Schema and breadcrumbs** Fill the Organisation fields with your brand, logo and social links. Enable breadcrumbs in the plugin, add the breadcrumb function to your theme’s single.php.
5. **Sitemap and robots** Submit /sitemap_index.xml in Search Console. robots.txt shows allow rules only and the sitemap line. Categories are in the sitemap, tags are not.
6. **Speed wins** Compress the hero image on /. Remove an unused slider plugin. Turn on host caching. Recheck PageSpeed Insights for LCP under 2.5 s on /pricing.

After, Google crawls fewer junk URLs, snippets read cleanly for /pricing and /guides/getting-started, and mobile users see a stable layout. Conversions improve because the page loads and the CTA does not jump.

## Questions

### Do I need an SEO plugin on WordPress?

Yes. Core covers the sitemap and permalinks. You need a plugin for titles, meta descriptions, canonical tags, robots meta, breadcrumbs and structured data. Pick one plugin, not several.

### Is WordPress outdated in 2026 for SEO?

No. WordPress remains fine for SEO if you keep themes lean, limit plugins and set archives and attachments correctly. The weak spots are self inflicted: bloat, duplicate pages and thin archives, not the CMS itself.

### Which is better, Yoast or Rank Math?

Both handle the essentials. Choose the UI you prefer and the settings you need, like attachment redirects or archive toggles. The key is to learn one plugin well and keep your setup simple.

### Can I do WordPress SEO myself?

You can. Set permalinks, install one SEO plugin, fix archives and attachments, write titles for key pages and measure speed. Use Search Console to check indexing and Core Web Vitals over 28 days.

### Should I noindex categories and tags?

If they are thin, yes. Noindex them and remove them from the sitemap. If you curate them as hubs, keep them indexable and useful with intros, links and unique copy.

### Where is my sitemap on WordPress?

Core serves /wp-sitemap.xml. Some plugins serve /sitemap_index.xml instead. Submit whichever you use to Search Console and avoid duplicates.

## Read next

- [Technical SEO checklist for a small site](https://porteur.ai/guides/technical-seo-checklist): Run these 20 technical SEO checks, in order. Each shows how to check it free and what fixed looks like for a site under 1,000 pages.
- [On-page SEO checklist: the twelve things on the page](https://porteur.ai/guides/on-page-seo-checklist): The twelve page elements that move clicks and rankings, with examples you can copy to your own product pages today.
- [Canonical tags: what they do and the mistakes that cost rankings](https://porteur.ai/guides/canonical-tag): What a canonical tag does, when to use one, the mistakes that cost rankings, and how to check and fix canonicals on a small site.
- [Breadcrumbs: the navigation, the markup, and what Google shows](https://porteur.ai/guides/breadcrumbs): Add breadcrumb navigation that helps visitors, improves internal linking and gives Google a clean trail to show in results, with JSON-LD examples.
- [JSON-LD: how to write it, where to put it, how to test it](https://porteur.ai/guides/json-ld): See why Google recommends JSON-LD, where to place it, how to use one @graph, how to test with Google and schema.org, and what to fix.
- [Core Web Vitals for a product site: the three numbers](https://porteur.ai/guides/core-web-vitals): The product founder’s guide to LCP, CLS and INP: what Google measures, why phones decide the pass, common causes, and how to test and fix.
- [SEO plugin](https://porteur.ai/glossary/seo-plugin): An SEO plugin adds the missing SEO fields to your CMS. See what it changes, what it cannot do, how to measure impact, and whether you need one.
- [Yoast SEO alternatives for WordPress](https://porteur.ai/alternatives/yoast-alternatives): Every WordPress SEO plugin writes the same tags. Here is what Rank Math, All in One SEO and SEOPress each are, and how to switch without breaking a site.

Paste your homepage URL and get a free check of your WordPress setup, the searches around it and who you face on them, with three findings you can ship this week. Free check: https://porteur.ai/
