Je développe un thème dont les pages (ainsi que les publications) sont si différentes de la page d'accueil que je veux des widgets différents sur leurs barres latérales.
Y a-t-il un moyen de le faire?
J'appelle la barre latérale sur single.php de cette façon, exactement comme sur index.php :
<?php get_sidebar(); ?>
Le sidebar.php est comme suit:
<?php
/**
* The Sidebar containing the primary and secondary widget areas.
?>
<aside>
<ul>
<?php
/* When we call the dynamic_sidebar() function, it'll spit out
* the widgets for that widget area. If it instead returns false,
* then the sidebar simply doesn't exist, so we'll hard-code in
* some default sidebar stuff just in case.
*/
if ( ! dynamic_sidebar( 'primary-widget-area' ) ) : ?>
<?php endif; // end primary widget area ?>
</ul>
<?php
// A second sidebar for widgets, just because.
if ( is_active_sidebar( 'secondary-widget-area' ) ) : ?>
<ul>
<?php dynamic_sidebar( 'secondary-widget-area' ); ?>
</ul>
<?php endif; ?>
</aside>
Utilisez Balises conditionnelles pour afficher le contenu uniquement si certaines conditions sont remplies.
Dans votre cas, vous cherchez probablement à utiliser is_front_page()
.
<aside>
<ul>
<?php
if ( function_exists( 'dynamic_sidebar' ) ) {
if ( is_front_page() ) {
if ( ! dynamic_sidebar( 'frontpage-widget-area' ) ) {
echo '<li>No sidebars for the frontpage.</li>'; // some default output
}
} else {
if ( ! dynamic_sidebar( 'primary-widget-area' ) ) {
echo '<li>No sidebars for posts/pages.</li>'; // some default output
}
}
} else {
echo '<li>Sidebars disabled.</li>'; // some default output
}
?>
</ul>
</aside>
En supposant que les deux zones de widget aient été correctement enregistrées via register_sidebar()
au préalable.