WooCommerce kategori sayfaları neden dizine eklenmiyor
Bir WooCommerce kategori sayfasının dizine girmemesinin gerçekçi olarak altı nedeni var ve birinin çözümü bir diğerini kötüleştiriyor. Hangisiyle karşı karşıya olduğunuzu, Search Console'daki tam durum ifadesi söylüyor.
Google’ın dizine eklemediği bir WooCommerce kategori sayfası nadiren gizemlidir, ama sık sık yanlış teşhis edilir. Gerçekçi olarak altı neden var, hepsi aynı olasılıkta değil ve birinin çözümü bir diğerini kötüleştiriyor. Tek bir kategori açıklamasını bile yeniden yazmadan önce hangisiyle karşı karşıya olduğunuzu belirleyin. Search Console bunu zaten biliyor; iki durum ifadesi arasındaki fark da <head> içindeki bir etiketle mi yoksa Google’ın sayfanın kendisi hakkında verdiği bir kararla mı uğraştığınızı söylüyor.
Kısa cevap#
WooCommerce kategori sayfaları altı nedenden biri yüzünden dizine girmez — bir noindex etiketi, birbirinden ayırt edilemeyen içerik, boş bir kategori, filtreler ve sayfalamanın yol açtığı tarama israfı, hiç iç bağlantı olmaması ya da canonical çakışmaları — ve hangisi olduğunu Search Console’daki tam durum ifadesi söyler.
- Önce durumu okuyun. Yayındaki kategori URL’sini Search Console’un URL Inspection aracına yapıştırın ve tam durum ifadesini okuyun, çünkü “Discovered – currently not indexed” ifadesi Google’ın sayfayı reddettiği anlamına değil, henüz sayfaya tarama kaynağı ayırmadığı anlamına gelir.
- Önce noindex’i eleyin. Bu kontrol ikili ve iki dakika sürüyor: WordPress’in arama motoru görünürlüğü kutusu, Rank Math’in açık gelen “Noindex Empty Category and Tag Archives” ayarı, Yoast’un kategori ayarları ve terim bazlı istisnalar olağan kaynaklardır; robots.txt’te engellenmiş bir URL’nin noindex etiketi ise hiç okunamaz.
- Kelime sayısı değil, ayırt edilebilirlik. Dizine giren bir kategoriyi girmeyenden ayıran şey genellikle yan taraftaki kategoriden ne kadar net ayrıştığıdır; bu yüzden iki üç cümlelik somut bir metin ve gerçekten farklı bir ürün seçkisi, kalıp metinden ya da uzunluktan daha çok işe yarar.
- Boş kategoriler dizinden düşer. Hem “Hide out of stock items from the catalog” ayarı hem de Subcategories olarak ayarlanmış bir görüntüleme tipi, kategoriyi hiçbir şey göstermez hale getirebilir; bu sırada Products → Categories ekranındaki Count sütunu ham toplamı bildirmeye devam eder. Üstelik Rank Math boş terimleri varsayılan olarak noindex yapar.
- Bağlantılar, filtreler ve sayfalama. XML site haritası dışında hiçbir yerden bağlantı almayan bir kategori nadiren taranır, katmanlı gezinmenin ürettiği filtre URL’leri en etkili biçimde robots.txt ile engellenir ve bir kategorinin ikinci sayfası, birinci sayfaya işaret eden bir canonical yerine kendine referans veren bir canonical taşımalıdır.
Buradan başlayın: Search Console’da “WooCommerce kategori sayfası dizine eklenmiyor” ne demek#
URL Inspection aracını açın, yayındaki kategori URL’sini yapıştırın ve tam durum ifadesini okuyun. Bu ifade süs değil. Her durum, sürecin farklı bir aşamasına işaret eder ve hepsi sizin hatanız değildir.
| Durum | Gerçekte ne anlama gelir | Önce neye bakmalı |
|---|---|---|
| URL marked ‘noindex’ | Google sayfayı çekti ve dizine eklememesini söyleyen bir robots meta etiketi ya da X-Robots-Tag başlığı buldu | SEO eklentisinin taksonomi ayarları, terim bazlı istisna |
| Discovered – currently not indexed | Google URL’nin var olduğunu biliyor ama henüz çekmedi | Meta etiketleriniz değil, iç bağlantılar ve tarama talebi |
| Crawled – currently not indexed | Google sayfayı çekti ve dizine eklememeye karar verdi | Sayfanın diğer kategorilerinizden ayırt edilip edilemediği |
| Duplicate, Google chose different canonical than user | Google onun yerine başka bir URL’yi dizine ekledi | Filtre ve sayfalama URL’leri, çift ürün yolları |
| Alternate page with proper canonical tag | Google’a başka bir şeyi dizine eklemesini siz söylediniz | Kendi canonical mantığınız |
| Soft 404 | Sayfa HTTP 200 döndürdü ama boş okunuyor | Boş kategoriler, gizlenmiş stok dışı ürünler |
| URL blocked by robots.txt | Hiç taranmadı | robots.txt, güvenlik eklentileri, sunucu düzeyindeki kurallar |
En sık yapılan yanlış okuma, Discovered – currently not indexed durumunu bir dizine ekleme reddi sanmaktır. Öyle değil. Google bir bağlantı ya da site haritası kaydı görmüştür ve o URL’ye henüz bir tarama harcamamıştır. Bunu düzeltmek için meta robots etiketlerinizi denetlemek boşa emektir, çünkü Google onları okumamıştır. Bu durum bir talep sorunudur ve aşağıda ele alınıyor.
Neden 1: gerçekten bir yerde noindex ayarlanıyor#
Bunu önce kontrol edin, çünkü iki dakika sürüyor ve sonucu ikili. Eklentinin arayüzüne güvenmeyin, yanıtı okuyun.
curl -sIL "https://example.com/product-category/jackets/" | grep -i "x-robots-tag"
curl -sL "https://example.com/product-category/jackets/" | grep -i -E "robots|canonical"Ortada bir noindex varsa, kabaca sıklık sırasına göre geldiği yerler şunlardır.
- Settings → Reading → Search engine visibility. Bir staging yayınından sonra açık unutulan site geneli kutusu. Her şeyi noindex yapar; yani yalnızca kategorileriniz eksikse sorun bu değildir.
- Rank Math → Titles & Meta → Global Meta. Noindex Empty Category and Tag Archives seçeneği açık gelir. Yalnızca terimin içi boşken uygulanır, dolayısıyla etiket stokunuzla birlikte belirir ve kaybolur — yakalanmasının zor olmasının sebebi tam olarak bu. Dönem dönem boşalan bir kategoriniz varsa başka hiçbir yere bakmadan önce buraya bakın.
- Yoast SEO → Settings → Categories & tags. Yoast kutudan çıktığı haliyle ürün kategorilerini arama sonuçlarında görünür bırakır; yani buradaki bir noindex, birinin elle kapattığı bir ayardır. Yoast’un varsayılan olarak dizin dışında tuttuğu şey tarih ve format arşivleridir, ürün taksonomileri değil.
- Terim bazlı istisnalar. Her iki eklenti de tek tek kategori düzenleme ekranına bir gelişmiş bölüm ekler. Terim düzeyindeki bir noindex genel ayarı ezer ve genel ayarlar sayfasını gayet normal görünür halde bırakır.
- Nitelik arşivleri. Eksik sayfalar
pa_colourya dapa_sizearşivleriyse, yaniproduct_catterimleri değilse, özellikle ürün nitelikleri için olan taksonomi satırını kontrol edin. Bunlar çoğu zaman bilerek noindex yapılır.
İnsanları yanıltan bir uyarı: bir URL robots.txt’te engelliyse Google üzerindeki noindex’i okuyamaz. Aynı URL’yi hem engellemek hem noindex yapmak, sayfanın dizinde açıklama metni olmayan çıplak bir URL olarak asılı kalabileceği anlamına gelir. İkisinden birini seçin.
Neden 2: sayfa taranıyor ve dizine eklenmeye değmez bulunuyor#
Bu, Crawled – currently not indexed durumudur ve şehir efsanelerinin yaşadığı yer burasıdır. Yalnızca bir ürün ızgarasından ibaret olan bir kategori sayfasının “kapı sayfası” olduğunu okuyacaksınız. Terimin anlattığı şey bu değil. Google’ın spam politikaları kapı sayfası kötüye kullanımını, ziyaretçileri sitenin kullanışlı kısmına akıtmak için üretilmiş sayfalar ya da belirli bölge veya şehirleri hedefleyip kullanıcıları tek bir sayfaya yönlendiren çok sayıda alan adı ve sayfa üzerinden tanımlar. Normal bir mağaza hiyerarşisi içindeki normal bir kategori sayfası bu değildir ve öyle olduğuna kendinizi inandırmak sizi her ızgaranın altına 600 kelimelik dolgu metni yazmaya götürür.
Gerçek sorun daha sıkıcı. Tek içeriği ürünlere giden bağlantılar olan bir sayfa, sıralama sistemine kendisini yan taraftaki kategoriden ayıracak çok az şey verir ve buna verilen olağan yanıt — ızgaranın altına konan birkaç yüz kelimelik üretilmiş giriş metni — işleri düzeltmek yerine kötüleştirir. Google’ın spam politikaları ölçekli içerik kötüye kullanımını, nasıl üretilmiş olursa olsun çok az değer katan ya da hiç katmayan, özgün olmayan içeriğin büyük miktarlarda üretilmesi olarak adlandırır. Dizine giren bir kategoriyi girmeyenden ayıran şey genellikle kelime sayısı değil, ayırt edilebilirliktir.
- İki üç cümlelik somut metin. Kategorinin ne içerdiğini ve yanındakinden nasıl ayrıldığını söyleyen bir metin. Somut olmak uzun olmayı yener.
- Farklı ürünler. “Kışlık Montlar” ile “Sıcak Ceketler” yirmi üründen on dokuzunu paylaşıyorsa Google birini seçip diğerini eler. Bu, Duplicate, Google chose different canonical than user olarak karşınıza çıkar.
- Kalıp metin hiç yoktan kötüdür. İçine kategori adı yerleştirilmiş aynı paragraf, ölçekli üretilmiş özgün olmayan içeriğin tanımıdır.
- Sayfayı haklı çıkaracak kadar ürün. Üç ürün tutan bir kategori, üzerine ne yazarsanız yazın nadiren dizinde yer kazanır.
Neden 3: kategori boş ya da kendi kendini boşaltıyor#
Boş bir arşiv, “ürün bulunamadı” mesajıyla birlikte HTTP 200 döndürür ve Google bunu pekâlâ soft 404 olarak sınıflandırabilir — üstelik yukarıda değinildiği gibi Rank Math varsayılan olarak sizin yerinize onu noindex yapar. Bir WooCommerce ayarı, kimse ürün silmeden boş kategoriler üretir; bir başkası da sağlıklı bir kategoriyi tarama botunun gözünde boş gösterir.
Birincisi WooCommerce → Settings → Products → Inventory → Out of stock visibility. “Hide out of stock items from the catalog” işaretliyken, stoku tükenmiş bir kategori boş bir arşiv olarak render edilir. Sayıların nerede ayrıştığına dikkat edin, çünkü bir öğleden sonranızı yiyen kısım burası: WooCommerce ön yüzde görünürlüğü dikkate alan kendi terim sayımlarını devreye sokar, dolayısıyla kategori bileşenleri ve blokları azalmış sayıyı gösterir; Products → Categories ekranındaki Count sütunu ise ham toplamı göstermeye devam eder, çünkü bu değiştirme yönetim panelinde atlanır. Kategori wp-admin’de gayet sağlıklı, Googlebot’a boş görünür.
İkincisi görüntüleme tipi. Her ürün kategorisinin düzenleme ekranında bir Display type alanı vardır — Default, Products, Subcategories, Both — ve site geneli varsayılanı WooCommerce → Settings → Products → Default category display altındadır. Subcategories seçildiğinde bir üst kategori arşivi, altındaki ağaç ne kadar dolu olursa olsun, alt kategori kutucuklarından oluşan bir ızgara basar ve hiç ürün ızgarası göstermez. Bunun bir render tercihi olduğuna dikkat edin, bir sorgu kısıtı değil: WordPress hiyerarşik bir terim arşivi sorgusuna alt terimleri de dahil eder, dolayısıyla yalnızca alt kategorilerde duran ürünler aksi halde üst kategoride görünür. WooCommerce’te üst kategorilerin tasarımı gereği boş olduğuna dair yaygın inanış yanlış ve işin gerçek mekaniğini baştan sona okumakta fayda var — bakınız WooCommerce üst kategoride ürünler görünmüyor.
Gerçekten boş olan terimleri hızlıca bulmak için WP-CLI, yönetim panelinde tıklamaktan iyidir. wp term list varsayılan olarak hide_empty=false kullanır, dolayısıyla sayımı sıfır olan terimler çıktıda yer alır:
wp term list product_cat --fields=term_id,slug,count --format=csv | awk -F, '$3==0'Bu, stok durumundan bağımsız olarak yayımlanmış ürünleri sayan WordPress terim sayımını raporlar. Yalnızca içindeki her şey stok dışı olduğu için boş kalan bir kategori burada yine de bir sayı gösterir; mesele de bu: sonucu ön yüzle karşılaştırın.
Zamana bağlı kategoriler bir varsayılanı değil, bir kararı hak eder. Bir indirim kategorisi ya da mevsimlik bir koleksiyon meşru şekilde boşalır ve yayında kalıp bağlantı almaya devam eden boş bir sayfa, uykudayken bilinçli olarak noindex yapılmış bir sayfadan kötüdür. Yıl boyunca taranabilir kalıp kalmayacağına baştan karar verin — ona bağlantı vermeden önce kendi kendini boşaltan bir indirim kategorisinin mekaniğini anlamakta fayda var.
Neden 4: sayfalama ve filtre URL’leri taramayı yiyor#
Birçok mağaza kendi sorununu burada üretir. Katmanlı gezinmeye sahip bir WooCommerce arşivi, her kombinasyonda ve her biri taranabilir olacak şekilde ?filter_pa_colour=blue, ?min_price=20&max_price=50, ?rating_filter=4 ve ?orderby=price gibi URL’ler üretir. Her birinde bir düzine değer olan üç nitelik, her sırada birleştirilebildiğinde, tek bir katalogu işaret eden on binlerce URL demektir.
Google’ın faset gezinme için yayımladığı rehber, bu konuda genelde tekrarlanan tavsiyelerden daha nettir. O URL’lerin taranmasını istemiyorsanız öneri taramayı engellemektir: parametre kalıplarına robots.txt üzerinden bir disallow vermek ya da filtre durumunu, Google’ın genelde taramadığı ve dizine eklemediği bir URL fragmanında tutmak. Alternatifler Google’ın kendi tarifiyle daha zayıf — bir rel="canonical" zamanla canonical olmayan sürümlerin tarama hacmini azaltabilir ve rel="nofollow" yalnızca URL’ye işaret eden her bağlantı onu taşıyorsa işe yarar. Bir noindex etiketi de aynı yapısal zaafa sahiptir, çünkü etiket okunabilmesi için URL’nin yine de çekilmesi gerekir.
User-agent: *
Disallow: /*?*filter_
Disallow: /*?*min_price=
Disallow: /*?*max_price=
Disallow: /*?*rating_filter=
Disallow: /*?*orderby=Bunu yalnızca henüz dizine eklenmemiş URL’lere uygulayın. Filtre URL’leri bugün dizindeyse ve gitmelerini istiyorsanız önce noindex verin, Google’ın yeniden taramasını bekleyin, sonra engelleyin. Talebi yüksek birkaç filtre kombinasyonunun gerçekten dizine girmesini istiyorsanız Google’ın önerisi parametre sırasını tutarlı tutmak, standart & ayırıcılarını kullanmak ve bir kombinasyon sonuç döndürmediğinde nazik bir boş sayfa yerine 404 döndürmektir.
Sayfalama daha küçük ve daha basit bir konu. Bir kategorinin ikinci sayfası, birinci sayfaya işaret eden değil kendine referans veren bir canonical taşımalıdır; her sayfayı ilkine canonical’lamak, derindeki sayfalarda duran ürünleri keşiften gizler. Google rel="prev" ve rel="next" etiketlerini yıllar önce dizine ekleme sinyali olarak kullanmayı bıraktı, dolayısıyla sizi tutan şey bunların varlığı ya da yokluğu değil. Sayfalanmış URL’lerin dizine eklenmemiş görünmesi normaldir ve üzerlerindeki ürünler Google’ın taradığı bir yerden bağlantı aldığı sürece genellikle zararsızdır.
Yine de ölçüyü kaçırmayın. Tarama bütçesi büyük kataloglar için gerçek bir kısıttır, birkaç bin URL’lik bir mağaza için değil. Siteniz buysa kategorilerinizin eksik olmasının sebebi tarama bütçesi değildir ve yukarıdaki robots.txt çalışması bunu düzeltmez.
Neden 5: sitenizde kategoriye bağlantı veren hiçbir şey yok#
Discovered – currently not indexed durumunun olağan açıklaması budur. Kategori XML site haritanızda vardır, başka hiçbir yerde yoktur. Site haritası, URL’lerin var olduğuna dair bir ipucudur, önemli olduklarına dair bir gerekçe değil; gerekçe iç bağlantılardır. WooCommerce’te fark etmeden yetim kategori yaratmak kolaydır, çünkü bir kategorinin normalde görüneceği yerlerin çoğu boş terimleri varsayılan olarak gizler.
- Gezinme menüleri. Ürün kategorileri menülere otomatik olarak eklenmez. Bir kategori ne bir menüde, ne bir alt bilgi bloğunda ne de elle hazırlanmış bir açılış sayfasındaysa, site genelinde hiç bağlantısı olmayabilir.
- Kategori bileşenleri ve blokları. Ürün kategorileri bileşeni de karşılığı olan blok da boşları gizleme seçeneği sunar. Sayfa en son önbelleğe alındığında boş olan bir terim hâlâ o listede eksik olabilir.
- Breadcrumb’lar. Her ürün sayfasına kendi kategorisine giden bir bağlantı verirler ve bu, hacim olarak çoğu zaman bir kategorinin en büyük iç bağlantı kaynağıdır.
- Derinlik. Yalnızca iki üst kategoriyi geçerek ulaşılan üçüncü seviye bir kategori, mağaza sayfasından bağlantı alan bir kategoriye göre daha seyrek taranır.
Kategorileri toplu oluşturuyorsanız atlanan adım tam olarak budur. Site haritasında elli yeni terim, gezinmede hiçbiri: insanların sonra zayıf içeriğe yıktığı Search Console raporu tam olarak böyle çıkar. Kimsenin ulaşamadığı bir kategori, Google’ın tarama harcamayacağı bir kategoridir ve ızgaranın altına ne kadar metin yazarsanız yazın bu, ona verilecek bir bağlantının yerini tutmaz.
Neden 6: çift ürün URL’lerinden doğan canonical çakışmaları#
Settings → Permalinks → Product permalinks altında WooCommerce “Shop base with category” seçeneğini sunar; bu da /shop/jackets/waxed-cotton-jacket/ gibi ürün URL’leri verir. Bir ürün birden fazla kategoride duruyorsa kalıcı bağlantıya bunlardan yalnızca biri girer ve bu seçim tarihsel olarak belirsizdi. WooCommerce 10.5 ile birlikte seçilen şey, üst terim kimliğine göre bir sıralama yerine hiyerarşideki en derin kategoridir ve WooCommerce’in kendi canonical yönlendirmesi eski ürün URL’lerini 301 ile güncel olana taşır. İçinde %product_cat% geçen özel tabanlar da aynı şekilde etkilenir; Default ve düz Shop base yapıları etkilenmez.
Pratikteki sonucu, konunun ününün ima ettiğinden daha dardır. Bu bir ürün sayfası meselesidir ve bir kategori arşivinin dizinde neden olmadığını çok nadiren açıklar. Asıl etkilediği şey istikrardır: ürünleri yeniden kategorilendirmek URL’lerini sessizce yeniden yazıyorsa, yönlendirme zincirleri biriktirir ve eski yollara işaret eden iç bağlantıları kaybedersiniz. Tek bir sayfayı düzeltmek yerine ağacın tamamını yeniden düzenliyorsanız yönlendirmeleri bilinçli olarak ele alın — bu konu sıralamalarınızı kaybetmeden kategori yapınızı değiştirmek yazısında anlatılıyor.
Smart Categories nereye oturur, nereye oturmaz#
Açık konuşalım: Smart Categories for WooCommerce meta başlık ya da açıklama yazmaz, canonical ayarlamaz, noindex’i kontrol etmez, yönlendirme oluşturmaz ve yönetmez. Yukarıdaki altı nedenden hiçbiri onun çözdüğü bir şey değil. Etiketler için Yoast ya da Rank Math’i, yönlendirmeler için bir yönlendirme eklentisini kullanmaya devam edin.
İlgisi bundan daha dar ve üçüncü nedene bakıyor. Boş bir kategori bir SEO sorunundan çok bir bakım aksaklığıdır ve bir kategorinin hiç dizine girmemesinin en yaygın sebeplerinden biridir. Eklenti, gerçek bir product_cat terimine ya da bir ürün etiketine bir kural seti bağlar ve üyeliği güncel tutar: ürünler Active price, Sale price, Stock status, Stock quantity, Category, Tag ve Date created gibi alanlar üzerinden eşleştirilir — ücretsiz sürümde bunlardan otuz beş tane var — ve bu alanlar ALL OF, ANY OF ve NOT şeklinde iç içe gruplarda birleştirilir; eşleşen ürünler ve sayıları siz kaydetmeden önce gösterilir. Yeniden değerlendirme; ürün oluşturulduğunda veya güncellendiğinde, fiyat ya da stok değiştiğinde ve ayrıca günlük bir taramada çalışır; sayfa yüklenirken değil, arka planda Action Scheduler üzerinden. Yalnızca kendi oluşturduğu üyelikleri kaldırır, dolayısıyla elle yapılan atamalar korunur. Terim sıradan bir WooCommerce kategorisi olarak kalır; menüler, breadcrumb’lar ve terim sayımları tam olarak eskisi gibi davranır.
Bunun size kazandırdığı şey, içeriği bir ürünü en son kimin düzenlediğine göre değil bir kurala göre belirlenen bir kategori ve boş olanı üç ay sonra Search Console’da keşfetmek yerine tek bakışta okuyabileceğiniz canlı bir sayı listesidir. Bunun sınırını net söylemekte fayda var: bir terimi dolu tutmak tek bir iç bağlantı bile yaratmaz, dolayısıyla beşinci neden hâlâ sizin işiniz. Yalnızca dolaylı olarak yardımı dokunur; boş terimleri gizleyen bileşenler ve bloklar, dolu kalan bir kategoriyi listelemeye devam eder.

Risk ters yönde de işliyor. Pro sürüm, her nitelik değeri için ya da iki niteliğin her kombinasyonu için bir akıllı alt kategori üretir; bir mağazanın bir öğleden sonrada birkaç yüz yeni arşive kavuşması böyle olur. Bunların bir kısmı insanların gerçekten aradığı sayfalardır. Çoğu ise bu yazının baştan sona anlattığı, birbirinin neredeyse kopyası, zayıf ve yetim sayfalardır ve bunları toplu üretmek bedava bir kazanç değil, gerçek bir maliyettir. Talep olduğuna dair elinizde kanıt olan kombinasyonları üretin, onlara düzgün bağlantı verin ve geri kalanını noindex yapın — bu ödünleşme WooCommerce niteliklerini kategoriye çevirmeli misiniz yazısında ortaya konuyor.
Kısa özet#
Dizine girmeyen WooCommerce kategorilerinin çoğu bir teknik SEO arızası değildir. Bunlar kimsenin bağlantı vermediği, yan taraftaki kategoriden ayırt edilemeyen ürünler tutan ya da stok tükendiği ve bir varsayılan ayar onları sessizce dizinden çıkardığı için boş duran sayfalardır. Şu sırayla çalışın: durumu okuyun, yanıt başlıklarını okuyun, ürünleri wp-admin’de değil ön yüzde sayın, bağlantıları sayın, sonra kategoriyi kardeşleriyle karşılaştırın. Filtre ve sayfalama URL’leri en sona kalır ve yalnızca bunların önem taşıyacağı kadar büyük bir katalogda.
