Wordpress İle Özel Bir Yan Menü Alanı Nasıl Yapılır?

Wordpress İle Özel Bir Yan Menü Alanı Nasıl Yapılır?
Wordpress İle Özel Bir Yan Menü Alanı Nasıl Yapılır?

Gereksinimler ve Ön Hazırlık

Bu işlemlere başlamadan önce, sitenizin bir yedeğini almanız hayati önem taşır. Yanlış bir PHP kodu, "beyaz ekran" hatasına neden olabilir. Çalışmalarınızı doğrudan canlı sitede yapmak yerine, yerel bir geliştirme ortamında (LocalWP veya XAMPP gibi) denemenizi öneririz.

  • Aktif bir WordPress kurulumu.
  • Tema dosyalarına erişim (FTP veya dosya yöneticisi).
  • Temel düzeyde PHP, HTML ve CSS bilgisi.
  • Bir kod editörü (Visual Studio Code önerilir).

Adım 1: Özel Menü Alanını Kaydetme

WordPress'e yeni bir menü alanı eklemek için öncelikle temanızın functions.php dosyasını düzenlememiz gerekir. Bu adım, WordPress'in "Görünüm > Menüler" kısmında yeni bir konum oluşturmasını sağlar.


// functions.php dosyasına eklenecek kod
function ozel_tema_menulerini_tanimla() {
    register_nav_menus( array(
        'yan-menu' => __( 'Özel Yan Menü', 'tema-metin-alani' ),
    ) );
}
add_action( 'init', 'ozel_tema_menulerini_tanimla' );

Bu kod, register_nav_menus fonksiyonunu kullanarak WordPress'e 'yan-menu' adında yeni bir konum ekler. Kodun çalışıp çalışmadığını "Görünüm > Menüler" sekmesine giderek "Menü Konumları" kısmında "Özel Yan Menü" seçeneğini görerek test edebilirsiniz.

Adım 2: Yan Menü Alanını Şablona Ekleme

Menüyü kaydettikten sonra, bu menünün sitenin hangi kısmında görüneceğini belirlememiz gerekir. Genellikle sidebar.php veya header.php dosyasına bu kodu ekleriz. Aşağıdaki kod, oluşturduğumuz menüyü HTML yapısı içine yerleştirir.

Burada wp_nav_menu fonksiyonu, daha önce kaydettiğimiz 'yan-menu' konumunu çağırır. container parametresini false yaparak, WordPress'in otomatik eklediği gereksiz div etiketlerinden kurtuluruz.

Adım 3: CSS ile Tasarımı Şekillendirme

Menünüzü eklediniz ancak şu an düz bir liste gibi görünüyor olabilir. Modern bir yan menü tasarımı için CSS kullanmalıyız. style.css dosyanıza aşağıdaki kodları ekleyerek menünüzü özelleştirebilirsiniz.


.yan-menu-konteyner {
    width: 250px;
    background: #f4f4f4;
    padding: 20px;
}

.ozel-yan-menu-liste {
    list-style: none;
    padding: 0;
}

.ozel-yan-menu-liste li a {
    display: block;
    padding: 10px;
    color: #333;
    text-decoration: none;
    border-bottom: 1px solid #ddd;
}

.ozel-yan-menu-liste li a:hover {
    background: #e0e0e0;
}

Bu CSS kodları, menüye bir genişlik, arka plan rengi ve hover (üzerine gelindiğinde) efekti kazandırır. Tarayıcınızın geliştirici araçlarını (F12) kullanarak menü öğelerinin sınıflarını kontrol edebilir ve tasarımı ihtiyaçlarınıza göre değiştirebilirsiniz.

Adım 4: Güvenlik ve Performans İpuçları

WordPress geliştirirken güvenlik her zaman önceliklidir. Kullanıcı girdilerini veya dinamik içerikleri ekrana basarken her zaman esc_url veya esc_html gibi fonksiyonları kullanmalısınız. Ayrıca, çok fazla menü sorgusu veritabanı yükünü artırabilir.

Kritik Uyarı: Tema dosyalarında yaptığınız değişiklikler, tema güncellendiğinde kaybolabilir. Bu nedenle mutlaka bir "Child Theme" (Alt Tema) kullanın. Kod güvenliği için doğrudan veritabanı sorguları yerine WordPress'in sunduğu API fonksiyonlarını tercih edin.

Yöntem Karşılaştırması

Yöntem Avantajı Dezavantajı
PHP ile Manuel Kodlama Tam kontrol, yüksek performans Teknik bilgi gerektirir
Eklenti Kullanımı Hızlı ve kolay kurulum Sitede şişkinlik ve yavaşlama

Adım 5: Gelişmiş Özellikler - Dinamik Sınıflar

Menünüze daha fazla işlevsellik katmak için PHP kullanarak her menü öğesine özel sınıflar ekleyebilirsiniz. Bu, özellikle her menü öğesinin yanına ikon koymak istediğinizde çok işe yarar.


// functions.php içerisine
add_filter( 'nav_menu_css_class', 'ozel_menu_siniflari', 10, 2 );
function ozel_menu_siniflari( $classes, $item ) {
    $classes[] = 'menu-item-' . $item->ID;
    return $classes;
}

Bu filtre, her menü öğesine benzersiz bir ID sınıfı atar. Böylece CSS ile her bir menü öğesine özel ikonlar veya farklı renkler atayabilirsiniz.

Sıkça Sorulan Sorular

Yan menü neden görünmüyor?

Öncelikle "Görünüm > Menüler" kısmından bir menü oluşturup, bu menüyü "Özel Yan Menü" konumuna atadığınızdan emin olun. Ayrıca sidebar.php dosyanızın temanızda doğru çağrıldığını kontrol edin.

Mobil cihazlarda menüyü nasıl gizlerim?

CSS'de @media sorgularını kullanarak .yan-menu-konteyner { display: none; } kuralını belirli ekran genişliklerinin altında uygulayabilirsiniz.

Birden fazla yan menü ekleyebilir miyim?

Evet, register_nav_menus dizisine yeni bir anahtar ekleyerek istediğiniz kadar menü konumu tanımlayabilirsiniz.

Kodlarım neden kaydedilmiyor?

Sunucunuzdaki dosya izinlerini kontrol edin veya bir güvenlik eklentisinin dosya düzenlemeyi engellemediğinden emin olun.

Bu yöntem SEO'yu etkiler mi?

Doğru HTML etiketleri (nav, ul, li) kullanıldığı sürece, arama motorları için oldukça temiz ve anlaşılır bir yapı oluşturmuş olursunuz; bu da SEO açısından olumlu bir durumdur.

Özel Yan Menü İçin Performans Optimizasyonu ve Önbellekleme

Özel bir yan menü alanı oluşturduğunuzda, bu menü her sayfa yüklenişinde veritabanından sorgulanır. Eğer menünüz çok fazla öğe içeriyorsa veya karmaşık bir yapıya sahipse, bu durum site hızınızı milisaniyeler düzeyinde de olsa etkileyebilir. WordPress'in sunduğu wp_nav_menu fonksiyonu, varsayılan olarak verimli çalışsa da, büyük ölçekli projelerde Transients API kullanarak menü çıktısını önbelleğe almak mantıklıdır.

Aşağıdaki kod örneği, menü çıktısını veritabanında 12 saat boyunca saklayarak veritabanı sorgu yükünü azaltmanıza yardımcı olur:

function get_cached_sidebar_menu() {
    $menu_name = 'ozel-yan-menu';
    $cache_key = 'sidebar_menu_cache';
    $cached_menu = get_transient($cache_key);

    if (false === $cached_menu) {
        $cached_menu = wp_nav_menu(array(
            'theme_location' => $menu_name,
            'echo' => false,
            'container' => false
        ));
        set_transient($cache_key, $cached_menu, 12 * HOUR_IN_SECONDS);
    }
    echo $cached_menu;
}

Hata Ayıklama (Debugging) ve Veri Kontrolü

Yan menünüzle ilgili bir sorun yaşadığınızda veya menü öğeleri beklediğiniz gibi görünmediğinde, WordPress'in sunduğu wp_get_nav_menu_items fonksiyonu ile menü verilerini ham halde inceleyebilirsiniz. Bu, özellikle menüye özel CSS sınıfları veya meta veriler eklediğinizde hata ayıklamayı kolaylaştırır.

Aşağıdaki yardımcı kod bloğu, menünüzdeki öğeleri bir liste halinde dökmenizi sağlar:

function debug_sidebar_menu_items() {
    $menu_name = 'ozel-yan-menu';
    $locations = get_nav_menu_locations();
    $menu_id = $locations[$menu_name];
    $menu_items = wp_get_nav_menu_items($menu_id);

    echo '
';
    print_r($menu_items);
    echo '
'; } // Sadece geliştirme aşamasında kullanın!

Menü Yapısını Test Etme İpuçları

  • Geçersiz Konum Kontrolü: has_nav_menu('ozel-yan-menu') fonksiyonunu kullanarak menünün tanımlanıp tanımlanmadığını kontrol edin.
  • CSS Çakışmaları: Tarayıcı konsolunu (F12) açarak menü öğelerinizin üzerine başka bir temanın CSS'inin gelip gelmediğini "Elements" sekmesinden denetleyin.
  • Kullanıcı İzinleri: Menü öğelerinin görünürlüğü bazen "Screen Options" (Ekran Tercihleri) kısmındaki "CSS Classes" veya "Link Relationship" gibi seçeneklerin işaretlenmemiş olmasından kaynaklanabilir.

Bu teknikleri uygulayarak, sadece çalışan bir yan menü değil, aynı zamanda ölçeklenebilir ve hata ayıklaması kolay bir WordPress altyapısı kurmuş olursunuz.

Sonuç

WordPress ile özel bir yan menü alanı yapmak, temanızı kişiselleştirmenin en profesyonel yollarından biridir. Bu rehberde öğrendiğiniz PHP kayıt fonksiyonları ve CSS biçimlendirme teknikleri ile artık sitenizin navigasyon yapısını tamamen yönetebilirsiniz. Bir sonraki adım olarak, bu menülere JavaScript ile "açılır-kapanır" (accordion) efektleri ekleyerek kullanıcı deneyimini bir üst seviyeye taşıyabilirsiniz.

Sorumluluk Reddi: Bu rehberdeki kodlar genel eğitim amaçlıdır. Uygulama öncesi sitenizin yedeğini almanız ve kodları canlı ortama almadan önce test etmeniz tavsiye edilir. Hatalı kodlamadan kaynaklanan veri kayıplarından kullanıcı sorumludur.

Bu yazıya tepkinizi paylaşın:
Kerem Demir

Dijital araçlar ve kişisel verimlilik üzerine uzmanlaşmış profesyonel bir yazarım. Karmaşık konuları basit ve anlaşılır kılmak için rehber odaklı içerikler üretiyorum.

Yorumlar (16)

16
okuyucu bu yazı hakkında yorum yaptı. Siz de deneyiminizi paylaşarak diğer okuyuculara yardımcı olabilirsiniz.
Gülşah D.
Gülşah D. 24 Temmuz 2026

Arkadaşlar bu işlemi yaptıktan sonra site hızında bi düşüş yaşayan oldu mu? Bende sanki hafif bi yavaşlama var gibi.

Mert Yıldırım
Mert Yıldırım 25 Temmuz 2026

Yok Gülşah, kodlar gayet temiz. Yavaşlama başka bir eklentiden kaynaklı olabilir, bir kontrol et istersen.

Emre K.
Emre K. 26 Temmuz 2026

Gayet net ve anlaşılır. Teşekkürler paylaşım için.

Seda Nur
Seda Nur 28 Temmuz 2026

CSS kısmında mobil uyumluluk için media query eklemeyi unutmuşsunuz, telefonda yan menü biraz kaydı bende.

Kerem Demir
Kerem Demir 29 Temmuz 2026

Haklısın Seda, mobil için ufak bir ekleme yapılması gerekebilir. Geri bildirimin için teşekkürler!

Fatih Terzi
Fatih Terzi 28 Temmuz 2026

Bu işlemi yapmak için eklenti kullanmak istemiyordum, ilaç gibi geldi bu yazı. Emeğinize sağlık.

Ayşe Yılmaz
Ayşe Yılmaz 29 Temmuz 2026

Çok açıklayıcı olmuş, adımları tek tek uyguladım ve çalıştı. Sonunda istediğim görünümü elde ettim.

Burak Öz
Burak Öz 31 Temmuz 2026

functions.php dosyasını düzenlerken hata aldım, sanırım virgül hatası yaptım. Tekrar kontrol edicem.

Deniz K.
Deniz K. 01 Ağustos 2026

Bende de olmuştu, PHP taglarını (<?php) kontrol et, genelde orada hata yapıyoruz.

Mehmet Emin
Mehmet Emin 01 Ağustos 2026

Harika bir rehber olmuş, sitemin yan menüsü artık çok daha profesyonel duruyor. Teşekkürler.

Hakan Bal
Hakan Bal 02 Ağustos 2026

Abi anlatım güzel ama CSS tarafı biraz karışık olmuş. Yeni başlayanlar için biraz daha detay verilebilirdi.

Selin A.
Selin A. 03 Ağustos 2026

Katılıyorum, flexbox kullanıldığını bilmeyen biri zorlanabilir. Yine de mantığı kavramak adına faydalı olmuş.

Zeynep S.
Zeynep S. 03 Ağustos 2026

Merhabalar, bu kodları functions.php dosyasına eklerken child theme kullanmak şart mı yoksa ana temaya da ekleyebilir miyim?

Kerem Demir
Kerem Demir 04 Ağustos 2026

Kesinlikle child theme kullanmanı öneririm Zeynep, aksi takdirde tema güncellemesi geldiğinde yaptığın değişiklikler silinir.

Caner Yılmaz
Caner Yılmaz 05 Ağustos 2026

Eline sağlık Kerem hocam, tam da böyle bişey arıyodum. Kodları kopyaladım, sorunsuz çalışıyo. Eyvallah.

Kerem Demir
Kerem Demir 06 Ağustos 2026

Rica ederim Caner, işine yaramasına sevindim!

Yorum Yaz