Menü Ekleme

Menu bir web sitesi için olmazsa olmaz dediğimiz bileşenlerden bir tanesidir. Doğal olarak, WordPress tema için de bu böyledir

Wordpress için tema yaparken admin paneline menu eklemek oldukça kolay.

Mantıktan bahsetmek gerekirsek öncelikle fonsiyonlar kısmında menuyu admin paneline çağıracağız. Böylece artık admin panelinde menu oluşturma şansımız olacak.

Sonraki işlemimiz. Menuyu temamızda istediğimiz yerde göstermek.

Yani iki işlemimizi yazmak gerekirse:

  • Menüyü admin paneline getir.
  • Menüyü tema'da istediğimiz yerde göster.

Konfüçyüs'un da dediği gibi

Bir kişiye iyilik yapmak istiyorsan ona balık verme, balık tutmayı öğret.

Bu felsefeden yola çıkarak, direk kodu yazmak yerine nasıl bir yol izlediğimden bahsetmek istiyorum.

Öncelikle ne istiyorum?
Menüyü admin paneline getirmek.

Bununla ilgili araştırma yapalım. Favori arama motorunuzda

Bu arada bu aralar benim favori arama motorum; duckduckgo.com. duckduckgo ile İlgili yazıma bakabilirsiniz.

Wordpress tema menuyu admin paneline getirmek diye aratırsanız. Bu konuyla cevaba ulaşma şansınız oldukça yüksek, eğer cevap bulamazsanız. Forumlogs.com'da veya başka bir yere sorup topluluktan yardım alabilirsiniz, yeter ki ne istediğinizi bilin.

İngilizce olarak araştırma yaptığınızda ise yardım bulmama şansınız çok daha aza inmektedir.

Önerim eğer İngilizce biliyorsanız, İngilizce araştırmanızı yapın sonuca ulaştığınızda bunu Türkçe ile anlatan bir yazıyı ister forumlogs.com'da isterseniz kendini sitenizde veya herhangi bir yerde bunu paylaşın. Bu sayede ülkemize en güzel katkıyı sağlayacağımızı düşünüyorum.

Konuya tekrar geri dönersek. Menu eklemek ile ilgili en geniş kapsamlı açıklama wordpress'in resmi el kitabın var.

https://developer.wordpress.org/themes/functionality/navigation-menus/

function register_my_menus() {
  register_nav_menus(
    array(
      'header-menu' => __( 'Header Menu' ),
      'footer-menu' => __( 'Footer Menu' )
     )
   );
 }
 add_action( 'init', 'register_my_menus' );

Neler yaptığımızı açıklamak gerekirse:

  1. register_mymenus bir fonksiyon yazdık isterseniz Türkçe olarak menuleri_kaydet adında bir fonsiyon da yazabilirsiniz.
  2. Wordpress'in register_nav_menus adlı fonsiyonunu kullanarak ekleme işlemimizi yaptık. register_nav_menus parametre olarak bir tane array alıyor, bu arayin sol kısmı slug mantığı gibi düşünebiliriz sağ tarafta ise admin menu panelinde gözükmesini istediğimizi yazıyoruz.
  3. Daha sonra add_action fonsiyonu init fonsiyon_ismi olarak iki parametreyi yazıyoruz. init'in görevi initialize yani başlatmak. Diğeri ise başlatmak istediğimiz fonsiyonun adı

İlk aşama bitti wordpress admin paneline gittiğimizde görünüm-> menuler kısmının geldiğini göreceğiz tıkladığımızda ise karşımıza tanımladığımız menuler isimleri ile gelmiş olmalı.

Öncelikle Menu oluşturmadıysanız bir menu oluşturun ve sonra bu menuye atamak istediğiniz görüntü yerini atayınız.

Şöyle olması gerekli

Menüyü tema'da istediğimiz yerde göster.

Şimdi sıra geldi menüyü tema'da istediğimiz yerde göstermeye

header.php'ye gelelim

<?php wp_nav_menu(array('theme_location' => __( 'header-menu' ))); ?>

wp_nav_menu'de dikkat etmemiz gereken yer header-menu kısmı bu kısmı biz tanımlamıştık ve buna iki tane sayfa ekledik şimdi sayfaların burada göstermesini istediğimiz için header-menu seçtik.

header.php dosyamızın tamamı

<!DOCTYPE html>
<html lang="tr">
    <head>
        <title>Forumlogs.com teması başlığı</title>
        <meta charset="UTF-8">
        <meta name="viewport" content="width=device-width, initial-scale=1">
        <?php wp_head(); ?>

    </head>
    <body>

        <?php wp_nav_menu(array('theme_location' => __( 'header-menu' ))); ?>

   <footer>
       Forumlogs.com teması
   </footer>

    <?php wp_nav_menu(array('theme_location' => __( 'footer-menu' ))); ?>

     <?php wp_footer(); ?>
    </body>
</html>

Eklediğimizde footer'da menu'nun geldiğini göreceğiz ama bir dakika bir footer için özel menu hazırlamamıştık ki?

Varsayılan olarak, belirtilen menü veya konum bulunamadığında WordPress
ilk boş olmayan menüyü görüntüler veya seçilen özel menü olmadığında bir sayfa menüsü oluşturur.

Bunu önlemek için theme_location ve fallback_cb parametrelerini kullanırız.

wp_nav_menu(
  array(
    'menu' => 'footer-menu',
    'theme_location' => '__no_such_location',
    'fallback_cb' => false
  )
);

Artık footer bölümü için menu yapılmadıkça gözükmeyecektir.

Css ile Menüyü Özelleştirme

results matching ""

    No results matching ""