Disclaimer: Je suis flambant neuf pour WP.
J'utilise le thème Starkers du framework HTML5 . Dans le functions.php
je vois ce code:
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() ...
}
Et dans footer.php
je vois ce code:
<?php get_sidebar( 'footer' ); ?>
Je ne comprends pas comment get_sidebar()
sait comment prendre cet argument de chaîne et trouver les widgets appropriés définis par register_sidebar()
. Dans l'extrait functions.php que j'ai posté ci-dessus. Il n'y a aucune mention de "pied de page" à l'exception des propriétés name
, id
et description
. Mais il me semblerait étrange que get_sidebar()
cherche le "pied de page" dans ces propriétés.
Est-ce que cela a un sens ce que je demande? Y at-il une pièce manquante?
Les raisons que je pose sont parce que - j'aimerais en savoir plus sur l'architecture WP - j'aimerais pouvoir définir une zone de widget personnalisée et savoir comment l'afficher sur une page spécifique.
Merci beaucoup.
Vous appelez simplement get_sidebar()
from index.php
et le fichier de thème sidebar.php
est chargé.
register_sidebar()
, d'autre part, est utilisé pour les widgets où les plugins et autres veulent ajouter dynamiquement du contenu dans votre fichier sidebar.php
si votre thème le supporte.
Dans votre cas, y a-t-il un fichier appelé sidebar-footer.php
dans le répertoire de votre thème?
Je ne me suis jamais embêté avec get_sidebar()
. Au lieu de cela, je viens d'utiliser dynamic_sidebar()
. Tu l'appellerais comme ça:
dynamic_sidebar('first-footer-widget-area');
Et cela prend soin de la barre latérale entière. Plus d'inclusions de fichiers, plus de dossiers de thèmes encombrés. Si je veux avoir 5 barres latérales différentes, cela n’ajoute aucun fichier, seulement des fonctions supplémentaires dans functions.php
.
get_sidebar('name')
obtient un modèle de barre latérale du nom sidebar-name.php
.
Dans sidebar-name.php, il y a le code HTML pour la barre latérale et un appel à dynamic_sidebar('some-name-hopefully-the-same')
, qui est l'endroit où iront les widgets.
register_sidebar(array(name=>'some-name-hopefully-the-same', ...))
est ce qui permet à dynamic_sidebar de fonctionner.
Comme vous pouvez le constater, get_sidebar(templatename)
doit être utilisé avec les modèles sidebar. Si vous n'en avez pas besoin, vous pouvez simplement appeler dynamic_sidebar(sidebarname)
directement à partir de votre thème.
get_sidebar('footer')
tente de charger sidebar-footer.php
à partir du thème actif. Starkers fournit ce fichier. Vérifiez starkers/sidebar-footer.php
et les choses devraient devenir claires.