Come funzionano insieme register_sidebar() e get_sidebar()?
Premessa: Sono completamente nuovo in WP.
Sto utilizzando il framework tema Starkers HTML5. Nel file functions.php vedo questo codice:
function starkers_widgets_init() {
// Area 1, posizionata nella parte superiore della sidebar
register_sidebar( array(
'name' => __( 'Area Widget Primaria', 'starkers' ),
'id' => 'primary-widget-area',
'description' => __( 'L\'area widget primaria', 'starkers' ),
'before_widget' => '<li>',
'after_widget' => '</li>',
'before_title' => '<h3>',
'after_title' => '</h3>',
) );
// Area 3, posizionata nel footer. Vuota di default.
register_sidebar( array(
'name' => __( 'Prima Area Widget Footer', 'starkers' ),
'id' => 'first-footer-widget-area',
'description' => __( 'La prima area widget del footer', 'starkers' ),
'before_widget' => '<li>',
'after_widget' => '</li>',
'before_title' => '<h3>',
'after_title' => '</h3>',
) );
// ... altre chiamate a register_sidebar() ...
}
E nel file footer.php vedo questo codice:
<?php get_sidebar( 'footer' ); ?>
Non capisco come get_sidebar() sappia come prendere quell'argomento stringa e trovare i widget appropriati che sono stati definiti da register_sidebar(). Nel frammento di functions.php che ho pubblicato sopra, non c'è alcuna menzione di "footer" eccetto nelle proprietà name, id e description. Ma mi sembrerebbe strano che get_sidebar() cercasse 'footer' all'interno di queste proprietà.
Ha senso quello che sto chiedendo? C'è qualche pezzo mancante?
I motivi per cui lo chiedo sono: - Vorrei saperne di più sull'architettura di WP - Vorrei essere in grado di definire un'area widget personalizzata e sapere come renderizzarla su una pagina specifica.
Grazie mille.
Non mi sono mai preoccupato di get_sidebar(). Invece uso semplicemente dynamic_sidebar(). Lo chiameresti così:
dynamic_sidebar('prima-area-widget-footer');
E questo si occupa dell'intera sidebar. Niente più inclusioni di file, niente più cartelle del tema ingombre. Se voglio avere 5 sidebar diverse, non aggiunge alcun file, solo funzioni extra in functions.php.
Nel caso di Starkers, sidebar-footer.php chiama condizionalmente dynamic_sidebar() per tutte le aree widget appropriate.
User
Basta chiamare get_sidebar() dal file index.php e verrà caricato il file del tema sidebar.php.
register_sidebar(), invece, viene utilizzato per i widget, permettendo a plugin e altri componenti di aggiungere dinamicamente contenuti nel tuo file sidebar.php, a condizione che il tuo tema lo supporti.
Nel tuo caso, c'è un file chiamato sidebar-footer.php nella directory del tuo tema?
get_sidebar('nome') ottiene un template di sidebar con il nome sidebar-nome.php.
All'interno di sidebar-nome.php, c'è l'HTML per la sidebar e una chiamata a dynamic_sidebar('qualche-nome-speriamo-lo-stesso'), che è dove andranno i widget.
register_sidebar(array(name=>'qualche-nome-speriamo-lo-stesso', ...)) è ciò che permette a dynamic_sidebar di funzionare.
Come puoi vedere, get_sidebar(nometemplate) è da usare con i template di sidebar. Se non ne hai bisogno, puoi chiamare direttamente dynamic_sidebar(nomesidebar) dal tuo tema.