Öncelikle merhabalar,
Bir sitem var ve sitede kategorileri kısa tutmak için bazı yöntemler arıyordum ve sonunda buradaki(
http://www.yakuphoca.com/varsayilan-...-ozellestirme/) makaleyi buldum. Sistemde küçük bir hata var. Örneğin ana kategoriye tıkladığımda o kategoriye gidiyorum; fakat diğer kategorilerde de alt kategoriler açılıyor. Bir kategoriye tıkladığımda o kategorinin alt kategorilerinin açılmasını istiyorum. Diğer kategorilerin alt kategorilerinin açılmasını istemiyorum. Kodlar aşağıdaki gibidir. Yardımlarınız için şimdiden teşekkürler.
function yakuphoca_kategori_bilesen_basligi_kontrol($title, $instance, $idbase) {
if ( $idbase == 'categories' ) {
global $yh_kategori_baslik;
$yh_kategori_baslik = '';
//Aktif kategorinin alt kategorilerini listeler
if ( strpos($title, 'aktifkat') !== false ) {
$yh_kategori_baslik = $title;
$aktifkat = get_category(get_query_var('cat'));
if ( $aktifkat->term_id ) {
//Kategorinin alt kategorileri var mı?
$children = get_terms( $aktifkat->taxonomy, array(
'parent' => $aktifkat->term_id,
'hide_empty' => 1 //yazısı olmayan kategorileri kontrol etme
) );
if($children) {
// alt kategorileri varsa aktif kategorinin adını başlık olarak yazdırılmasını sağla
return $aktifkat->name;
//aktif kategorinin adını başlık olarak belirler ancak isterseniz
//return $aktifkat->name . ' Kategorisi';
//ya da return $aktifkat->name . ' Sezonları'; şeklinde farklı başlıklar oluşturabilirsiniz
}else{
$title = 'altkat_'. $aktifkat->parent;
//Eğer aktif kategorinin alt kategorileri yoksa
//aktif kategorinin ana kategorisinin alt kategorilerini gösterir
}
}else{
$varsayilan = explode("_", trim($title));
if ($varsayilan[1] == '0') {
$title = 'anakat';
//bileşen başlığı için anakat_bileşen başlığı şeklinde yazın
}else{
$title = 'altkat_' . $varsayilan[1];
//eğer aktif bir kategori yoksa yani anasayfa görüntüleniyorsa
//aktifkat_xx şeklinde belirttiğiniz alt kategoriyi gösterir
}
}
}
//Sadece Ana Kategorileri Göstermesini sağla
//Bileşen başlığı için anakat_bileşen başlığı yazın
if ( strpos($title, 'anakat') !== false ) {
$yh_kategori_baslik = 'anakat';
//anakat_bileşen başlığı şeklinde belirtilmişse
$baslik = explode("_", trim($title));
if ($baslik[1]) {
return $baslik[1];
}else{
return 'Kategoriler';
}
}
//altkat_15 Şeklindeki Başlık İçin
//15 nolu kategorinin alt kategorilerini listeler
if ( strpos($title, 'altkat') !== false ) {
$yh_kategori_baslik = $title;
$altkategori = explode("_", trim($title));
$kategori = get_category($altkategori[1]);
return $kategori->name;
}
}
return $title;
}
add_filter('widget_title', 'yakuphoca_kategori_bilesen_basligi_kontrol', 10, 3);
function yakuphoca_kategorileri_ozellestir($args) {
global $yh_kategori_baslik;
if ( $yh_kategori_baslik ) {
if ( $yh_kategori_baslik == 'anakat' ) {
$args['parent'] = 0;
//Sadece ana kategorileri göster
}
if ( strpos($yh_kategori_baslik, 'aktifkat') !== false ) {
$aktifkat = get_category(get_query_var('cat'));
if ( $aktifkat->term_id ) $args['child_of'] = $aktifkat->term_id;
//Aktif kategorinin alt kategorilerini göster
}
if ( strpos($yh_kategori_baslik, 'altkat') !== false ) {
//altkat_xx şeklinde verilen xx ID'li kategorinin birincil kategorilerini göster
$altkategori = explode("_", trim($yh_kategori_baslik));
$kategori = get_category($altkategori[1]);
$args['child_of'] = $kategori->term_id;
$args['depth'] = 1;
}
}
return $args;
}
add_filter('widget_categories_args', 'yakuphoca_kategorileri_ozellestir');