WordPress 3.0 Menülerini Kullanmak

WordPress 3.0 versiyonundan önce geliştirilmiş / yazılımış temaların büyük çoğunluğunda (neredeyse hepsinde) yeni menü sistemiyle gelen özellik desteği yok. Bunun için ben de dahil bazı arkadaşlarımız bunu şu anki temalarıyla kullanamıyorlar. Yeni geliştirilen temalarda bu olacaktır ama emek verdiğimiz temalarımızda bu özellik şimdilik yok. Yada bu yazıya kadar yoktu mu demeliydim :) Bu yazıyla sizlere temanıza nasıl yeni menü desteği sağlayacağınızı göstereceğim. Bu yazının sonunda bulacağınız resimlerle de desteklyeceğim. Şimdi geçelim menü sistemine.

Yeni WordPress menü sistemiyle birlikte önceden kullandığımız wp_page_menu ve wp_categories_menu özelliklerinin dışında kendi sıralamamıza ve düzenlememize göre ekelyeceğimiz wp_nav_menu olarak da bilinen bir fonksiyon girdi hayatımıza. Bunu kullanmak için önce temamıza bunun desteğini sağlamalı ve ardından menümüzü hazırlamalıyız. Bunu functions.php dosyasına birkaç ekleme yaparak ve menü sistemimizin çağrıldığı alanı düzenleyerek yapabiliriz. En basit yoldan, sizi sıkmadan bunu anlatmaya çalışacağım.

WordPress yönetim alanındaki Görünüm sekmesinden erişebileceğiniz Menüler sayfasıyla bu menülerimizi düzenleyebiliriz. Burada  bize küfür eder gibi (!) Temanızda menü desteği yok diyecektir. Bizde inatla temamıza bu desteği sağlayalım.

Destek sağlama kodu aşağıda.. Bu kodu temanızda bulunan functions.php dosyasına ekleyin. Yedeğini alın ha :). İşlemi bitirince dosyayı hemen kaydetmeyin.

// Temaya Menü Desteği //
add_theme_support( 'nav-menus' );

Bu temamıza menülerin desteğini sağladı. Ama menüleri kullanabilmek için hala eksik olan birşey var. Menü için alan açmalıyız. Hemen yukarıdaki kodun altına şunu da eklerseniz menüler sayfasına gittiğinizde bu küfür eder gibi karşımıza çıkan yazının yerine “Hangi menüyü kullanmak istersiniz efendim?” diye soran bir alanla karşılaşacaksınız. Ekleyin bu kodu.

register_nav_menu('anamenu', 'Ana Menü alanı');

Bu kodla birlikte Ana Menü alanı diye bir alan kaydetmiş olduk. Şimdi gönül rahatlığıyla dosyayı kaydedip sunucuya gönderebilirsiniz.

İlk aşama bitti. Geldik zurna ile vuvuzelanın çarpışmasına. Temamıza desteğimizi ekledik ama temayı kullanmak konusunda atmamız gereken bir adım daha var. O da temaya menüyü gösterecek alanı eklemek. Onun için genelde temaların menü alanları header.php içinde olduğundan, o dosyanın da yedeğini alarak düzenlemeye başlayın.

Aşağıdaki kodu siz menünüzün bulunduğu (wp_page_menu, wp_categories_menu) alana ekleyin. Ben de şu açıklamaları hazırlayayım.

<?php wp_nav_menu( array( 'theme_location' => 'anamenu', 'sort_column' => 'menu_order', 'fallback_cb' => 'wp_page_menu' ) ); ?>

Burada görebileceğiniz gibi yukarıda bahsettiğim wp_nav_menu özelliğini kullanıyoruz. Sonrasında theme_location ile bir önceki adımda kaydettiğimiz   alanın adını yazıyoruz. Burada dikkat etmeniz gereken rastgele bir menü değil, kaydettiğimiz alanın  adını çağırmamız. Menünüzü hazırlarken anlatacağım bunu. sort_column alanında menu dizilimi kullanıyoruz. Bu da listelemede düzenlenmiş görünüm sağlıyor. Burada en önemli ve can alıcı nokta eğer bir menü yapmayı unutursanız menü alanınızın boş kalmaması için ayarladığımız nokta. Bu wp_nav_menu ile birlikte gelen güzel bir özellik. fallback_cb ile menü yapmazsak wp_page_menu olan klasik sayfa menüsünü çağırıyoruz. Bu da bir nevi istepne (böyle yazıylıyordu sanırım) vazifesi görüyor. tema içine eklediğimiz kodları bitirdik. Eğer herşeyi düzgün ayarladıysanız sisteminizde menü eklemediğimizden şu an için sayfalar menüsü görünecektir. Hadi menümüzü oluşturalım.

WordPress yönetim alanına geçiş yapın. Bundan sonraki işlemlerimiz sürükle bırak tarzında olacak :). Görünüm sekmesindeki Menüler sayfasına geçiş yapın. Sol tarafta bulunan Tema alanlarında Temanız 1 menü destekliyor. Kullanmak istediğiniz menüyü seçinyazısını göreceksiniz. Ben size ne demiştim :). Şimdi öncelikle bir menü oluşturalım. Adını herhangi birşey yapın. Yani ne istiyosanız onu yazın. Sonra da en basitinden çalıştığını test etmek için sol alt tarafta bulunan sayfalardan Hepsini Seç butonuyla menüye ekleyin. Sonra sağ taraftaki menü alanından istediğiniz gibi sıralayın ve sol tarafta bize menü soran alanda yarattığınız menünün adını seçin. Menüyü kaydederek anasayfanıza bakın. Puff Merlin sitenize değneğiyle mi dokundu ne :)

Yeni menünüz eski temanızı daha efektif kılacak. Yakında Yeni WordPress ile gelen Post Type (Yazı Türleri) hakkında yazacağım. O yazıma da beklerim efendim… Resimler aşağıda…


12 thoughts on “WordPress 3.0 Menülerini Kullanmak”

  1. hocam eyv ama bir şey sorucam. horizontal olarak dizmek için menüleri ne yapmamız gerekiyor eski versiyonlardaki gibi yapılmıyor.

    1. Dostum dikey olarak menüleri sol veya sağ tarafta bulunan Widget (yan menü/bileşen) alanlarına ekleyebilirsin temanın özelliklerine göre. 3.0 ile gelen menüler için bileşenler alanında bir bileşen ve menüler alanında yan menü oluşturmak için araç var. Bunları kullanabilirsin.

  2. Hızır gibi yetişti bu yazı. 
    Gani gani teşekkürler. 

  3. Hocam yazınız için teşekkürler benim şöyle bir sıkıntım var. Wp-admin panelde görünüm altında menü kısmı yok nasıl geri getirebilirim. Teşekkürler

  4. hocam 3.8–tr_TR versiyonunu kullanıyorm ama admin panelde görünümün altında menüler diye bir bölümüm yok. başlangıç sayfasından
    Bileşenleri ya da menüleri yönet
    den menüleri tıklıyorum yine "Temanız menüleri ya da bileşenleri desteklemiyor." diyor.

    1. Yavuz WordPress sana zaten cevabı vermiş :D Temanın menü desteği ve bileşen desteği bulunmamakta. Temanın dizininde bulunan (genelde wp-content/themes/tema-adin) functions.php dosyası içindeki son ?> karakterinden önce tema desteği için add_theme_support( 'nav-menus' ); kodunu eklemelisin ki tema desteği açılsın. Yazıyı dikkatli okuyup adımları gerçekleştirirsen menü desteğini eklersin.

  5. söylediğiniz tüm adımları yaptım ve şu an “Temanız 2 menü destekliyor.” diyor. Ama sorun şu ki örneğin “Hakkımda” sayfasına tıkladığında 1. menü “İletişim” sayfasına tıkladığında ise 2. menünün görünmesini istiyorum, bunu nereden ayarlayacağım ?

    1. Bunu tam olarak nerede göstermek istiyorsun? Ana menü alanın mı değişsin istiyorsun? Ana menü değişmesin diyorsan bileşen alanından özel menü bileşenini kullanabilirsin, Jetpack eklentisi kuruluysa da bileşenin içine eklenen “Visibility” bölümünden sayfalara göre ayarlayabilirsin. Ana menü diyorsan da is_page() fonksiyonunu kullanabilirsin wp_nav_menu() fonksiyonundan önce

Comments are closed.