0

我想在WordPress的每个不同类别页面上更改侧边栏小部件的类名,我认为最好的方法是在functions.php中创建一个具有所有条件的函数并返回所需的类名。然后我在 register_sidebar 函数的列表标签中调用了该函数。

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;
}

由于某种原因,上述方法不起作用。请帮忙

谢谢

4

1 回答 1

2

我认为register_sidebars在尚未定义类别的过程中调用太早。您是否尝试过实施dynamic_sidebar_params过滤器?我在 WordPress Codex 中找不到任何东西,但我找到了这个很好的例子。您关于此主题的其他问题也有完整的答案

这仅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 -->
于 2010-02-03T08:17:36.323 回答