Skip to content

Instantly share code, notes, and snippets.

@thetwopct
Last active October 20, 2023 09:21
Show Gist options
  • Star 1 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save thetwopct/76a2a19aa362b9f0b3928d739fd5333f to your computer and use it in GitHub Desktop.
Save thetwopct/76a2a19aa362b9f0b3928d739fd5333f to your computer and use it in GitHub Desktop.
Loop through CPT categories and display posts within
<?php
/*
* Loop through Categories and Display Posts within
https://wordimpress.com/loop-through-categories-and-display-posts-within/
*/
$post_type = 'treatments';
// Get all the taxonomies for this post type
$taxonomies = get_object_taxonomies( array( 'post_type' => $post_type ) );
foreach( $taxonomies as $taxonomy ) :
// Gets every "category" (term) in this taxonomy to get the respective posts
$terms = get_terms( $taxonomy );
foreach( $terms as $term ) : ?>
<section class="category-section">
<div class="row">
<div class="span12">
<h2 class="mid-heading"><?php echo $term->name; ?></h2>
</div>
<?php
$args = array(
'post_type' => $post_type,
'posts_per_page' => -1, //show all posts
'order' => 'ASC',
'orderby' => 'meta_value, title',
'tax_query' => array(
array(
'taxonomy' => $taxonomy,
'field' => 'slug',
'terms' => $term->slug,
)
)
);
$posts = new WP_Query($args);
if( $posts->have_posts() ): while( $posts->have_posts() ) : $posts->the_post(); ?>
<div class="span4">
<article class="inner-post clearfix">
<div class="inner-img whitebox">
<?php if(has_post_thumbnail()) { ?>
<?php the_post_thumbnail(); ?>
<?php }
/* no post image so show default */
else { ?>
<!-- <img src="<?php bloginfo('template_url'); ?>/assets/img/default-img.png" alt="<?php echo get_the_title(); ?>" title="<?php echo get_the_title(); ?>" width="110" height="110" /> -->
<?php } ?>
</div>
<div class="inner-content">
<h3 class=""><a href="<?php echo get_permalink(); ?>" title="Read more about <?php echo get_the_title(); ?>"><?php echo get_the_title(); ?></a></h3>
<?php the_excerpt(); ?>
</div>
</article><!-- about-box -->
</div>
<?php endwhile; endif; ?>
</div>
<hr>
</section>
<?php endforeach;
endforeach; ?>
@thetwopct
Copy link
Author

thetwopct commented Apr 4, 2022

Hi Federico @thinkaboutit, thanks for your repeated feedback on this code. Feel free to fork and tweak to your needs. The use case for this code is a client who had a list of treatments (a CPT) of various taxonomies, who needed to output them all for an overview price list. The code works perfectly for my needs (at the time of creation 4 years ago, so I do not need any additional help with this at this time, thanks! 🙏

@thinkaboutit
Copy link

Sorry for the comments, I wanted to note them on my github and I wrote on yours.
Thanks for your code, anyway.
bye

@svenk17
Copy link

svenk17 commented Oct 20, 2023

Thank you very much… this is the only way! easy, best man. There is so much bullshit, but this works!!!!

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment