Come register_sidebar () e get_sidebar () insieme lavoro?
-
16-10-2019 - |
Domanda
Avviso: Sono nuovo di zecca per WP.
Sto usando il Starkers HTML5 tema quadro . Nel functions.php
vedo questo codice:
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() ...
}
E in footer.php
vedo questo codice:
<?php get_sidebar( 'footer' ); ?>
Non capisco come get_sidebar()
sa come prendere tale argomento stringa e trovare i widget appropriate che sono stati definiti da register_sidebar()
. Nel frammento di functions.php ho postato sopra. Non v'è alcuna menzione di "footer" tranne che per le proprietà name
, id
e description
. Ma sembrerebbe strano che get_sidebar()
sarebbe cercare 'footer' dentro quelle proprietà.
Questo ha senso quello che sto chiedendo? C'è qualche pezzo mancante?
Le ragioni che sto chiedendo è perché - Mi piacerebbe sapere di più su l'architettura WP -. Mi piacerebbe essere in grado di definire una zona di widget personalizzato e sanno come rendere su una pagina specifica
Grazie una tonnellata.
Soluzione
get_sidebar()
da index.php
e carica il file del tema sidebar.php
.
register_sidebar()
, d'altra parte, viene utilizzato per i widget in cui i plugin e come desidera aggiungere dinamicamente i contenuti nel vostro sidebar.php
file se il tema lo supporta.
Nel tuo caso, c'è un file chiamato sidebar-footer.php
nella directory del vostro tema?
Altri suggerimenti
Non ho mai preso la briga con get_sidebar()
. Invece mi basta usare dynamic_sidebar()
. Si potrebbe chiamare in questo modo:
dynamic_sidebar('first-footer-widget-area');
E che si prende cura di tutta la barra laterale. Nessun altro inclusioni di file, non più ingombra cartelle a tema. Se voglio avere 5 diverse barre laterali, non aggiunge alcun file, solo le funzioni supplementari in functions.php
.
get_sidebar('name')
ottiene un modello barra laterale del nome sidebar-name.php
.
In sidebar-name.php, c'è il codice HTML per la barra laterale, e una chiamata a dynamic_sidebar('some-name-hopefully-the-same')
, che è dove i widget andranno.
register_sidebar(array(name=>'some-name-hopefully-the-same', ...))
è ciò che permette dynamic_sidebar al lavoro.
Come si può vedere, get_sidebar(templatename)
è per l'utilizzo con la barra laterale-templates. Se non si ha bisogno di loro, si può chiamare dynamic_sidebar(sidebarname)
direttamente dal vostro tema.
tentativi get_sidebar('footer')
per caricare sidebar-footer.php
dal tema attivo. Starkers non fornire questo file. Controllare starkers/sidebar-footer.php
e le cose dovrebbero diventare chiare.