function wpse340250_term_count( WP_Term $term, $post_type) {
$q_args = [
\'post_type\' => $post_type,
\'nopaging\' => true, // no limit, pagination
\'fields\' => \'ids\', // only return post id\'s instead of full WP_Post objects will speed up
\'tax_query\' => array(
array(
\'taxonomy\' => $term->taxonomy,
\'field\' => \'term_id\',
\'terms\' => $term->term_id,
),
),
];
$term_count = get_posts($q_args);
return count($term_count);
}
<?php
// get the terms you need
$terms = get_terms( $posts = get_queried_object());
$sorted_terms = [];
if ( $terms ) {
foreach ( $terms as $term ) {
$sorted_term = [
\'count\' => (int) wpse340250_term_count( $term, \'Custom-post\' ),
// everything you will need later here
];
// here handle all dynamic checks add them to $sorted_term
if ( $term->taxonomy == \'category\' && is_category() ) {
$thisCat = get_category( get_query_var( \'cat\' ), false );
if ( $thisCat->term_id == $term->term_id ) {
$sorted_term[\'carrentActiveClass\'] = \'class="active-cat"\';
}
}
// for the sake of getting to the core of the answer I left stuff out.
// add the complete sorted_term to the collection
$sorted_terms[] = $sorted_term;
}
}
// all done gathering data now we handle html output
?>
<?php echo $sorted_term[\'count\'] ?>