How only display all post related to category

I’m trying to make a custom template for my category pages that only pulls in post under a specific category. At the moment, I am only able to pull in all post and not category specific…

My code so far….

<?php
    //Identify current Post-Category-ID
    foreach((get_the_category()) as $category)
    {
        $postcat= $category->cat_ID;
        $catname =$category->cat_name;
    }
?>
//Print category ID
<h2><?php echo $catname; ?></h2>
<?php 
$thumbnails = get_posts();
foreach ($thumbnails as $thumbnail) {
    if ( has_post_thumbnail($thumbnail->ID)) {
      echo '<li><a href="' . get_permalink( $thumbnail->ID ) . '" title="' . esc_attr( $thumbnail->post_title ) . '">';
      echo get_the_post_thumbnail($thumbnail->ID, 'full');
      echo '</a></li>';
    }
}
?>

Related posts

Leave a Reply

4 comments

  1. You’ve already got code to figure out which category you want to show posts from, here is how you would grab all the posts in that category:

    // create a query to grab our posts in category of ID $postcat
    $q = new WP_Query(array( 'cat' => $postcat));
    if($q->have_posts()){
        // foreach post found
        while($q->have_posts()){
            $q->the_post();
            // code for displaying each post goes here
        }
        // cleanup after the WP_Query, reset the post data
        wp_reset_postdata();
    } else {
        // no posts were found!
    }
    

    Never use query_posts to do your queries, always check if any posts were actually found, and always cleanup after yourself.

    For more arguements for queries, see here:

    http://codex.wordpress.org/Class_Reference/WP_Query

  2. there is another way easier than that all
    in archive.php

    replace that code

    <?php
    get_template_part('loop', $the_template_part);}
        ?> 
    

    with this code

    <?php
        if (is_category('CAT_ID'))
            {get_template_part('loop2', $the_template_part);
            } 
             else {get_template_part('loop', $the_template_part);}
        ?> 
    

    and then make your custom loop as you want and name it loop2 or what ever
    that will give you what you want exactly , showing just the category posts in the custom loop that you want to make

  3. I’m trying to make a custom template for my category pages that only pulls in post under a specific category.

    You know that we have category templates built in to WordPress.

    http://codex.wordpress.org/Category_Templates

    You really can just make category-slug.php for the category and be done with it. Unless you’re trying to say that you want the category page to show that category, and none of the posts that may be in children or other categories.

  4. using the following code you can fetch all the post of this category.If you want to limit the number of post then you have to pass the number to show post argument

     <?php query_posts('cat=1&showposts=5'); ?>
    <?php if (have_posts()) : while (have_posts()) : the_post(); ?>
      <li><a href="<?php the_permalink() ?>"><?php the_title(); ?></a>
        <?php the_excerpt() ?>
      </li>
    <?php endwhile; endif; ?>