Comment faire register_sidebar () et get_sidebar () ensemble de travail?
-
16-10-2019 - |
Question
Disclaimer: Je suis flambant neuf à WP.
J'utilise le Starkers cadre thème 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 de trouver les widgets appropriés qui ont été définis par register_sidebar()
. Dans l'extrait functions.php I posté ci-dessus. Il n'y a aucune mention du « Pied de page », sauf pour les propriétés name
, id
et description
. Mais il semble étrange pour moi que get_sidebar()
rechercherait « pied de page » intérieur de ces propriétés.
Est-ce que ce sens de faire ce que je demande? Y at-il une pièce manquante?
Les raisons je demande parce que - Je voudrais en savoir plus sur l'architecture WP -. Je voudrais être en mesure de définir une zone de widget personnalisé et de savoir comment rendre sur une page spécifique
Merci une tonne.
La solution
Vous appelez simplement get_sidebar()
de index.php
et il charge le sidebar.php
de fichier thème.
register_sidebar()
, d'autre part, est utilisé pour les widgets où les plugins et autres veulent ajouter dynamiquement le contenu de votre sidebar.php
fichier si vos supports à thème il.
Dans votre cas, est-il un fichier appelé sidebar-footer.php
dans le répertoire de votre thème?
Autres conseils
Je ne l'ai jamais pris la peine avec get_sidebar()
. Au lieu de cela, je viens d'utiliser dynamic_sidebar()
. Vous appelleriez comme ceci:
dynamic_sidebar('first-footer-widget-area');
Et qui prend soin de toute la barre latérale. Pas plus d'inclusions de fichiers, pas plus de dossiers thématiques encombrées. Si je veux avoir 5 différentes barres latérales, il n'ajoute pas de fichiers, seules les fonctions supplémentaires dans functions.php
.
get_sidebar('name')
obtient un modèle de barre latérale du nom sidebar-name.php
.
Dans la barre latérale-nom.php, il y a le code HTML de la barre latérale, et un appel à dynamic_sidebar('some-name-hopefully-the-same')
, qui est l'endroit où les widgets vont.
register_sidebar(array(name=>'some-name-hopefully-the-same', ...))
est ce qui permet dynamic_sidebar au travail.
Comme vous pouvez le voir, get_sidebar(templatename)
est à utiliser avec la barre latérale-modèles. Si vous n'avez pas besoin pour eux, vous pouvez simplement appeler dynamic_sidebar(sidebarname)
directement à partir de votre thème.
tentatives de get_sidebar('footer')
pour charger sidebar-footer.php
du thème actif. Starkers fournit ce fichier. Vérifiez starkers/sidebar-footer.php
et les choses doivent être claires.