Cum funcționează împreună register_sidebar() și get_sidebar()?
Notă: Sunt complet nou în WordPress.
Folosesc tema framework Starkers HTML5. În fișierul functions.php văd acest cod:
function starkers_widgets_init() {
// Zona 1, localizată în partea de sus a sidebar-ului
register_sidebar( array(
'name' => __( 'Zonă Widget Principală', 'starkers' ),
'id' => 'primary-widget-area',
'description' => __( 'Zona widget principală', 'starkers' ),
'before_widget' => '<li>',
'after_widget' => '</li>',
'before_title' => '<h3>',
'after_title' => '</h3>',
) );
// Zona 3, localizată în footer. Goală implicit.
register_sidebar( array(
'name' => __( 'Prima Zonă Widget Footer', 'starkers' ),
'id' => 'first-footer-widget-area',
'description' => __( 'Prima zonă widget din footer', 'starkers' ),
'before_widget' => '<li>',
'after_widget' => '</li>',
'before_title' => '<h3>',
'after_title' => '</h3>',
) );
// ... mai multe apeluri către register_sidebar() ...
}
Iar în footer.php văd acest cod:
<?php get_sidebar( 'footer' ); ?>
Nu înțeleg cum știe get_sidebar() să folosească acel argument string pentru a găsi widget-urile potrivite care au fost definite prin register_sidebar(). În fragmentul din functions.php pe care l-am postat mai sus, nu există nicio mențiune despre "footer" cu excepția proprietăților name, id și description. Dar mi s-ar părea ciudat ca get_sidebar() să caute 'footer' în interiorul acelor proprietăți.
Are sens ce întreb? Există vreo piesă lipsă?
Motivele pentru care întreb sunt: - Aș dori să știu mai multe despre arhitectura WordPress - Aș dori să pot defini o zonă de widget personalizată și să știu cum să o redau pe o pagină specifică.
Mulțumesc mult.
Niciodată nu am folosit get_sidebar(). În schimb, folosesc direct dynamic_sidebar(). Ai putea să-l apelezi astfel:
dynamic_sidebar('first-footer-widget-area');
Și asta se ocupă de întreaga zonă de widgets. Fără fișiere incluse, fără foldere de teme aglomerate. Dacă vreau să am 5 zone de widget-uri diferite, nu se adaugă fișiere suplimentare, doar funcții în plus în functions.php.
În cazul temei Starkers, sidebar-footer.php apelează condițional dynamic_sidebar() pentru toate zonele de widget-uri corespunzătoare.
User
Pur și simplu apelezi get_sidebar() din index.php și acesta încarcă fișierul temei sidebar.php.
register_sidebar(), pe de altă parte, este utilizat pentru widget-uri, unde plugin-urile și altele asemenea doresc să adauge conținut dinamic în fișierul tău sidebar.php, dacă tema ta suportă acest lucru.
În cazul tău, există un fișier numit sidebar-footer.php în directorul temei tale?
get_sidebar('name') obține un șablon de sidebar cu numele sidebar-name.php.
În interiorul fișierului sidebar-name.php, se găsește HTML-ul pentru sidebar și un apel către dynamic_sidebar('some-name-hopefully-the-same'), care este locul unde vor fi afișate widget-urile.
register_sidebar(array(name=>'some-name-hopefully-the-same', ...)) este funcția care permite ca dynamic_sidebar să funcționeze.
După cum puteți vedea, get_sidebar(templatename) este destinat utilizării cu șabloane de sidebar. Dacă nu aveți nevoie de acestea, puteți apela direct dynamic_sidebar(sidebarname) din tema dumneavoastră.