Panduan WordPress SEO

sebuah SEO teknis practitioner's guide untuk WordPress — default settings itu hurt Anda, how core sitemap dan canonical handling actually berfungsi, why Anda run exactly one SEO plugin, dan duplicate-konten sources WordPress membuat pada -nya own.

Pertama kali diterbitkan: 27 Jun 2026 · Terakhir diperbarui: 3 Agu 2026 · Advanced
Bahasa

WordPress adalah SEO-capable, not SEO-finished. ini self-canonicalizes posts since versi 2,9 dan ships sebuah native sitemap XML since 5,5 — tetapi -nya defaults juga leave?p=123 permalinks, attachment halaman, date/tag/author archives, feeds, dan internal hasil pencarian semua dapat diindeks, dan sebuah single Settings → Reading checkbox dapat silently block whole situs. fixes itu actually penting: set /%postname%/ sebelum publishing, run exactly one SEO plugin (Yoast, peringkat Math, atau AIOSEO — tidak pernah two, wp_head conflict produces duplicate metadata), noindex thin archives alih-alih disallowing them, dan pertahankan sitemap untuk canonical dapat diindeks URLs hanya. WordPress 6.4+ disables attachment halaman pada baru installs oleh default — redirecting straight untuk file, not parent post — tetapi existing situs pertahankan them pada dan harus migrate manually. Google memiliki tidak pernah said WordPress peringkat better atau worse daripada apa pun lainnya CMS — konten dan tautan decide itu, not platform.

TL;DR — WordPress adalah SEO-capable, not SEO-finished. ini self-canonicalizes singular posts since versi 2,9 dan ships sebuah native sitemap XML since 5,5 — tetapi defaults leave ?p=123 permalinks, attachment halaman, date/tag/author archives, feeds, dan ?s= search halaman semua dapat diindeks, dan Settings → Reading checkbox dapat silently block whole situs. fixes itu move needle: /%postname%/ sebelum publishing, exactly one SEO plugin ( wp_head conflict dari two adalah nyata), noindex thin archives alih-alih disallowing them, dan sebuah sitemap dari canonical dapat diindeks URLs hanya. WordPress 6.4+ disables attachment halaman oleh default pada baru installs — redirecting untuk file itself, not parent post; existing situs pertahankan them enabled dan migrate oleh hand. Google memiliki tidak pernah said WordPress adalah better atau worse untuk SEO daripada apa pun lainnya CMS. Evidence for this claim WordPress added core XML sitemaps in 5.5 and attachment-page redirects for new sites in 6.4. Scope: Core version history; existing sites can retain prior attachment behavior. Confidence: high · Verified: WordPress 5.5 XML sitemaps WordPress 6.4 attachment pages

WordPress adalah SEO-capable, not SEO-finished

honest framing adalah somewhere antara two marketing claims Anda biasanya hear. WordPress adalah not “SEO-friendly out of the box” (terjemahan) “SEO-friendly out dari box” di apa pun complete sense — tetapi ini juga isn’t buruk untuk SEO. ini gives Anda sebuah strong, controllable foundation dan lalu leaves sebuah pile dari dapat diindeks cruft turned pada oleh default. whole job adalah knowing which defaults untuk perubahan dan which auto-generated URLs untuk suppress.

dan untuk menjadi jelas up front: Google memiliki tidak pernah said WordPress peringkat better atau worse daripada apa pun lainnya CMS. sebagai Google’s documentation puts ini, “if you’re using a CMS such as WordPress, Wix, or Blogger, it’s likely that your CMS has already made a sitemap available to search engines” (terjemahan) “jika Anda’re menggunakan sebuah CMS such sebagai WordPress, Wix, atau Blogger, ini adalah mungkin itu Anda CMS memiliki sudah dibuat sebuah sitemap available untuk mesin pencari” — platform adalah treated like apa pun lainnya. Rankings come dari konten dan tautan, not dari logo di Anda admin bar. Evidence for this claim Google says common CMS platforms often generate sitemaps and does not prescribe a CMS-specific ranking advantage. Scope: Google sitemap guidance; absence of a CMS ranking advantage is an editorial inference from platform-neutral requirements. Confidence: medium · Verified: Google: Build and submit a sitemap

defaults itu hurt — dan why

** “Discourage search engines from indexing this site” (terjemahan) “Discourage mesin pencari dari pengindeksan ini situs” checkbox** (Settings → Reading) writes sebuah situs-wide noindex dan sebuah restrictive virtual robots.txt. ini adalah pertama thing I periksa pada apa pun WordPress audit, because ini adalah single setting itu dapat silently zero out sebuah entire situs’s pengindeksan — biasanya left pada dari staging.

** ?p=123 default permalink** gives no topical signal dan isn’t sebuah clean URL. Switch untuk /%postname%/ — dan melakukan ini sebelum publishing. pada sebuah established situs, changing permalink structure berarti URL perubahan; WordPress akan auto-301 old numeric URLs untuk standard post jenis, tetapi custom post jenis dan halaman don’t selalu redirect cleanly, so test. I’d hindari baking category ke permalink (/%category%/%postname%/): day Anda reorganize taxonomy Anda trigger sebuah mass URL perubahan dan throw away peringkat history untuk no proportional benefit.

Attachment halaman adalah WordPress-spesifik gotcha people forget. setiap media upload historically spawned sebuah standalone URL containing hanya file dan beberapa auto-metadata — thin halaman itu dapat cannibalize nyata ones. WordPress 6.4 changed default so baru installs disable attachment halaman entirely — sebuah permintaan untuk one now redirects straight untuk file itself, not parent post. Existing (upgraded) situs pertahankan attachment halaman enabled; there’s no Settings-screen toggle untuk ini, hanya wp option set wp_attachment_pages_enabled 0 via WP-CLI atau editing option directly pada wp-admin/options.php. dalam praktik sebagian besar situs owners tidak pernah touch itu option dan instead handle ini plugin cara: noindex attachment halaman, atau better, redirect ini untuk parent post via Anda SEO plugin. Don’t assume sebuah older situs inherited WordPress 6.4 default; ini didn’t.

Archives, feeds, dan search halaman. oleh default WordPress generates dapat diindeks category archives, tag archives, date archives, author archives, paginated archive halaman (?page=2), feed URLs (/feed/), attachment halaman, dan internal search hasil halaman (/page=search, i.e. ?s=). itu’s canonical list dari WordPress duplicate-konten sources, dan almost none dari ini adalah sebuah decision Anda dibuat.

Duplicate konten WordPress membuat pada -nya own

Worth stating plainly because ini surprises people: WordPress manufactures structural duplicate konten oleh default. recurring sources:

SourcecontohTypical fix
Category archives/category/news/pertahankan, atau noindex jika thin
Tag archives/tag/wordpress/biasanya noindex (thin, overlapping)
Author archives/author/admin/Noindex pada single-author situs
Date archives/2023/04/Noindex (almost selalu thin)
Pagination/page/2/Self-referential canonical (not halaman 1)
Feed URLs/feed/Noindex feeds
Attachment halaman/photo-of-cat/Redirect untuk parent via SEO plugin (WP 6.4+ redirects baru installs untuk file itself instead)
hasil pencarian/?s=keywordNoindex

fix adalah almost tidak pernah untuk panic tentang sebuah penalty — Google consolidates duplicates untuk sebuah canonical alih-alih penalizing structural duplication. fix adalah untuk noindex thin stuff dan pertahankan sitemap clean. dan sebuah critical distinction: noindex ≠ no-crawl. sebuah noindexed halaman harus stay dapat di-crawl so Google dapat actually read noindex. jika Anda disallow ini di robots.txt instead, Google dapat’t see directive — which adalah why Anda noindex thin archives alih-alih blocking them.

sitemap XML: core vs. plugin

WordPress 5.5 (August 2020) ditambahkan sebuah native sitemap XML di /wp-sitemap.xml. ini adalah nyata, tetapi barebones. ini dumps di semua public post jenis, semua public taxonomies, dan author archives — meaning ini happily lists exactly thin halaman Anda ingin out dari indeks. ini memiliki no image-sitemap mendukung dan limited control. So dalam praktik sebagian besar situs gunakan sitemap dari Yoast atau peringkat Math instead, which lets Anda sertakan/exclude spesifik post jenis dan taxonomies dan pertahankan file untuk canonical, dapat diindeks URLs. Yoast disables core sitemap dan replaces ini; itu’s expected.

Two things sitemap won’t melakukan untuk Anda: Google ignores <priority> dan <changefreq> entirely (per Google’s own docs), dan WordPress melakukan not submit sitemap untuk Google untuk Anda — Anda submit ini di Search Console dan Bing Webmaster alat, dan Anda dapat list ini via sebuah Sitemap: directive di robots.txt untuk passive penemuan. 50 000-URL / 50MB limit dari spec masih applies; split ke sebuah sitemap indeks past itu.

Canonical handling: core, plugin, dan conflict trap

Core memiliki output rel=canonical via rel_canonical() since WordPress 2.9 (2009) — singular posts dan halaman self-canonicalize. WordPress 4.6 didn’t tambahkan tag; ini refactored function untuk gunakan filterable wp_get_canonical_url(), which adalah what people biasanya berarti when mereka say “canonical since 4.6.” (terjemahan) “canonical since 4,6.” itu’s sebuah baik baseline, tetapi core doesn’t handle custom post jenis consistently di seluruh themes, doesn’t tambahkan canonicals pada 404s, dan doesn’t resolve URL-variation duplicates (?utm_source=, www vs. non-www, trailing slashes) pada -nya own. SEO plugins replace core output dengan more comprehensive handling: custom post jenis canonicals, self-referential pagination canonicals (not pointing halaman 2+ di halaman 1 — sebuah mistake itu deindexes Anda deeper halaman), cross-domain canonical untuk syndication, dan per-halaman overrides.

Here’s trap itu ties whole plugin pertanyaan together: ** tag canonical set oleh Anda SEO plugin adalah authoritative signal — tetapi jika Anda theme juga injects sebuah tag judul atau -nya own SEO meta, Anda get sebuah conflict.** beberapa theme frameworks (Genesis, Thesis) emit mereka own SEO tags. When Anda activate sebuah SEO plugin, disable theme-tingkat SEO, dan inspect rendered <head> untuk confirm exactly one canonical, one judul, one deskripsi meta.

One SEO plugin. tidak pernah two.

ini deserves -nya own heading because ini adalah paling umum self-inflicted WordPress SEO wound. tidak pernah run two SEO plugins simultaneously. Yoast, peringkat Math, dan AIOSEO semua hook ke wp_head() untuk write judul, deskripsi meta, canonical, Open Graph/Twitter tags, robots meta, dan JSON-LD. Run two dan mereka both fire — duplicate deskripsi meta, duplicate (dan contradictory) tag canonical, conflicting Open Graph, dan conflicting sitemaps. Search Console akan flag duplicate metadata. Pick one dan fully uninstall lainnya (deactivating leaves database entries behind).

sebagai untuk which one — mereka semua cover core tasks; choice adalah gunakan-case dan budget:

  • Yoast SEO — largest install base, familiar traffic-light scoring, great untuk beginners dan konten teams itu ingin sebuah guided workflow. (WooCommerce schema adalah sebuah paid tambahkan-pada.)
  • peringkat Math — paling generous free tier: unlimited focus keywords, redirect manager, 404 monitoring, GSC + GA4 integration, dan sebuah strong schema builder (16+ jenis free). My pick untuk developers dan power pengguna.
  • semua di One SEO (AIOSEO) — strong WooCommerce integration, internal-tautan assistant, baik local SEO. Suits agencies dan besar stores.

One caution pada Yoast’s green lights: sebuah higher Yoast score tidak berarti better rankings. ini adalah sebuah heuristic untuk basic pada-halaman formatting — keyword presence, judul length, readability proxies. sebuah red-light post routinely outranks sebuah semua-green one. konten quality, intent match, authority, dan tautan penting far more.

Schema: what WordPress melakukan dan doesn’t output

Core WordPress outputs essentially nothing berguna untuk rich hasil — clean HTML Google dapat parse, tetapi no JSON-LD. sebagai Google notes, “if you use a CMS, such as Wix, WordPress, or Shopify, you might not be able to edit your HTML directly… you may be able to install a plugin that allows you to specify structured data.” (terjemahan) “jika Anda gunakan CMS, such sebagai Wix, WordPress, atau Shopify, Anda mungkin not menjadi able untuk edit Anda HTML directly… Anda dapat menjadi able untuk install sebuah plugin itu allows Anda untuk specify data terstruktur.” itu’s path:

  • Yoast auto-menambahkan Organization/Person, situs web (dengan SearchAction), WebPage, BreadcrumbList, dan artikel schema di JSON-LD.
  • peringkat Math menambahkan itu plus 16+ schema jenis di free tier (FAQ, HowTo, Product, Review, Event…) dan sebuah builder untuk custom jenis.
  • WooCommerce alone outputs basic Open Graph product metadata tetapi no Product JSON-LD — Anda perlu Yoast WooCommerce SEO (paid) atau peringkat Math Pro untuk full Product schema dengan price, availability, dan review aggregate.

WooCommerce, briefly

WooCommerce stacks more SEO surface pada top dari standard WordPress. recurring issues: /product/ dan /product-category/ URL bases (removable, dengan redirects pada existing situs), product variations membuat near-duplicates, dan — big one — faceted navigation generating thousands dari thin filter-combination URLs. Handle facets yang sama cara Anda’d handle them anywhere: ideally JS-based filtering dengan no URL perubahan, otherwise rel=canonical untuk base category dan/atau noindex, follow pada filter halaman (dengan crawling allowed so directive adalah seen). Shop dan category pagination ingin self-referential canonicals, dan Google deprecated rel=prev/next back di 2019 — harmless jika present, tetapi don’t rely pada ini. Faceted nav memiliki -nya own deep treatment di Ecommerce SEO pillar.

robots.txt dan Core Web Vitals — two quick notes

WordPress menyajikan sebuah virtual robots.txt (ini adalah not sebuah file pada disk) defaulting untuk disallowing /wp-admin/ while allowing admin-ajax.php. Drop sebuah physical file di root dan ini overrides virtual one entirely; SEO plugins let Anda edit virtual versi dari dashboard. classic mistake adalah disallowing /wp-content/, which blocks CSS/JS/images dan breaks rendering — don’t.

pada performa: “WordPress is slow” (terjemahan) “WordPress adalah slow” complaint adalah sebuah configuration masalah, not sebuah core masalah. LCP issues trace mostly untuk TTFB (cheap shared hosting, no opcode cache) dan unoptimized hero images; INP issues untuk JavaScript bloat dari halaman builders (Elementor, Divi); CLS untuk images without dimensions dan web fonts without font-display: swap. Lightweight themes (GeneratePress, Kadence, Astra) plus sebuah caching plugin, sebuah CDN, dan modern image formats get sebuah well-dibangun WordPress situs melalui Core Web Vitals comfortably. detail lives di Web performa cluster.

Add an expert note

Pin an expert quote

New person? Create their unclaimed profile at /admin/experts/ → Pin a quote first.