Malum WordPress 3.0 sürümüyle bazı yenilikler de getirdi. Şüphesiz bunlardan en çok göze çarpanı menü özelliği. Tema yapımcıları için de sitelerini admin panelden kolayca düzenlemek isteyen WordPress kullanıcıları için de bu özellik bayağı bir iyi oldu diyebiliriz. Yalnız zaten kötü olan sql kullanımı nasıl etkiler bu menü olayı orası da muamma. Neyse efendim biz geçelim menü özelliğine:

Öncelikle temamızda menü özelliği kullanmak için funcitons.php dosyası içerisinde register_nav_menu fonksiyonuyla menüyü tanımlamız gerekiyor. Hemen örnek bir menü tanımlayalım:

<?php register_nav_menu( 'menu', 'Menümüz');   ?>

Dikkat ederseniz fonksiyon içerisine iki değişken yolladım. Bunlardan ilki menu. Bu kısım menümüzün adı ve slug olmalı. Yani link yapısında. Türkçe karater, boşluk vs içermemeli. İkinci kısım ise Menümüz. Bu da menünün açıklaması. Burada atış serbest. İstediğiniz gibi kullanabilirsiniz.

Her şey functions.phpde tanımlamakla olmuyor. Bir de bunu temamızda kullanacağımız yeri belirlemeli ve orada da wp_nav_menu fonksiyonu kullanmalıyız. Diyelim header.phpde kullanacağız. Açıyoruz header.phpmizi ve menüyü kullanacağımız yere

<?php wp_nav_menu(); ?>

fonksiyonu yerleştiriyoruz. Gördüğünüz gibi menü kullanım olayı basit. İki dakikada bir adet menü kullanıma hazır. Yalnız anahtar nokta sadece bir adet menü kullanıma hazır. (:

Birden Fazla Menü Kullanmak İstersek Nasıl Olur?

Güzel soru. Bu da en az tek menü kullanmak kadar basit. Bu işlemin iki yolu var aslında. Yine eskisi gibi functions.phpde register_nav_menu fonksiyonu istediğimiz kadar çaığrabiliriz. Diyelim ki 5 kere bunu çağırdık temamız 5 menü destekli olur. Yalnız register_nav_menu( ‘parametre_adi’, ‘açıklama parametresi’); fonksiyonu içerisindeki parametreleri değiştirmeyi unutmayın sakın.   Çoklu menü oluşturmanın bir başka yolu ise register_nav_menus fonksiyonu. Bu fonksiyon sayesinde 5 tane ayrı fonksiyon yazmadan 5 tane menü oluşturabiliriz. Karmaşık gelebilir ama kafanız karışmasın olay çok basit.

Misal register_nav_menu fonksiyonuyla 5 tane menü oluşturduğunuzu düşünelim. Yazacağınız kodlar şöyle olacaktı:

<?php
register_nav_menu('menu','Menü 1');
register_nav_menu('menu2','Menü 2');
register_nav_menu('menu3','Menü 3');
register_nav_menu('menu4','Menü 4');
register_nav_menu('menu5','Menü 5');
?>

Biraz uzun değil mi peki bunu tek fonksiyonla nasıl halledebiliriz? Aynen şöyle:

<?php
register_nav_menus(
array(
'menu'=>'Menü 1',
'menu2'=>'Menü 2',
'menu3'=>'Menü 3',
'menu4'=>'Menü 4',
'menu5'=>'Menü 5'
)
);
?>

Gördüğünüz gibi tek fonksiyonla 5 tane menü oluşturduk. Eğer biraz php biliyorsanız işlemi anlamanız o kadar da zor olmayacaktır. Fonksiyon içine dizi değerler yolladık tüm olay bu.
Tamam buraya kadar her şey normal. 5 tane menü tanımladığımızı düşünelim ve gidip admin paneli menüler kısmında menü isimleriyle birlikte menüleri de oluşturduğumuzu düşünelim. Tek menü kullanırken sıradaki işlem neydi? wp_nav_menu fonksiyonuyla menüyü çağırmak değil mi? Yalnız bizim 5 menümüz var. wp_nav_menu fonksiyonuyla hangi birini çağıracağız? Eğer önceki kullanım gibi temada kullanacağımız yere 5 kere

<?php wp_nav_menu ?>

fonksiyonunu yazarsak 5inde de ilk oluşturduğunuz menüyü görürsünüz. Bu sefer bunun içine parametre yollamamız lazım. Siz panelden menü oluştururken menüye bir isim veriyorsunuz değil mi? İşte o verdiğimiz isimler burada işimize yarayacak.

Uyarı!: Admin panelinden menü oluştururken verilen isimlerden bahsediyorum. Yani http://www.siteniz.com/wp-admin/nav-menus.php bu linkten oluşturduğunuz menüler.

Şimdi geldik admin panelden 5 tane menümüzü oluşturduk. Menü isimlerine ilyas, bat, site, blog, zoro dedik. Bunları temamızda yine wp_nav_menu fonksiyonuyla çağıracağız. Yalnız birden fazla menü olduğu için hangi menünü kullanılması gerektiğini fonksiyona bildirmemiz gerekli. Üstteki gibi fonksiyon içine dizi değer yollayacağız. Mesela ilyas adlı menünün kullanılacağı yere

<?php wp_nav_menu(array('menu'=>'ilyas'));?>

yazacağız ya da bat menüsünün kullanılacağı yere

<?php wp_nav_menu(array('menu'=>'bat'));?>

yazacağız.

WordPress menüler hakkında kaynak yetersizliği vardı sanırım. Dilim döndüğünce menü olayını açıklamaya çalıştım. Eğer takıldığınız yerler olursa yorum kısmından sorabilirsiniz. Son olarak unutmadan wp_nav_menu fonksiyonu içinde başka değerler de tanımlayabiliyorsunuz. Aşağıya fonksiyonların Codex sayfalarını ekliyorum detaylı bilgilere oradan ulaşabilirsiniz: