我想在WordPress的每个不同类别页面上更改侧边栏小部件的类名称,我认为最好的方法是在functions.php中创建一个包含所有条件的函数并返回所需的类名。然后我在register_sidebar函数的list标签中调用了该函数。
if (function_exists('register_sidebar')) {
register_sidebar(array(
'before_widget' => '<li class="sidebarModule">',
'after_widget' => '</li><!-- end module -->',
'before_title' => '<h2 class="moduleTitle "'.set_widget_title_color().'>',
'after_title' => '</h2>',
));
}
function set_widget_title_color() {
if(is_category('technology')) {
$color = "catNavColor1_active";
} elseif(is_category('gadgets')) {
$color = "catNavColor2_active";
} elseif(is_category('social-media')) {
$color = "catNavColor3_active";
} elseif(is_category('gaming')) {
$color = "catNavColor4_active";
} elseif(is_category('other')) {
$color = "catNavColor5_active";
}
return $color;
}
出于某种原因,上述方法无效。请帮忙
由于
答案 0 :(得分:2)
我认为register_sidebars
在过程中过早被调用,当时尚未定义类别。您是否尝试过实施dynamic_sidebar_params
过滤器?我在WordPress Codex中找不到任何内容,但我找到了nice example。关于此主题的其他问题也有a complete answer。
仅当您在窗口小部件中使用dynamic_sidebar
实现侧边栏时才有效,因为此函数调用dynamic_sidebar_params
过滤器。如果您有静态小部件(在模板中定义,而不是使用小部件管理页面),您应该在该模板代码中添加对函数的调用,如下所示:
<li class="sidebarModule">
<h2 class="moduleTitle <?php echo set_widget_title_color(); ?>">Widget title</h2>
<?php /* Your widget code */ ?>
</li><!-- end module -->