Возможно, проблема в том, что при вызове register_sidebar
Wordpress еще не выполнил код, определяющий результат is_category
. Если вы попытаетесь вызвать функцию pageBarColor
сразу после ее определения, вы обнаружите, что она ничего не возвращает. Один из способов обойти это - подключиться к фильтру dynamic_sidebar_params
(который вызывается, когда вы вызываете dynamic_sidebar
в своих шаблонах, если вы это делаете) и обновить значения before_title
вашего виджета, что-то вроде этого:
function set_widget_title_color($widgets) {
foreach($widgets as $key => $widget) {
if (isset($widget["before_title"])) {
if(is_category('3')) {
$color = "color1";
} elseif(is_category('4')) {
$color = "color2";
} elseif(is_category('5')) {
$color = "color3";
} elseif(is_category('6')) {
$color = "color4";
} elseif(is_category('7')) {
$color = "color5";
}
if (isset($color)) $widgets[$key]["before_title"] = str_replace("moduleTitle", "moduleTitle ".$color, $widget["before_title"]);
}
}
return $widgets;
}
add_filter('dynamic_sidebar_params', 'set_widget_title_color');