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.

By , founder of Porteur · Updated 14 September 2026 · Markdown

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.

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.

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.

NeedWhat to look forAny of the big four offers
Simple setup and defaultsA guided wizard, sensible templates, on-off toggles for archivesYes
Breadcrumbs outputA shortcode or PHP function and matching schemaYes
Schema presetsOrganisation, BreadcrumbList, Article, Product or SoftwareApplicationYes
Sitemap controlInclude or exclude post types and taxonomiesYes
Robots editingPer page robots and a robots.txt editorYes

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

Sources

Check my site, free

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, no card
  • Read-only, your own accounts
  • Readable by your agent

Read next