WordPress Her Kategoriye Farklı Sidebar

Merhaba arkadaşlar, biraz ara vermiştim yazı işlerine, geçen gün bir arkadaş soru sordu onun için bu konuyu açtım. Hazır veya basit temalarda sidebar.php bulunur, bunun içinde şu kod olacaktır,

 
<?php if ( !function_exists('dynamic_sidebar') || !dynamic_sidebar('Sidebar Right') ) : ?><?php endif; ?>

Zaten bu kod yoksa sidebar yok demektir, neyse bu kodun birde function.php de aynı isimle oluşan karşılığı vardır, çünkü function.php ye koyduğunuz kod sayesinde bileşenler bölümü aktif olur ve sidebar çalışır.

//Sidebar
if ( function_exists('register_sidebar') ) {
register_sidebar(array(
'name' => 'Sidebar Right',
'before_widget' => '<div class="sidebar-widget wide-widget">',
'after_widget' => '</div>',
'before_title' => '<h3 class="sidebar-widget-title">',
'after_title' => '</h3>',
));
}

Bunlar varsıyalan sidebar ayarlarıdır, şimdi function.php deki yani yukarıdaki kodu kopyalamanız ve ismini değiştirmeniz gerekiyor, örneğin Sidebar Riht yerine kopyaladığınızın adı Sidebar Left veya Sidebar Footer gibi değiştirebilirsiniz, bu isimleri function.php de değiştirdiniz ancak bunları arayüzde yani sitede göstermek için aynı işlemi.

 
<?php if ( !function_exists('dynamic_sidebar') || !dynamic_sidebar('Sidebar Right') ) : ?><?php endif; ?>
<?php if ( !function_exists('dynamic_sidebar') || !dynamic_sidebar('Sidebar Left') ) : ?><?php endif; ?>
<?php if ( !function_exists('dynamic_sidebar') || !dynamic_sidebar('Sidebar Footer') ) : ?><?php endif; ?>

Bu kodu da çoğaltmanız gerekiyor, ve left olanı farklı sayfaya, footer olanı farklı sayfaya ekleyebilirsiniz, bunu kategoriler üstünde denemek istiyorsanız.

category.php yoksa archive.php yi açıyoruz, eğer temamızda zaten sidebar.php var ise category.php de veya archive.php de sidebar.php includesi vardır,

<?php include (TEMPLATEPATH . '/sidebar.php'); ?>

bunun gibi yukarıdaki varsayılan sidebardır,bu kodu ister silin isterseniz varsayılan kategori için tutun.

şimdi haber, blog, oyun, genel diye 3 kategorimiz var diyelim her kategori için farklı sidebar oluşturucaz.

Yukarıdaki işlemi anlattığım gibi çoğaltın Sidebar Left, Footer yapmıştık ya onun yerine Sidebar Oyun, Blog vs.. diye yaratın hem function.php de hemde arayüz kodumuzda bunları çoğaltın, şimdi category.php de gördüğümüz

<?php include (TEMPLATEPATH . '/sidebar.php'); ?>

yerine aşağıdaki kodu ekliyorsunuz.

<?php if ( is_category('blog') ) : ?>
<?php elseif ( is_category('oyun') ) : ?>
<?php elseif ( is_category('haber') ) : ?>
<?php else : ?>
<?php endif; ?>

Yukarıdaki kod ise blog için şunu oyun için bunu kullan demek istediğimiz kod yani her kategori için farklı birşey göstereceğimizi belirtiyoruz ve içine kategoriler için çoğalttığımız kodları yerleştiriyoruz, aşağıdaki gibi,

<?php if ( is_category('blog') ) : ?>
<?php if ( !function_exists('dynamic_sidebar') || !dynamic_sidebar('Sidebar Blog') ) : ?><?php endif; ?>
<?php elseif ( is_category('oyun') ) : ?>
<?php if ( !function_exists('dynamic_sidebar') || !dynamic_sidebar('Sidebar Oyun') ) : ?><?php endif; ?>
<?php elseif ( is_category('haber') ) : ?>
<?php if ( !function_exists('dynamic_sidebar') || !dynamic_sidebar('Sidebar Haber') ) : ?><?php endif; ?>
<?php else : ?>
<?php if ( !function_exists('dynamic_sidebar') || !dynamic_sidebar('Sidebar Genel') ) : ?><?php endif; ?>
<?php endif; ?>

İşlemimiz bukadar her kategori için farklı sidebar oluşturduk ve bu sidebarları istediğimiz kategorilerin içinde göstermiş olduk.