En çok ihtiyaç duyduğunuzda güvenilir WordPress eğitimleri.
WordPress Başlangıç Rehberi
WPB Kupası
25 Milyon+
Eklentilerimizi kullanan web siteleri
16+
Yıllık WordPress deneyimi
3000+
Uzmanlardan WordPress eğitimleri

WordPress Temalarınızda Menü Açıklamaları Nasıl Eklenir

WordPress menü sistemi, menü öğelerine açıklamalar ekleyebileceğiniz yerleşik bir özelliğe sahiptir. Ancak, bu özellik varsayılan olarak gizlidir. Etkinleştirildiğinde bile, bazı kodlar eklenmeden görüntülenmeleri desteklenmez. Çoğu tema, menü öğesi açıklamaları düşünülerek tasarlanmamıştır. Bu makalede, WordPress'te menü açıklamalarını nasıl etkinleştireceğinizi ve WordPress temalarınıza menü açıklamalarını nasıl ekleyeceğinizi göstereceğiz.

WordPress temalarında menü açıklamları nasıl eklenir

Not: Bu eğitim, HTML, CSS ve WordPress tema geliştirme konusunda yeterli bilgiye sahip olmanızı gerektirir.

Menü Açıklamaları Ne Zaman ve Neden Eklemek İstersiniz?

Bazı kullanıcılar, menü açıklaması eklemenin SEO'ya yardımcı olacağını düşünüyor. Ancak, bunları kullanmak istemenizin ana nedeninin sitenizde daha iyi bir kullanıcı deneyimi sunmak olduğunu düşünüyoruz.

Açıklamalar, ziyaretçilere bir menü öğesine tıkladıklarında ne bulacaklarını anlatmak için kullanılabilir. İlgi çekici bir açıklama, daha fazla kullanıcının menülere tıklamasını sağlayacaktır.

Menü Açıklamaları

Adım 1: Menü Açıklamalarını Açın

Görünüm » Menüler'e gidin. Sayfanın sağ üst köşesindeki Ekran Seçenekleri düğmesine tıklayın. Açıklamalar kutusunu işaretleyin.

Enabling menu descriptions in WordPress

Bu, menü öğelerinizde açıklamalar alanını etkinleştirecektir. Şöyle ki:

Menü öğelerine açıklama alanı eklendi

Now you can add menu descriptions to items in your WordPress menu. However, these descriptions will not yet appear in your themes. To display menu descriptions we will have to add some code.

Adım 2: Walker sınıfını ekleyin:

Walker sınıfı WordPress'teki mevcut sınıfı genişletir. Temel olarak menü öğesi açıklamalarını görüntülemek için bir kod satırı ekler. Bu kodu temanızın functions.php dosyasına ekleyin.

class Menu_With_Description extends Walker_Nav_Menu {
	function start_el(&$output, $item, $depth, $args) {
		global $wp_query;
		$indent = ( $depth ) ? str_repeat( "\t", $depth ) : '';
		
		$class_names = $value = '';

		$classes = empty( $item->classes ) ? array() : (array) $item->classes;

		$class_names = join( ' ', apply_filters( 'nav_menu_css_class', array_filter( $classes ), $item ) );
		$class_names = ' class="' . esc_attr( $class_names ) . '"';

		$output .= $indent . '<li id="menu-item-'. $item->ID . '"' . $value . $class_names .'>';

		$attributes = ! empty( $item->attr_title ) ? ' title="' . esc_attr( $item->attr_title ) .'"' : '';
		$attributes .= ! empty( $item->target ) ? ' target="' . esc_attr( $item->target ) .'"' : '';
		$attributes .= ! empty( $item->xfn ) ? ' rel="' . esc_attr( $item->xfn ) .'"' : '';
		$attributes .= ! empty( $item->url ) ? ' href="' . esc_attr( $item->url ) .'"' : '';

		$item_output = $args->before;
		$item_output .= '<a'. $attributes .'>';
		$item_output .= $args->link_before . apply_filters( 'the_title', $item->title, $item->ID ) . $args->link_after;
		$item_output .= '<br /><span class="sub">' . $item->description . '</span>';
		$item_output .= '</a>';
		$item_output .= $args->after;

		$output .= apply_filters( 'walker_nav_menu_start_el', $item_output, $item, $depth, $args );
	}
}

Adım 3. wp_nav_menu'de Walker'ı Etkinleştirme

WordPress temaları menüleri görüntülemek için wp_nav_menu() fonksiyonunu kullanır. Ayrıca yeni başlayanlar için WordPress Temalarına Özel Gezinme Menüleri Nasıl Eklenir konusunda bir eğitim yayınladık. Çoğu WordPress teması menüleri header.php şablonuna ekler. Ancak, temanızın menüleri görüntülemek için başka bir şablon dosyası kullanmış olması mümkündür.

Şimdi yapmamız gereken, temanızda (büyük olasılıkla header.php'de) wp_nav_menu() fonksiyonunu bulmak ve şu şekilde değiştirmektir.

<?php $walker = new Menu_With_Description; ?>

<?php wp_nav_menu( array( 'theme_location' => 'primary', 'menu_class' => 'nav-menu', 'walker' => $walker ) ); ?>

İlk satırda, daha önce functions.php dosyasında tanımladığımız walker sınıfını kullanması için $walker değişkenini ayarlıyoruz. İkinci kod satırında, mevcut wp_nav_menu argümanlarımıza eklememiz gereken tek ek argüman 'walker' => $walker'dır.

Adım 4. Açıklamaları Biçimlendirme

Daha önce eklediğimiz walker sınıfı, öğe açıklamalarını şu kod satırında görüntüler:

$item_output .= '<br /><span class="sub">' . $item->description . '</span>';

Yukarıdaki kod, menü öğesine bir `
` etiketi ekleyerek satır sonu ekler ve ardından açıklamalarınızı `sub` sınıfına sahip bir span içine alır. Şöyle ki:

<li id="menu-item-99" class="menu-item menu-item-type-post_type menu-item-object-page"><a href="http://www.example.com/about/">About<br /><span class="sub">Who are we?</span></a></li>

Açıklamalarınızın sitenizde nasıl görüneceğini değiştirmek için temanızın stil sayfasına CSS ekleyebilirsiniz. Bunu Twenty Twelve üzerinde test ettik ve bu CSS'yi kullandık.

.menu-item {
border-left: 1px solid #ccc;
}

span.sub { 
font-style:italic;
font-size:small;
}

Bu makaleyi faydalı bulacağınızı ve temanızda menü açıklamalarıyla harika görünen menüler oluşturmanıza yardımcı olacağını umuyoruz. Sorularınız mı var? Aşağıdaki yorumlarda bırakın.

Ek Kaynaklar

WordPress Navigasyon Menüleri Nasıl Stil Verilir

Belirli WordPress Menülerine Özel Öğe Ekleme

Bill Erickson’ın Açıklamalı Menüler Sınıfı

Açıklama: İçeriğimiz okuyucu desteklidir. Bu, bazı bağlantılarımıza tıklamanız durumunda komisyon kazanabileceğimiz anlamına gelir. WPBeginner'ın nasıl finanse edildiğini, neden önemli olduğunu ve bize nasıl destek olabileceğinizi görün. İşte editöryal sürecimiz.

Nihai WordPress Araç Seti

Araç Kitimize ÜCRETSİZ erişim kazanın - her profesyonelin sahip olması gereken WordPress ile ilgili ürün ve kaynaklardan oluşan bir koleksiyon!

Okuyucu Etkileşimleri

51 CommentsLeave a Reply

  1. In PHP 8.0 and higher this with throw a critical error.

    Bu satırı bulmanız gerekiyor:
    function start_el( $output, $item, $depth, $args ) {

    Changing that line to the following should make the error disappear:
    function start_el( &$output, $item, $depth = 0, $args = array(), $id = 0 ) {

    • PHP 8 kullananlar için bunu paylaştığınız için teşekkür ederiz.

      Yönetici

  2. WordPress Temalarımda Menü Açıklamaları Eklemek İçin, bu blogun 1. ve 2. adımlarını yaptım ancak 3. adımdan sonra ilerleyemedim ve toplam değişikliği gerçekleştiremedim.

    • If you cannot find the function in your theme, we would recommend reaching out to your specific theme’s support and they should be able to assist.

      Yönetici

  3. Merhaba,
    Max Mega Menu'da ürün kategorisi açıklamasını nasıl devre dışı bırakabilirim?
    Zaten Mega Menu > Genel Ayarlar'a gittim ve Menü Öğesi Açıklamaları'nı devre dışı olarak ayarladım ancak sorun devam ediyor.

    • You would want to reach out to the plugin’s support and they would be able to assist with the setting not working correctly

      Yönetici

  4. Hello.. Please Help..
    How to add title category, not using title category description ?

  5. Harika İpucu ama menü açıklamasında html etiketlerini desteklemiyor. Bunu bilen var mı?

    Teşekkürler

  6. Merhaba Millet,

    Açıklamada html etiketlerine izin vermenin bir yolu var mı?
    remove_filter(‘nav_menu_description’, ‘strip_tags’);
    bu benim için çalışmıyor.

    • @Iryna: Kodunu bir yere, örneğin pastebin.com'a yapıştırabilir misin?
      remove_filter()'ı çağırdığın yer, çalışıp çalışmayacağını belirleyecektir – add_filter() çağrısından sonra çağrılmalıdır.
      wp_nav_menu() çağrısından hemen önce çağırmak işe yarayabilir.

  7. teşekkürler... işe yaradı. ancak menü açıklamasında html etiketlerini desteklemiyor.

  8. Zaten takmaya hazır olabilir mi? Bu hack "Twenty Twelve Sürüm: 1.5" temasıyla nasıl çalışacak?
    ? Ve tıpkı wpml eklentisi gibi mi?

  9. Teşekkür ederim, bu gerçekten hızlı resmi almak için kopyala yapıştır yapmak çok yardımcı oldu.

  10. Selam, walker sınıfını functions.php'ye ekledim ancak genesis temasında wp_nav_menu'yu bulamıyorum. Neyi kaçırıyorum? Ne yapacağımı hiç bilmiyorum!?!

  11. Çok iyi açıklıyorsunuz – ayrıntılı ve net. 1 dakika ve menü öğeleri açıklamaları iyi. Teşekkürler!

  12. Bu eğitim için çok teşekkür ederim. Bana tavsiye edildi ve istediğim değişiklikleri yapmak için mükemmel bir şekilde işe yaradı. Ancak, bu değişiklikleri yaparken, açılır alt öğe menülerimi kaybettim. Kod değişikliğinde bunu neyin etkilediği hakkında bir fikriniz var mı?

    Zamanınız ve öğretici için teşekkürler

    • Bu bir CSS sorunu gibi görünüyor, daha spesifik olamadığımız için üzgünüz. Hata ayıklamak için Google Chrome'un geliştirici araçlarını kullanmayı deneyin.

      Yönetici

  13. I have implemented the menu descriptions and it worked great. Now my client is asking for a line break within one of the descriptions. I have tried putting a carriage return and inserting a tag into the description field through the admin. It doesn’t appear in the front end. WP removes these edits. Is there a way to remedy this?

  14. Great tutorial guys, just want to know how to implement this on a custom menu displayed using the Custom Menu widget?

  15. Teşekkürler! Yıllardır WordPress üzerinde çalışıyorum ve bunu daha önce hiç duymamıştım. Çalıştığım sitede çok gereksiz oldukları için açıklamaları kaldırmak istiyordum. Nereden geldiklerini her yerde aradım.

    Oh joy!

  16. works!

    ancak php 5.4 için start_el fonksiyonunun wp walker argümanlarını eşleştirmeniz gerekecek:

    function start_el( &$output, $object, $depth = 0, $args = array(), $current_object_id = 0 )

    ve $item'ı $object ile değiştirin.

  17. Mükemmel. Bu, bir sitede işimi bitirmem gereken şeydi. CSS ile bazı sorunlar yaşadım ama sonunda çözdüm ve çalıştırdım. Harika makaleler için teşekkürler.

  18. Aynı şeyi yaratmam gerekiyordu ve tamamen kaybolmuştum.

    Bu işi halletmek için bazı aptalca şeyler yapmayı planlıyordum.

    Tanrı'ya şükür bu gönderiyi buldum ve zamandan ve stresten kurtuldum!

    Bu siteyi çok seviyorum, çok şey öğrendim.

    Burada en kolay şeyleri gösterdiğiniz için çok teşekkür ederim.

    • Span etiketi alt menülerde de görünüyor.

      Orada görünmüyor ama çok garip görünmesine neden olan o kadar yer kaplıyor.

      bunun için bir çözüm var mı??

  19. Bu gerçekten harika bir eğitim ve bunun Thesis 1.8.5'te işe yarayıp yaramayacağını merak ediyordum. Eğer yaramazsa, bir tane sağlayabilirseniz harika olur. Kesinlikle bunu yaymanıza yardımcı olacağım. Beğendim!

  20. I followed your tutorial and added description to my menu. Thanks! However, when I am in mobile mode menu converts into dropdown menu and menu title and description are connected. For example, if my menu item is “about” and description “more about me”, the mobile version shows “aboutmore about me”. Is there a way to fix this?

    • Aynı sorunu yaşadım. Yaptığım şey şu.

      Bunu değiştirdim:
      $description = ! empty( $item->description ) ? ‘<span>’.esc_attr( $item->description ).'</span>’ : ”;

      Buna:
      $description = ! empty( $item->description ) ? '
      '.esc_attr( $item->description ).'' : '';

      En iyi çözüm olduğundan emin değilim ama benim için işe yaradı.

      • Teşekkürler beyler, SVET ve DAVID'in mobil menü ile yaptıklarına rastladım.
        Kod, değişikliğimi değiştirdi, benimki sadece tire ayırıcı ile bir span eklemekti ve masaüstü sorgumda gereksiz olduğu için onu bastırdım.

        $item_output .= ‘ – ‘;

        Yalnızca Masaüstü Sorgumda span'ı display none olarak ayarlayın;
        @media only screen and (min-width: 740px) {
        header #submenu li span.dash { display:none; }

        Umarım yardımcı olur, sorunumu güzelce çözdü.

  21. Harika bir yazı. Daha önce bunu araştırmaya çalıştım ama bulduğum önceki talimatlar bu kadar kolay takip edilemiyordu. functions.php kodunu ekleyebildim, kullandığım tema için farklı olan ancak anlaşılır olan walker sınıfımı başlık dosyamda nasıl değiştireceğimi anladım ve yaklaşık 15 dakika içinde işleri yoluna koydum.

    Eklemek isteyebileceğiniz bir nokta, :last-child özelliğini kullanarak son menü öğesinde sağ kenarlığı nasıl dahil edeceğinizdir.


    .menu-item:last-child { border-right: 1px solid #ccc; }

  22. Walker_Nav_Menu'yu genişletmek yerine, bir filtre sağlansaydı güzel (ve daha kolay) olurdu, örneğin:
    Çekirdek kod şöyle olsaydı:
    $item_output .= apply_filters( ‘walker_nav_menu_description’, $item->description);

    O zaman özel filtre fonksiyonu sadece şunu içerecektir:
    return "" . $description . " ";

Cevap Bırakın

Yorum bırakmayı seçtiğiniz için teşekkürler. Lütfen tüm yorumların yorum politikamıza göre denetlendiğini ve e-posta adresinizin YAYINLANMAYACAĞINI unutmayın. Lütfen isim alanında anahtar kelime KULLANMAYIN. Kişisel ve anlamlı bir sohbet edelim.