All category pages of a post type share one archive template, so the search bar on them is the same everywhere. By default, a search started from a category page searches the whole post type.
Remove the category filter from the search
With the Advanced Search add-on, the search fields for each post type are set at Places > Settings > Search. Remove the Categories field from the list and save. See Settings Overview for CPT > Settings > Search for the other field options.
Keep searches on a category page inside that category
This needs a short snippet. It adds the current category to the search form as a hidden field when the form is shown on a category page, so the results only include listings in that category. Add it with the Code Snippets plugin or your child theme’s functions.php.
add_action( 'geodir_search_hidden_fields', 'my_gd_search_current_category' );
function my_gd_search_current_category( $instance ) {
if ( ! is_tax() || ! geodir_is_page( 'archive' ) ) {
return;
}
$term = get_queried_object();
if ( ! empty( $term->term_id ) && substr( $term->taxonomy, -8 ) === 'category' ) {
echo '<input type="hidden" name="spost_category[]" value="' . absint( $term->term_id ) . '" />';
}
}
If you only need a fixed category on one normal page, see Set Specific Category in Search Bar on a Specific Page.
Hide the Near field
To hide the Near field in one search bar, tick Hide Near Search Input in the GD > Search block, or add hide_near_input="1" to the shortcode. That hides it wherever that search bar appears.
To hide it only on some category pages, use CSS. WordPress adds a term-{slug} class to the body on category pages, and the Near field sits in a .gd-search-field-near wrapper. Replace online-services with your category slug:
.term-online-services .gd-search-field-near {
display: none;
}