WordPress : Comment register_sidebar() et get_sidebar() fonctionnent ensemble ?
Avis de non-responsabilité : Je suis tout nouveau sur WP.
J’utilise le thème du framework Starkers 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()
savoir comment prendre cet argument de chaîne et trouver les widgets appropriés qui ont été définis par register_sidebar()
. Dans l’extrait de 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()
l’on recherche ‘footer’ dans ces propriétés.
Est-ce logique ce que je demande? Y a-t-il une pièce manquante?
Les raisons pour lesquelles je pose la question sont que – j’aimerais en savoir plus sur l’architecture WP – j’aimerais pouvoir définir une zone de widget personnalisée et savoir comment la rendre sur une page spécifique.
Merci beaucoup.
Solution n°1 trouvée
Vous venez d’appeler get_sidebar()
depuis index.php
et il charge le fichier de thème sidebar.php
.
register_sidebar()
, d’autre part, est utilisé pour les widgets où les plugins et autres veulent ajouter dynamiquement du contenu dans votre sidebar.php
fichier si votre thème le prend en charge.
Dans votre cas, y a-t-il un fichier nommé sidebar-footer.php
dans le répertoire de votre thème ?
Solution n°2 trouvée
Je n’ai jamais pris la peine de get_sidebar()
. Au lieu de cela, j’utilise simplement dynamic_sidebar()
. Vous l’appelleriez ainsi :
dynamic_sidebar('first-footer-widget-area');
Et cela prend soin de toute la barre latérale. Plus d’inclusions de fichiers, plus de dossiers thématiques 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
.
Solution n°3 trouvée
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')
, 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 voir, get_sidebar(templatename)
est à utiliser avec les modèles de barre latérale. Si vous n’en avez pas besoin, vous pouvez simplement appeler dynamic_sidebar(sidebarname)
directement depuis votre thème.
0 commentaire