1

How can I only show items from a certain category (category 51)?

Here's my loop below that I need to incorporate the code into.

<div class="news-content-inner">
  <?php $portfolioloop = new WP_Query( array( 'paged' => get_query_var('paged'), 'post_type' => 'news', 'posts_per_page' => 4 ) ); ?>
  <?php while ( $portfolioloop->have_posts() ) : $portfolioloop->the_post(); ?>
  <div class="news-item" onClick="location.href='<?php echo the_permalink(); ?>'">
    <h2><a style="color:#F45B11!IMPORTANT;" href="<?php echo the_permalink(); ?>"><?php echo the_time('d.m.Y'); ?> / <?php echo the_title(); ?></a></h2>
    <p class="news-page">
      <?php if (get_field('description') != "") { ?>
      <?php echo the_field('description'); ?>
        <?php } else { 
        $newscontent = get_the_content();
        $newscontent_str = strip_tags($newscontent, '');
        echo substr($newscontent_str,0,250) . "…";
        } ?>
    </p>
  </div>
  <?php endwhile; // end of the loop. ?>
  <p class="news-page" style="font-size:12px!IMPORTANT;"><?php echo wp_count_posts('news')->publish; ?> opportunities</p>
    <?php if (function_exists('wp_pagenavi')) {
    wp_pagenavi( array( 'query' => $portfolioloop ) ); } ?>
</div>
2

You need to modify your WP_Query loop. Add a tax_query argument to filter the category you want.

$portfolioloop = new WP_Query(array(
    'paged'          => get_query_var('paged'),
    'post_type'      => 'news',
    'posts_per_page' => 4,
    'tax_query'      => array(
        // Note: tax_query expects an array of arrays!
        array(
            'taxonomy' => 'portfolio', // my guess
            'field'    => 'id',
            'terms'    => 51,
        ),
    ),
));

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

  • Thanks, that worked great. The only thing that's not quite right is the wp_count_posts bit at the bottom. It's counted the total number of posts instead of the number of posts that are within the category. How can I change that? – Rob Apr 27 '12 at 9:12
  • 1
    @Rob: try $portfolioloop->post_count – Geert Apr 27 '12 at 9:17
  • 1
    You're welcome. To get the total number of posts (regardless of pagination) use $portfolioloop->found_posts. – Geert Apr 27 '12 at 9:21
  • Ok great, didn't know that. – Rob Apr 27 '12 at 9:21

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.