WordPress 2.7 birçok güzel özellik yanında, yeni fonksiyonları da beraberinde getirdi. Bu fonksiyonlardan biri de sayfa listesini alıp, güzel bir menü yapmanızı sağlayacak wp_page_menu fonksiyonu. Tema yazarıysanız kesinlikle bu fonksiyonu öğrenmeniz gerek. Fonksiyonla ilgili burada güzel bir yazı var. İngilizcem yok diye üzülmeyin, yazımın devamında çevirisi var.
Fonksiyonun Genel Kullanımı
WordPress 2.7 tema yazarları için birçok güzel özellik sunuyor fakat bunlardan en faydalısının wp_page_menu() fonksiyonu olduğuna inanıyorum. Aslında birçok kişi böyle bir fonksiyonu bekliyordu. Fonksiyon wp_list_pages() fonksiyonunun bütün parametrelerini kullanabilmektedir.
Bu fonksiyondan önce kullandığımız wp_list_pages() fonksiyonu tema yaratırken bizlerin birçok kod yazmasına neden oluyordu.
Aşağıda wp_page_menu() fonksiyonunun genel bir kullanımını bulabilirsiniz:
- <?php wp_page_menu('show_home=Ana Sayfa&menu_class=sayfa-menu'); ?>
Bu kod Ana Sayfa'ya da bağlantı içeren sayfa listesini içine alan 'sayfa-menu' ID'si atanmış bir div oluşturur.
Kod aşağıdaki gibi bir çıktı veriyor:
[HTML]
[/HTML]
Üretilen bu kod, birçok CSS menüde kullanılan kodlama ile aynı, menüyü güzelleştirmek için geriye kalan iş CSS kodlamanıza kalmış.
Çıktıyı Değiştirmek
Eğer fonksiyonun çıktısını tema dosyalarına dokunmadan değiştirmek isterseniz, fonksiyon parametrelerini değiştiren wp_page_menu_args filtresini kullanabilirsiniz.
Örneğin, aşağıdaki kodu temanızın functions.php dosyasına eklerseniz menüye 'navigation' sınıfını atamış, Ana Sayfa'ya bağlantı eklememiş, alt sayfalardan 3 düzeyi göstermiş olursunuz.
- <?php
- add_filter('wp_page_menu_args', 'my_page_nav');
- function my_page_nav($args) {
- $args = array(
- 'show_home' => false,
- 'menu_class' => 'navigation',
- 'depth' => 3,
- //Diğer Parametreler
- );
- return $args;
- }
- ?>
Geriye Uyumluluk
Eğe bu fonksiyonu temanızda kullanmak istiyorsunuz ama WP'nin eski sürümleriyle de uyumlu olsun istiyorsanız, aşağıdaki kodu kullanmanız yeterli:
- <?php if(function_exists('wp_page_menu')) : ?>
- <?php wp_page_menu('show_home=Home&menu_class=page-nav'); ?>
- <?php else : ?>
- <div id="page-nav">
- <ul>
- <?php wp_list_pages('title_li='); ?>
- </ul>
- </div>
- <?php endif; ?>
Bu yazının kısa bağlantısı http://www.yakupgovler.com/?p=606.
Yazılarımı RSS aboneliği ile takip edebilir, yeni yazılarıma kolaylıkla ulaşabilirsiniz. Bunun için ise RSS adresimi kullanabilirsiniz.
Tarih: 23 Aralık 2008 Saat: 23:53
Yakup Öğretmenim, güzel çeviri için teşekkür ediyorum. wp 2.6.5 de denemeye çalıştım. Geçerli bir css kodu ayarlayamadığım için menüleri göremedim. Yardımcı olabilir misiniz? Çalışan bir örnek verebilirseniz sevinirim.
Saygılar sunarım.
Tarih: 23 Aralık 2008 Saat: 23:55
Sayın Hocam, yazımda da belirttiğim gibi bu fonksiyon WP 2.7 ile birlikte geliyor. Yani WP 2.6.5 sürümünde kullanamazsınız.
Tarih: 24 Aralık 2008 Saat: 00:32
Localde 2.7 ile denemeler yapayım. Teşekkürler.
Bir de temanızın single.php dosyasını yollamanız mümkün mü? Bende içerik alanı sizinki gibi sola dayalı değil epey içeride. Div lerden kaynaklı bir sorun galiba.
Tarih: 24 Aralık 2008 Saat: 00:41
single.php'ye gerek yok, zaten temamı çok fazla düzenlediğimden sizinkine uymayacaktır.
Yapmanız gereken çok basit, style.css dosyası içerisindeki
.entry {
float:right;
width: 438px;
}
ifadesini bulun.
.entry {
clear:both;
}
olarak değiştirin. İçerik alanınızda genişleyecektir. Olması gerekir.
Sonuçtan haberdar edin.
Tarih: 24 Aralık 2008 Saat: 00:58
Haklısınız genişledi. Bu kadar kolay mıydı?
Tarih: 24 Aralık 2008 Saat: 00:59
İşinize yaradığına sevindim. Evet bu kadar kolay. Böylece 480 pikselden biraz daha fazla bir alan elde etmiş oldunuz, öncekinde 438 idi.
Tarih: 24 Aralık 2008 Saat: 01:03
http://www.rasitozkardes.k12.tr/site/
2.7 test ettiğim sitemiz. Dediğiniz gibi alan genişledi.
Tarih: 27 Aralık 2008 Saat: 10:47
[...] wp_page_menu WordPress Özel Alan Fonksiyonları single_cat_title category_description get_category_parents get_category_link get_categories the_tags get_the_tags wp_tag_cloud get_the_category wp_update_post wp_insert_post wp_list_categories add_action Yazıyı Paylaş: Aşağıdaki simgeler kullanıcılarının web sitelerini paylaştığı ve yeni web sitelerini keşfettiği sitelere gider. [...]
Tarih: 20 Mart 2009 Saat: 03:03
Private link gösterimi konusunda baya bi uğraştım ama beceremedim. Herhangi bir private page'i header navigation'a eklemeyle ilgili yardımcı bir yol yok mudur.
eskisinde hallediyordum fakat wp_page_menu ile beceremedim..
Tarih: 20 Mart 2009 Saat: 03:06
wp_page_menu ile wp_list_pages arasında bir fark yok. Tek fark artık bu fonksiyonda ana sayfa için bağlantı ekleme olanağının bulunması, aynı parametrelerle bu fonksiyonu da kullanabilirsiniz.
Tarih: 09 Ekim 2009 Saat: 17:30
Değerli Yakup Hoca,
Wordpres yazılar kısmı için kategoriler olmasına karşın, sayfaalr kısmı için kategori belirleme imkanı bulunmamakta. Acaba bu hususta bir widget veya kod mevcut mu. Ben sitem de Sayfalar kısmına oldukça fazla belge ekledim ancak bunları kategorilere göre düzenlemek istiyorum. ilginiz için teşekkürler. Selamlar
Tarih: 10 Ekim 2009 Saat: 16:27
@ali duman, sayfaların kullanılma amacı kolay kolay değişmeyen, sabit bilgileri sunmaktır. Sayfalar bölümünü kategorilere ayırma gibi bir şansınız yok, yapabileceğiniz tek şey, her sayfa kategorisi için bir sayfa oluşturmak ve ilgili sayfaların ana sayfası olarak bu sayfayı göstermek. Kısaca ana sayfa, alt sayfa olayını kategori mantığıyla kullanmak.