Öncelikle basit bir mantık yürütelim, bir kategorinin alt kategori olup olmadığını nasıl kontrol ederiz?
- Eğer incelediğimiz kategori alt kategori ise, bu kategorinin bir alt kategorisi (child) daha olmayacaktır.
- İncelediğimiz kategorinin üst kategorisi var mı diye kontrol ettiğimizde, ki bu işlem için get_category_parents fonksiyonu var, kategorinin üst kategorileri olması lazım. Sonuçta kategorimiz alt kategori mi diye bakıyoruz.
- Geçelim işlemlere.
Functions.php dosyanızı açıp şu satırları ekleyin:
<?php
# wpuzmani.com alt kategori kontrolü
function is_subcat() {
global $post;
$category = get_the_category();
$id = $category[0]->cat_ID;
$control = get_category_children($id);
if($control != "") {
return false;
} else {
$parents = get_category_parents($id, FALSE);
if($parents != "") {
return true;
} else {
return false;
}
}
}
?>
Fonksiyon ile Neler Yaptık ?
$category = get_the_category(); $id = $category[0]->cat_ID;
satırlarıyla, kategori id’sini aldık.
$control = get_category_children($id);
satırıyla, kategorinin alt kategorilerini bulmaya çalıştık.
if($control != "") {
return false;
}
satırlarıyla, eğer kategorinin alt kategori varsa false döndürmesini, yani sonuç döndürmemesini istedik.
$parents = get_category_parents($id, FALSE);
kodu ile, kategorinin üst kategorilerini (varsa) bir değişkene atadık.
if($parents != "") {
return true;
}
satırlarıyla, kategorinin üst kategorisi varsa yukarıda yaptığımız ilk kontrole dayanarak (yani alt kategorisi yoksa), true olarak yanıt göndermesini istedik. Yani sonuç döndürüyor.
else {
return false;
}
satırlarıyla da, hem alt kategorisi hem de üst kategorisi olmayan kategoriler için, false döndürülmesini istedik.
ÖRNEK: KODU NASIL KULLANIRIZ?
Bu kodu sitenizde şu şekilde kullanabilirsiniz:
sidebar.php yi açıp aşağıdaki kodu ekliyorsunuz:
<?php
if(is_subcat()) {
/* Eğer yazı alt kategori içindeyse gösterilecek içerik */
} else {
/* Eğer yazı alt kategori de değilse gösterilecek içerik */
}
?>
Yazıyı okuduğunuz için teşekkür ederim.
Yukarıdaki kodlar tamamen tarafımdan yazılmıştır


“WordPress Alt Kategori Kontrolü II” için 12 Yorum var
Merhaba,
Konuyu şans eseri ziyaret ettim diyebilirim ama bir nevide gökte ararken yerde buldum gibi oldu. Fakat ben olayı biraz tersten incelemek istiyorum.
Alt kategorisi varsa değilde üst kategorisi X ise şeklinde nasıl yapılabilir?
Ör:
Sayfada X adına bir kategori var ve altında da Xa, Xb şeklinde alt kategorileri var.
Ben bu Xa, Xb kategorilerinde herhangi bir post ziyaret edildiğinde bunların ana X kategorisi altındaki kategorilerdeki post lar olduğunu anlayıp ona göre sayfamda bir eklentiyi göstermek yada göstermemek istiyorum.
Bu konuda örnek bir fonksiyon ve sayfa içi kodu konusunda yardımcı olabilirmisiniz?
Yorumum denetim için beklerken tekrar okudumda yeterince açıklayıcı olamadığıma kanaat getirdim.
Daha somut bir örnekle anlatmaya çalışacağım.
Ör:
İki tane birbirinden bağımsız kategorim var.
Biri AHMET olsun, diğeri MEHMET olsun.
Ben AHMET ve alt kategorilerindeki post larda “hebelübe” diye bişi göstermek istiyorum. Fakat “hebelübe” yi single.php içine eklediğimde kategorisi ne olursa olsun tüm sayfalarda gözüküyor.
Oysaki AHMET ve alt kategorilerinde gözükmesini, MEHMET ve alt kategorilerinde ise gözükmemesini istiyorum.
Bu sebeplede sadece üst kategorisi AHMET ve AHMET in altındaki tüm alt kategorilerilerdeki postlarda bunu görünür yapmak için kontrole ihtiyacım var.
Sanırım bu şekilde daha anlaşılır oldu.
sağolasın..
süpersin saol
harika bir paylaşım oluş. sağol.
Merhabalar, yazınız çok güzel olmuş, teşekkürler. Sormak istediğim soru şu diyelimki bir yazının kategorisi alt kategori olarak işaretlenmiş, ben bu yazının title’ında yazı başlığı I alt kategori adı I üst kategori adı olarak nasıl yapabilirim?
güzel anlatım olmuş , ellerinize sağlık.
ArkadasLar yapan var mi ona Gore ugrasaLim.
Ben test ederek ekliyorum hepsini
http://www.wpuzmani.com/wordpress-ile-alt-kategori-kontrolu/
bu konu işinize yarayacaktır.
[php]<?php if(is_subcat($kategori_idsi)){ echo “altta kalanın canı çıksın”; } else { echo “altta kalan yok”; } ?>[/php]
şeklinde kullanabilirsiniz.
semih bey yazmış olduğunuz kodda şunu yapabiliyormuyuz .
alt kategorisi varsa (bunu yaz) yoksa (bunu yaz) yada nasıl yapabiliriz semih bey
teşekkürler