如果你有很多类别,那不是一件好事,所以要小心!
首先,在中添加以下函数functions.php
:
add_action( \'widgets_init\', \'generate_widget_areas\' );
function generate_widget_areas() {
//Do not create for uncategorized category
$terms = get_categories(\'exclude=1&hide_empty=0\');
foreach ($terms as $term) {
register_sidebar( array(
\'name\' => \'Category \'.$term->name,
\'id\' => $term->slug.\'-widget-area\',
\'description\' => \'Widget area for category and posts in \'.$term->name,
\'before_widget\' => \'<li id="%1$s" class="widget-container %2$s">\',
\'after_widget\' => \'</li>\',
\'before_title\' => \'<h3 class="widget-title">\',
\'after_title\' => \'</h3>\' ) );
}
}
这就足够了,现在在窗口小部件中,每个类别都有一个窗口小部件区域。现在必须显示类别的区域。我喜欢显示类别列表的区域(类别帖子列表)和使用该类别的帖子的相同区域(单个帖子页面)。
在里面sidebar.php
, 添加:
<?php if (is_category() ||is_archive()||is_single()) : ?>
<div id="categories" class="widget-area" role="complementary">
<ul class="xoxo">
<?php
$category = get_the_category();
if (in_category($category[0]->slug) || is_category($category[0]->slug)){
dynamic_sidebar( $category[0]->slug.\'-widget-area\' );
};
?>
</ul>
</div><!-- #categories .widget-area -->
<?php endif; ?>
仅此而已,我敢打赌有人可以想出更好的代码,到目前为止,这就成功了。