在WordPress中更改窗口小部件的不同类别页面的CSS类名称

时间:2010-02-01 22:56:45

标签: php wordpress wordpress-theming

我想在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;
}

出于某种原因,上述方法无效。请帮忙

由于

1 个答案:

答案 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 -->