0
votes

I'm trying to get a WP function to work properly.

I want it to display the posts from the selected sub-category page, for example, when navigating to: www.example.com/category/fruits/apples/, display all custom posts under "apples" category. I want to do this dynamically, so that no matter the number of sub-categories (apples, oranges, pears etc) this works every time the sub-category page is visited.

The following is my current function, but I don't know if the get_query_var('cat') is implemented properly. Currently, when I visit the sub-category page, it displays ALL posts with the parent category "fruits", but I want it to display just the "apples" posts.

<?php

$cat = get_query_var('cat'); // get current category
$yourcat = get_category($cat);

// only display product CPT posts 
query_posts( array( 'post_type' => 'products' ) ); 

if ( have_posts() ) : while ( have_posts() ) : the_post();
?>
  <div class="col-sm-3">
    <div class="thumbnail">
        <div class="more"><a href="<?php the_permalink(); ?>"><span class="fa fa-location-arrow"></span></a></div>
        <?php the_post_thumbnail(); ?>
        <div class="caption">
            <a href="<?php the_permalink(); ?>" class="btn btn-default" role="button"><?php the_title(); ?></a>
        </div>
      </div>
  </div>
<?php endwhile; endif; wp_reset_query(); ?>
1
I think I've managed to solve this! I wasn't familiar with the query posts, but after looking at the codex, found what I was looking for. Here's the updated bit of code: $category = get_category( get_query_var( 'cat' ) ); $cat = $category->cat_name; // only display product CPT posts query_posts( array( 'post_type' => 'products', 'category_name' => $cat ) );Ahmed Najaaf
Well done. Put the adjusted code in an answer and mark it solved. This will make it easier for people to identify unsolved issues.RST

1 Answers

0
votes

added $cat variable to query_posts array to get the current selected category posts.

$category = get_category( get_query_var( 'cat' ) );
$cat = $category->cat_name;

// only display product CPT
posts query_posts( array( 'post_type' => 'products', 'category_name' => $cat ) );