if in_category on archive.php

So I’m trying to do an if / else statement on an archive.php template. I setting up my archives using WP Smart archives reloaded (http://wordpress.org/extend/plugins/smart-archives-reloaded/)

The code from my archive.php is as follows:

Read More
<?php
   if (in_category('166')) { include 'archive-blog.php';
}

else {
   echo('foo');
}
?>

Im trying to get archive.php to include a certain template based on the category number. However this code grabs the archive blog template no matter what (even if I click on a category archive that is not the blog).

I’m wondering if I’m not doing this correctly – does in_category not work on an archive page? I have a similar set up with a single.php directing to a different include template based on the category.

Thanks!

Update

I’ve also tried to use is_category and it seems to be completely ignoring my first condition and just echoing foo for any category.

<?php
   if (is_category('166')) { include 'archive-blog.php';
}

else {
   echo('foo');
}
?>

Link to what I’m talking about: (go into the archives in the right sidebar)

http://www.metropoliscreative.com/talent-analytics/w/?cat=166

http://www.metropoliscreative.com/talent-analytics/w/?cat=3

also, im not using permalinks because the clients server does not have mod-rewrite

Related posts

Leave a Reply

5 comments

  1. If memory serves, in_category() is for use within the loop and returns true when the current post is in that particular category.

    You’re probably for is_category(166).

  2. Alternatively you could just name your file so that WordPress knows to use it for that category. According to the Codex, WordPress looks for the following files (in this order) in order to display your categories:

    1. category-slug.php
    2. category-ID.php
    3. category.php
    4. archive.php
    5. index.php

    So if you named/created a template file called category-166.php, then WordPress would use that file to display category 166.

  3. you are almost there its not in_category(‘166’) its is_category(‘166’)
    the difference are:

    • in_category checks if single is in
      that category.
    • is_category check if current is that
      category archive page.
  4. <?php
    $post = $wp_query- >post;
    if ( in_category('166') ) {
    include(TEMPLATEPATH . '/archive-blog.php’);
    } else {
       echo('foo');
    } ? >
    

    is that what you’re looking for?