it-swarm.asia

Register_sidebar () ve get_sidebar () birlikte nasıl çalışır?

Feragatname: WP için yeni spanking yapıyorum.

Starkers HTML5 framework temasını kullanıyorum. functions.php içinde bu kodu görüyorum:

function starkers_widgets_init() {

  // Area 1, located at the top of the sidebar.
  register_sidebar( array(
    'name' => __( 'Primary Widget Area', 'starkers' ),
    'id' => 'primary-widget-area',
    'description' => __( 'The primary widget area', 'starkers' ),
    'before_widget' => '<li>',
    'after_widget' => '</li>',
    'before_title' => '<h3>',
    'after_title' => '</h3>',
  ) );

  // Area 3, located in the footer. Empty by default.
  register_sidebar( array(
    'name' => __( 'First Footer Widget Area', 'starkers' ),
    'id' => 'first-footer-widget-area',
    'description' => __( 'The first footer widget area', 'starkers' ),
    'before_widget' => '<li>',
    'after_widget' => '</li>',
    'before_title' => '<h3>',
    'after_title' => '</h3>',
  ) );

  // ... more calls to register_sidebar() ... 
}

Ve footer.php içinde bu kodu görüyorum:

<?php get_sidebar( 'footer' ); ?>

get_sidebar() 'ın o string argümanını nasıl alacağını ve register_sidebar() tarafından tanımlanan uygun widget'ları nasıl bulacağını bilmiyorum. Functions.php pasajında ​​yukarıda yayınladım. name, id ve description özellikleri dışında hiçbir "altbilgi" den bahsedilmez. Ancak get_sidebar() işlevinin bu özellikler içinde 'footer' araması yapması bana garip gelir.

Bu ne sorduğumun bir anlamı var mı? Eksik bir parça var mı?

Sormamın nedenleri şudur: - WP mimarisi hakkında daha fazla bilgi edinmek istiyorum - Özel bir widget alanı tanımlayabilmek ve belirli bir sayfada nasıl oluşturacağımı bilmek istiyorum.

Bir ton teşekkürler.

7
jessegavin

Siz sadece get_sidebar() 'yi index.php' dan arayın ve sidebar.php tema dosyasını yükler.

register_sidebar() /, diğer yandan, temanız destekliyorsa eklentilerin ve sidebar.php dosyanızda dinamik olarak içerik eklemek istediğiniz widget'lar için kullanılır.

Senin durumunda, dizininizin dizininde sidebar-footer.php adında bir dosya var mı?

9
john010117

get_sidebar() ile hiç uğraşmadım. Bunun yerine sadece dynamic_sidebar() işlevini kullanıyorum. Buna şöyle diyorsun:

dynamic_sidebar('first-footer-widget-area');

Ve bu tüm kenar çubuğuna bakar. Artık dosya eklemesi yok, darmadağın tema klasörleri yok. 5 farklı kenar çubuğuna sahip olmak istersem, herhangi bir dosya eklemiyor, sadece functions.php dosyasındaki ekstra fonksiyonlar.

7
John P Bloch

get_sidebar('name'), sidebar-name.php adının bir kenar çubuğu şablonunu alır.

Sidebar-name.php içinde, kenar çubuğunun HTML'si ve widget'ların gideceği dynamic_sidebar('some-name-hopefully-the-same') çağrısı vardır.

register_sidebar(array(name=>'some-name-hopefully-the-same', ...)), dynamic_sidebar'ın çalışmasını sağlayan şeydir.

Gördüğünüz gibi get_sidebar(templatename), kenar çubuğu şablonlarıyla kullanmak içindir. Onlara ihtiyacınız yoksa, doğrudan temanızdan dynamic_sidebar(sidebarname) dosyasını çağırabilirsiniz.

4
Gerard ONeill

get_sidebar('footer'), aktif temadan sidebar-footer.php öğesini yüklemeye çalışır. Starkers bu dosyayı sağlar. starkers/sidebar-footer.php dosyasını kontrol edin, işler netleşmelidir.

3
Annika Backstrom