WordPress is good for SEO out of the box, and that's exactly what makes its defaults dangerous.
Everything mostly works. Nothing obviously breaks. So people install a theme, start publishing, and never look at the handful of settings that quietly determine whether their site is easy or hard to rank — until a year later when they're wondering why 400 thin tag pages are indexed and their best post lives at /?p=847.
Most of these are one-time decisions that take an afternoon. Several are painful to change later. Here's the order to do them in.
The short version
Do these before you publish anything:
- Permalinks — set to Post name, and don't change it later
- Uncheck "Discourage search engines" — the single most common self-inflicted SEO wound
- Pick one SEO plugin and configure it once
- Decide your archive policy — most sites should noindex tags
- Submit your sitemap to Search Console
- Set your canonical domain — https, and www or not
Then the ongoing work is content and speed, not settings.
Permalinks: set once, never change
Settings → Permalinks → Post name.
That gives you yoursite.com/your-post-title — short, readable, and stable.
Why it matters: the default on older installs is ?p=123, which tells search engines and readers nothing. And the "Day and name" option bakes a date into every URL, which dates your content visually and breaks when you refresh an old post.
Why to decide now: changing permalinks on an established site changes every URL. Every link you've earned points at a 404 until redirects catch them, and even with perfect 301s you lose something. WordPress handles some redirection automatically, but not reliably enough to plan around.
One thing to skip: the "Category base" and custom structures that put categories in the path — /email-marketing/deliverability/post-name. It looks organised until you reorganise your categories, at which point every URL changes. Keep the path flat.
The checkbox that hides your entire site
Settings → Reading → "Discourage search engines from indexing this site."
If that's ticked, WordPress adds a noindex directive site-wide and your site cannot rank. At all.
It gets ticked during development, quite reasonably, and then survives launch. It is genuinely the single most common cause of "my new site isn't appearing in Google," and people spend weeks on content before discovering it.
Check it now, even if you're sure. Then check it again after any migration or staging push, because staging environments have it enabled and pushing staging to live can carry it across.
How to verify independently: view your homepage source and search for noindex. If it's there, that's your answer.
Pick one SEO plugin — and only one
WordPress needs a plugin for meta titles and descriptions, XML sitemaps, canonical control, Open Graph tags, and schema. Core doesn't provide these.
Never run two. Two SEO plugins produce duplicate meta tags, competing XML sitemaps, and conflicting schema — and they'll fight each other silently while you wonder why your titles look odd in search results. If you're switching, migrate the data and deactivate the old one properly.
The main options are Yoast, Rank Math, SEOPress, All in One SEO, and The SEO Framework. They all cover the fundamentals competently; the differences are in what's free versus paid, how much weight they add, and how they handle schema. Compared properly.
What to configure once you've picked one:
Title templates. Set a site-wide pattern like %%title%% %%sep%% %%sitename%% rather than writing every title by hand. Override individually where it matters.
Indexing rules for post types and taxonomies — see the archives section below.
Canonical handling — leave it on automatic self-referencing canonicals unless you have a specific reason.
Schema defaults — set your site as an Organization or a Person, and make sure author information is attached to posts. On a personal-brand site, Person is usually right. Why that matters.
Turn off what you don't need. Most SEO plugins ship with modules you'll never use — link counters, redirection managers you're not using, social previews. Disabling them reduces both admin weight and database load.
Archives, tags, and the thin-content problem
WordPress generates archive pages automatically: one per category, one per tag, one per author, one per month, plus paginated versions of all of them.
On a typical blog, that's hundreds of pages containing no original content — just lists of excerpts that also appear elsewhere.
The general position: noindex tag archives, date archives, and author archives on single-author sites. Consider indexing category archives if you use categories properly and give them real introductory content.
The reasoning is that a tag page listing two posts, competing with those posts for the same terms, adds nothing and dilutes your signals. But a well-maintained category page with a genuine introduction can be a legitimate landing page.
Where to set this: your SEO plugin's Search Appearance or Titles & Meta section, under Taxonomies and Archives.
Sitemaps and Search Console
WordPress core generates a basic XML sitemap at /wp-sitemap.xml. Every SEO plugin generates a better one, usually at /sitemap_index.xml — and if you're using a plugin, disable the core one to avoid two competing sitemaps.
What belongs in it: canonical, indexable, 200-status URLs only. If you've noindexed your tag archives, they shouldn't be in the sitemap — that's a contradictory signal, telling Google a page is important while also telling it not to index that page.
Most SEO plugins handle this automatically once you set your indexing rules. Worth verifying rather than assuming.
Then submit it in Search Console and check the report. If it says 400 submitted and 120 indexed, that gap is your technical to-do list. Reading the reports.
Canonicals, HTTPS, and the www decision
Pick one canonical version of your domain and be consistent: https://yoursite.com or https://www.yoursite.com, never both accessible without redirection.
Set it in Settings → General (WordPress Address and Site Address), and make sure your host redirects the other version.
HTTPS is non-negotiable. It's a ranking signal, browsers flag insecure sites, and most hosts now include a free certificate. If you migrated from HTTP, check for mixed content — images or scripts still loading over http:// inside otherwise-secure pages.
Self-referencing canonicals on every page are the default in every decent SEO plugin. Leave them on. The classic disaster is a misconfigured plugin canonicalising every page to the homepage, which deindexes the site while looking completely normal from the front end.
Speed is an SEO setting too
Core Web Vitals are a confirmed ranking signal — a tie-breaker between comparable pages rather than something that overrides content quality, but real.
The commercially stronger argument is that slow pages lose readers regardless of ranking.
On WordPress the usual culprits are server response time, oversized images, and plugin JavaScript. The full playbook.
WooCommerce changes the picture
If you're running a store, several problems appear that don't exist on a blog: duplicate product descriptions from manufacturer copy, filter and faceted navigation generating endless URL variations, out-of-stock product pages, and thin category pages.
These are genuinely different problems needing different fixes. Covered separately.
The traps worth knowing
Five WordPress-specific defaults that cost people rankings.
Attachment pages. WordPress creates a page for every uploaded image. They're thin, duplicative, and pointless. Every SEO plugin has a setting to redirect them to the parent post — enable it.
The default "Uncategorised" category. Rename it or reassign posts. An indexed archive called "Uncategorised" isn't a good look.
Pagination and duplicate meta. Paginated archives inherit the same title and description. Most SEO plugins handle this; verify yours does.
Sample content. The default "Hello world!" post and "Sample Page" get indexed on plenty of live sites. Delete them.
Author archives on single-author sites. They duplicate your blog index exactly. Noindex them, or disable them entirely.
The pre-launch checklist
Before a site goes live:
- Permalinks set to Post name
- "Discourage search engines" unchecked — verify in page source
- One SEO plugin installed and configured; no second one active
- Site title and tagline set (not "Just another WordPress site")
- Canonical domain decided, with the other version redirecting
- HTTPS active, no mixed content warnings
- Archive indexing rules decided and applied
- Attachment pages redirected to parent
- Sample content deleted
- XML sitemap generating, containing only indexable URLs
- Sitemap submitted to Search Console
- Search Console and Analytics both verified
- Organization or Person schema configured
- A page loaded and its source checked for the correct title, canonical, and no stray noindex
That's an afternoon, once, and it prevents most of the problems people spend months diagnosing later.
Frequently asked questions
Is Yoast or Rank Math better?
Both handle the fundamentals competently, so the honest answer depends on what you need. Rank Math's free tier includes features Yoast gates behind Premium — redirects, multiple focus keywords, and Search Console integration among them. Yoast has the longer track record, the largest install base, and a more conservative release cadence, which some people value on client sites. Whichever you choose, run only one.
Should I noindex category pages?
Category archives are the one archive type worth indexing, if you use categories deliberately and give each one genuine introductory content. A category page that's just a list of post excerpts adds nothing and competes with the posts themselves. Tag archives, date archives, and author archives on single-author sites should generally be noindexed — they're thin by construction.
What's the best permalink structure?
Post name — yoursite.com/your-post-title. Short, readable, and stable. Avoid date-based structures, which visually date your content and become awkward when you refresh old posts, and avoid putting categories in the path, since reorganising your categories then changes every URL. Set it before publishing, because changing permalinks later changes every URL you've earned links to.
Do I need an SEO plugin at all?
For a normal site, yes. WordPress core doesn't provide meta descriptions, canonical control, Open Graph tags, or schema markup, and its built-in sitemap is basic. You could add these manually in a child theme, and some developers do, but for most people a single well-configured plugin is the sensible route. What matters is picking one and configuring it properly, not which one you pick.
What to do next
Go to Settings → Reading and check whether "Discourage search engines" is ticked.
I know you think it isn't. Check anyway — it's the most common cause of a site not appearing in Google, it takes five seconds, and the people it happens to are always certain it couldn't have happened to them.
Then check your permalink structure while you're in the settings. Both are one-time fixes that get much harder later.
Free: The WordPress maintenance checklist.
Related guides
- Yoast vs Rank Math vs SEOPress — picking one
- Adding schema without a bloated plugin — three approaches
- Should you noindex tags and archives? — the decision framework
- WooCommerce SEO — store-specific problems
- On-page SEO: the complete checklist — what to do per page
- WordPress speed — the performance side
Join the Newsletter
Get practical marketing tactics delivered straight to your inbox.

Written by
Muhammad Basim
Related Articles
Transactional Email Services Compared for WordPress
Every one of these services will deliver your password resets. That's not the differentiator. What differs is setup difficulty, what the free tier covers, how good the logs are when something goes wrong, and — the one people never consider until it bites them — whether the service also handles marketing mail, and whether you […]
Contact Form Notifications Not Arriving: Every Cause
Here's the version of this problem that costs the most: it's been happening for months and you don't know. The form says "thank you." The visitor believes they've reached you. You believe nobody's been in touch. There's no error, no bounce, no alert — just an absence, and absences are invisible. Most of the time […]
WooCommerce Order Emails Going to Spam: The Fix
"I never got a confirmation. Did my order go through?" Every store owner gets this message. And when it arrives often enough, you stop treating it as customer confusion and start realising your receipts genuinely aren't landing. This costs more than most email problems, because a missing order confirmation doesn't just annoy someone — it […]