Change CSS Styles with Different Categories in WordPress
Posted on 10. Feb, 2010 by Alex Denning in Theme Development
THE PROBLEM
Recently I needed to set up WordPress to change the background colour of the page with each parent category. After a bit of Googleing, it appeared no-one had an easy answer, so I turned to my good friend the if statement. I thought I’d combine an if statement with the WordPress template tag IS_CATEGORY. Soon turned out that that wasn’t an option; theis_category template tag only works for archive pages, not posts themselves.
THE SOLUTION
The solution was another template tag, IN_CATEGORY. Combine that with a number of different CSS files, each with a different colour, and I was left with the following:
<link rel="stylesheet" href="<?php bloginfo('template_url')?>/blue.css" type="text/css" media="screen,projection" />
<?php
if( in_category( 1 ) )
{
?>
<link rel="stylesheet" href="<?php bloginfo('template_url')?>/blue.css" type="text/css" media="screen" />
<?php } elseif ( in_category (2) )
{
?>
<link rel="stylesheet" href="<?php bloginfo('template_url')?>/yellow.css" type="text/css" media="screen" />
<?php } elseif ( in_category (33) )
{
?>
<link rel="stylesheet" href="<?php bloginfo('template_url')?>/black.css" type="text/css" media="screen" />
<?php } else { ?>
<?php } ?>
And that’s it. Obviously, you’ll need to put the code in the header.php file and have these different stylesheets created, but other than that, done!
Related posts:

Enjoyed the post? We'll see you on Twitter or in your RSS reader!

Alex Denning is the founder of WPShout. A WordPress developer from London, Alex co-founded WPShift at the start of 2010 where he sells awesome WordPress themes.
You can find Alex on Twitter and at AlexDenning.com.




Devin
10. Feb, 2010
I do this with <a href="http://wordpresstheming.com/2009/12/dynamic-body-classes-wordpress-styling/"dynamic body classes, which means I can style on the basis of category + page, single, archive, date, tag, etc.
Devin
10. Feb, 2010
I do this with dynamic body classes, which means I can style on the basis of category + page, single, archive, date, tag, AND browser etc.
I think your technique makes sense if there is a huge stylesheet with lots of differences- but if it something simple like just a background color change, styling with the body classes might be the way to go.
Ashfame
11. Feb, 2010
Yeps! I totally agree with you, Devin.
Alex Denning
15. Feb, 2010
Yep. They’re certainly the other way to do it; I had written half a post saying you can do it this way too, but scrapped it as customisation is limited.