23 Aralık 2008

WordPress 2.7'de wp_page_menu Fonksiyonu

WordPress Yorum Ekle

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:

  1. <?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.

  1. <?php
  2. add_filter('wp_page_menu_args', 'my_page_nav');
  3.  
  4. function my_page_nav($args) {
  5.     $args = array(
  6.         'show_home' => false,
  7.         'menu_class' => 'navigation',
  8.         'depth' => 3,
  9.               //Diğer Parametreler
  10.     );
  11.     return $args;
  12. }
  13. ?>

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:

  1. <?php if(function_exists('wp_page_menu')) : ?>
  2.     <?php wp_page_menu('show_home=Home&menu_class=page-nav'); ?>
  3. <?php else : ?>
  4.     <div id="page-nav">
  5.         <ul>
  6.             <?php wp_list_pages('title_li='); ?>
  7.         </ul>
  8.     </div>
  9. <?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.


“WordPress 2.7’de wp_page_menu Fonksiyonu” yazısı için 12 Yorum

Bu yazıya yapılan yorumları dilerseniz, ( RSS 2.0 ) beslemesini kullanarak takibe alabilirsiniz.

  1. raozkardes dedi ki:

    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.

  2. Yakup Gövler dedi ki:

    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.

  3. raozkardes dedi ki:

    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.

  4. Yakup Gövler dedi ki:

    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.

  5. raozkardes dedi ki:

    Haklısınız genişledi. Bu kadar kolay mıydı?

  6. Yakup Gövler dedi ki:

    İşinize yaradığına sevindim. Evet bu kadar kolay. Böylece 480 pikselden biraz daha fazla bir alan elde etmiş oldunuz, öncekinde 438 idi.

  7. raozkardes dedi ki:

    http://www.rasitozkardes.k12.tr/site/
    2.7 test ettiğim sitemiz. Dediğiniz gibi alan genişledi.

  8. WordPress Fonksiyon Listesi · Yakup Gövler'in Not Defteri dedi ki:

    [...] 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. [...]

  9. Klapej dedi ki:

    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..

  10. Yakup Gövler dedi ki:

    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.

  11. ali duman dedi ki:

    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

  12. Yakup Gövler dedi ki:

    @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.