Bir kullanıcımızdan “Belirli bir kategorinin içeriklerini WordPress ana sayfadan hariç tutmak istiyorum. Bunun için nasıl bir yol izlemeliyim?” şeklinde bir soru aldık. WordPress’in esnek yapısı sayesinde, ana sayfadan belirli kategorileri hariç tutmak oldukça kolay. Bu işlem, sitenizin odak noktasını netleştirebilir, hassas içerikleri gizleyebilir veya sadece belirli temalara odaklanmanızı sağlar. Bu kılavuz ile bu işlemin nasıl yapılacağını farklı yöntemlerle açıkladık.
Hızlı yol: Belirli bir kategoriyi WordPress ana sayfadan gizlemek için aşağıdaki kodu functions.php‘ye ekleyebilirsiniz:function exclude_category_from_home($query) {
if ($query->is_home() && $query->is_main_query() && !is_admin()) {
$query->set('cat', '-5'); // '-5' yerine gizlemek istediğiniz kategori ID'sini yazın. Birden fazla için '-5,-7' gibi.
}
return $query;
}
add_action('pre_get_posts', 'exclude_category_from_home');
Belirli bir kategorinin yazılarını ana sayfadan kaldırmak, birçok web sitesi sahibinin karşılaştığı bir ihtiyaç. Örneğin:
- Odaklanmış İçerik Sunumu: Kişisel bloğunuzda “Günlük Notlar” gibi özel bir kategoriyi ana sayfadan hariç tutarak, ziyaretçileri daha profesyonel içeriklere yönlendirebilirsiniz.
- Gizlilik ve Erişim Kontrolü: Hassas konular içeren kategorileri (örneğin, üyelik gerektiren içerikler) gizleyerek, SEO’nuzu korurken kullanıcı gizliliğini artırabilirsiniz.
- SEO Optimizasyonu: Ana sayfayı aşırı kalabalık olmaktan kurtararak, yüklenme hızını artırır ve kullanıcı niyetini daha iyi karşılayabilirsiniz. Araştırmalara göre, ana sayfa yüklenme hızı sıralamaları doğrudan etkiliyor. Ayrıca, mobil öncelikli tasarımlarda ana sayfayı sadeleştirmek, kullanıcı tutma oranlarını yükseltiyor. Eğer sitenizde birden fazla kategori varsa ve ana sayfanız son yazıları gösteriyorsa, bu gizleme işlemi trafiğinizi optimize eder.
WordPress’te belirli kategorileri ana sayfadan kaldırmanın birkaç yolu var. Bunları kod tabanlı, eklenti tabanlı ve tema tabanlı olarak sınıflandırabiliriz. Seçiminiz, teknik becerinize ve site yapınıza göre değişebilir.
1. Kod ile Anasayfadan Kategori Hariç Tutma
Bu yöntem, WordPress’in çekirdek özelliğini kullanır ve en temiz çözüm. Resmi geliştirici belgelerine göre, pre_get_posts kancasını kullanarak sorguyu değiştirebiliriz. Bu işlem, veritabanı sorgusunu etkilemeden kategoriyi hariç tutar – SEO için ideal.
⚠️ İşlemlerden önce websitenizin bir yedeğini alın ve güncellemelerde silinmemesi için kodları eklemek için Child theme veya Code Snippets gibi bir eklenti kuıllanın.
Tek veya birden fazla kategori (ID ile) hariç tutmak için functions.php dosyasına aşağıdaki kodu ekleyin:
function exclude_category_from_home($query) {
if ($query->is_home() && $query->is_main_query() && !is_admin()) {
$query->set('cat', '-5'); // '-5' yerine gizlemek istediğiniz kategori ID'sini yazın. Birden fazla kategori için şu şekilde olacak '-5,-7'
}
return $query;
}
add_action('pre_get_posts', 'exclude_category_from_home');
- 📌 Eğer ana sayfa sadece belirli bir kategoriyi göstemek diğer tüm kategorileri gizlemek istiyorsanız, ID’nin başındaki – işaretini kaldırmanız yeterli (örneğin, -5 yerine 5 yazın). Böylece diğer kategoriler otomatik olarak anasayfadan hariç tutulacak ve belirttiğiniz ID’ye ait kategori içerikleri listelenecektir.
- 📌 WordPress kategori ID’sini nasıl bulurum? Kategoriler sayfasına gidin, kategoriye tıklayın ve URL’deki tag_ID’ye bakın.
⭐ WooCommerce shop sayfasında ürünleri veya product_cat terimlerini gizlemek için özel filtreler kullanılır veya WooCommerce’un “visibility / catalog” ayarlarından yararlanabilirsiniz. Resmi WooCommerce rehberi ve fonksiyon örnekleri bu konuda yardımcı olur. Örnek (product_cat hariç tutma, pre_get_posts ile):
function hide_product_category_on_shop( $q ) {
if ( ! is_admin() && $q->is_main_query() && ( is_shop() || is_post_type_archive('product') ) ) {
$tax_query = (array) $q->get('tax_query');
$tax_query[] = array(
'taxonomy' => 'product_cat',
'field' => 'slug',
'terms' => array( 'gizli-kategori' ),
'operator' => 'NOT IN',
);
$q->set( 'tax_query', $tax_query );
}
}
add_action( 'pre_get_posts', 'hide_product_category_on_shop' );
2. Eklenti ile Anasayfada Kategori Gizleme
Kodla uğraşmak istemiyorsanız, eklentilerden faydalanabilirsiniz. Bazı popüler seçenekler şunlar:
- Ultimate Category Excluder– front page, archive, feed, search için kategori seçip hariç bırakma.
- Eklenti Yükleyin: Yönetici panelinde “Eklentiler > Yeni Ekle”ye gidin. “Ultimate Category Excluder” aratın, yükleyin ve etkinleştirin.
- Ayarları Yapın: Eklenti ayarlarına gidin (genellikle Araçlar altında). Gizlemek istediğiniz kategoriyi seçin ve “Ana Sayfa” seçeneğini işaretleyin. Kaydedin.
- WP Hide Post / Hide Posts– yazı bazında görünürlüğü kontrol etme (home, category, feed, REST API vb).
- Search Exclude / SearchWP– arama sonuçlarından içerik hariç tutma (ana sayfaya etki etmez; ama arama sonuçlarını temiz tutmak isterseniz faydalı).
3. Tema Ayarları ile Anasayfadan Kategori Hariç Tutma
Genel adımlar (tema ayarları yolu – bütün temalar için ortak mantık):
- Yedek & staging: Canlı sitede değişiklik yapmadan önce yedek al veya staging kullan. (Her zaman.)
- Hangi bileşen anasayfayı oluşturuyor tespit et: Customizer (Appearance → Customize), Tema Builder, doğrudan bir sayfa (Pages → Edit with Elementor / Divi / Gutenberg), veya tema dosyası (
front-page.php,home.php). - Customizer / Tema Options → Blog / Posts / Homepage bölümünü aç. “Exclude categories”, “Query”, “Post Filter”, “Blog element” gibi seçenekleri ara. Eğer “kategori seç” veya “hariç tut” kutusu varsa buradan yönet. (Aşağıda popüler tema örnekleri var).
- Page builder kullanılıyorsa: İlgili modülü (Posts/Blog/Loop Grid) düzenle → Query / Content / Source sekmesine bak → Include / Exclude by Term (Category) veya Taxonomy seçeneğini kullan.
- Değişiklik sonrası: cache temizle (CDN, sayfa cache, object cache).
# Elementor (Elementor Pro – Posts / Loop Grid)
- Anasayfa Elementor ile yapılmışsa: sayfayı Edit with Elementor ile aç (veya Templates → Theme Builder → Home).
- Blog/Posts widget veya Loop Grid kullanıyorsan widget’ı seç.
- Content → Query (veya Query sekmesi) bölümüne git.
- Include / Exclude seçeneklerini görürsün: Exclude By → Term (Category) veya doğrudan kategori seçerek hariç tutma yap.
- Kaydet, cache temizle, ön yüzü kontrol et.
# Divi (Divi Builder / Divi Blog Module)
- Anasayfa Divi ile yapıldısa, Visual Builder ile sayfayı düzenle. Blog/Blog Module eklenmişse modül ayarlarını aç.
- Content → Post Count / Posts → Categories kısmında “Show only selected categories” veya benzeri bir filtreleme görebilirsin; bazı Divi eklentileri (Divi Blog Extras vb.) hariç tutma ve gelişmiş filtre sağlar.
- İstersen yalnızca görünmesini istediğin kategorileri seç; dolayısıyla dışarda kalanlar anasayfada görünmez (pratik olarak “hariç tutma” yerine “dahil etme” yöntemi).
- Kaydet, cache temizle, kontrol et.
# Avada (Blog Element / Recent Posts)
- Avada Layout kullanıyorsan Avada → Layouts / Fusion Builder içinde anasayfa elemanını (Blog Element / Recent Posts) bul.
- Blog element ayarlarında Categories / Exclude Categories gibi net bir alan bulunur. Hariç tutmak istediğin kategori(leri) işaretle.
- Değişiklikleri kaydet.
# Gutenberg – Query Loop (Blok temaları / Site Editor)
- Eğer anasayfa blok temasıyla ve Query Loop blokuyla yapıldıysa: Site Editor / Sayfa düzenleyicide anasayfayı aç.
- Query Loop blokunu seç → sağ kenar (block settings) → Query veya Filter kısmını aç.
- Bazı WP sürümlerinde veya tema/eklentilerde “Exclude Taxonomies” parametresi bulunur; bazı kurulumlarda bu özellik sınırlı olabilir (yani Query Loop her zaman “exclude” desteklemeyebilir). Bu yüzden blok ayarlarını dikkatle incele.
- Eğer blok ayarlarında “Exclude” yoksa: ya herhangi bir kategori dahil ederek ters mantıkla (sadece göstermek istediğin kategorileri seç) ya da blok/tema eklentisi (ör. Kadence Advanced Query Loop) kullanarak gelişmiş filtre ekle. (Kadence gibi blok setleri gelişmiş query parametreleri sunar).
# Astra / GeneratePress / Neve
- Bu hafif temalar bazen özünde anasayfada kategori hariç tutma seçeneği sunmaz; ama Astra Pro / tema özel modülleri veya site builder ile (Elementor, Beaver) birlikte kullanıldığında seçenekler ortaya çıkar. Astra dokümantasyonu blog/archive ayarlarını anlatır; fakat doğrudan “exclude categories from home” her zaman yoktur. Bu durumda ya snippet ya da eklenti çözümü gerekir.
- GeneratePress dokümanları ve topluluk örnekleri
pre_get_postssnippet’leriyle posts page’dan kategori hariç tutulmasını göstermekte (kodla yapılan yol).
Teknik & SEO Uyarıları
- Gizlemek ≠ noindex: Tema ayarlarıyla anasayfada göstermemek, içeriği Google’dan kaldırmaz. Eğer arama motorlarından da kaldırmak istiyorsan
noindexveya sitemap yönetimine bak. - RSS / REST API / sitemap: Bazı eklentiler ve temalar yalnızca ana sorguyu değiştirir; feed veya REST API’de içerik hâlâ olabilir. Eğer API/feed de etkilemek istiyorsan
is_feed()veya REST_REQUEST kontrollerini ekle. - Pagination & sticky-post: Tema modülünün pagination mantığını bozma riski vardır; page builder modüllerinde
offset/ignore_sticky_postsgibi ayarlar önemlidir. - Cache: Değişiklik yaptıktan sonra CDN ve sayfa cache temizlenmeli; aksi halde frontend anında değişmez.
- Performans: Çok sayıda koşul/metafield sorgusu eklemek slow sorgulara yol açabilir; mümkünse tema/module’un kendi query filtreleme mekanizmasını kullan.
WordPress’te belirli bir kategorinin içeriklerini ana sayfadan gizlemek, kod, eklenti veya tema ayarlarıyla kolayca yapılabilir. En etkili yöntem pre_get_posts kancası – ücretsiz ve hafif. Ayrıca, “Belirli Sayfalarda WordPress Eklentilerini Devre Dışı Bırakma” başlıklı kılavuzumuz da ilginizi çekebilir.
