Count posts that have a related term
Support › MB Relationships › Count posts that have a related termResolved
- This topic has 2 replies, 2 voices, and was last updated 4 years ago by Rebecca Robertson. 
- 
		AuthorPosts
- 
		
			
				
October 21, 2021 at 2:48 AM #31417Rebecca Robertson ParticipantI have a CPT called Destinations. 
 I have another CPT called Destination Posts.
 I have a custom taxonomy called States, this taxonomy is for the CPT Destination Posts.I have a relationship called Destination to State Taxonomy (id is from_destination_to_state_tax) 
 that is a reciprocal relationship from Destination posts to The State taxonomy.On each post on the Destinations archive page I want to show the number of posts that have the taxonomy that is related to that destination. So, I have a Destination called "Exploring Arizona" and three Destination Posts with the State Taxonomy of "Arizona". On the Destinations archive page I want the "Exploring Arizona" post to show the count for all of the published Destination Post type posts that have the taxonomy term "Arizona". I've tried a couple of different ways of getting the post count but I am doing something wrong because neither of them are working right. This one shows all of the published Destination Posts, without regard to the state taxonomy: <?php $query = new WP_Query( $states = get_terms( [ 'taxonomy' => 'state', 'hide_empty' => false, 'status' => 'publish', 'relationship' => [ 'id' => 'from_destination_to_state_tax', 'from' => get_the_ID('state'), // You can pass object ID or full object ], ] )); foreach ( $states as $state ) { $count = $query->post_count; echo $count . " Related Posts"; } ?>This one shows the count for how many state taxonomy terms the Destination is related to, which is pretty much useless information as each Destination is only related to 1 state taxonomy term: <?php $terms = get_terms( [ 'taxonomy' => 'state', 'hide_empty' => false, 'relationship' => [ 'id' => 'from_destination_to_state_tax', 'from' => get_the_ID(), // You can pass object ID or full object ], ] ); foreach ( $terms as $term ) { wp_count_terms('state', $term) . "  Related Posts"; } ?>October 21, 2021 at 3:34 PM #31425Long Nguyen ModeratorHi Rebecca, You need to put the function get_terms()in the loop that queries Destinations posts. For example$query_destinations = new WP_query( array( 'post_type' => 'destinations', ) ); while( $query_destinations->have_posts() ) { $query_destinations->the_post(); echo get_the_title(); $terms = get_terms( [ 'taxonomy' => 'state', 'hide_empty' => false, 'relationship' => [ 'id' => 'from_destination_to_state_tax', 'from' => get_the_ID(), // You can change from or to based on the relationship ], ] ); foreach ( $terms as $term ) { echo $term->slug . ' - ' . $term->count . "  Related Posts"; } }October 21, 2021 at 7:05 PM #31432Rebecca Robertson ParticipantThank you, that helped! I had to make a few modifications as your code showed post counts for all of the taxonomy terms and I only wanted the count for the single related term. This is the code that works: <?php $query_destinations = new WP_query( array( 'post_type' => 'destination', ) ); $states = get_terms( [ 'taxonomy' => 'state', 'hide_empty' => false, 'relationship' => [ 'id' => 'from_destination_to_state_tax', 'from' => get_the_ID(), // You can change from or to based on the relationship ], ] ); foreach ( $states as $state ) { $count = $query->post_count; echo $state->count . " Related Posts"; } ?>
- 
		AuthorPosts
- You must be logged in to reply to this topic.