Is it possible to hide categories from the listings search page filter where there are no listings with those categories yet? It is annoying to try to filter a category and find nothing until there is a listing added that uses it.
Nevermind, I figured it out:
For listings:
add_filter( 'hivepress/v1/forms/listing_filter', function( $form ) {
$categories = $form[ 'fields' ][ '_category' ][ 'options' ];
foreach ( $categories as $term_id => $category ) {
if ( $term_id == 0 ) {
continue;
}
$term = get_term( $term_id, 'hp_listing_category' );
$count = $term->count;
if ( $count == 0 ) {
unset( $form[ 'fields' ][ '_category' ][ 'options' ][ $term_id ] );
}
}
return $form;
}, 1000 );
And for vendors:
add_filter( 'hivepress/v1/forms/vendor_filter', function( $form ) {
$categories = $form[ 'fields' ][ '_category' ][ 'options' ];
foreach ( $categories as $term_id => $category ) {
if ( $term_id == 0 ) {
continue;
}
$args = [
'post_type' => 'hp_vendor',
'post_status' => 'publish',
'posts_per_page' => -1,
'tax_query' => [
'relation' => 'AND',
[
'taxonomy' => 'hp_vendor_category',
'field' => 'id',
'terms' => [ $term_id ]
]
]
];
$query = new WP_Query( $args );
$count = (int)$query->post_count;
wp_reset_postdata();
if ( $count == 0 ) {
unset( $form[ 'fields' ][ '_category' ][ 'options' ][ $term_id ] );
}
}
return $form;
}, 1000 );
2 Likes
This topic was automatically closed 30 days after the last reply. New replies are no longer allowed.