Create multiple Search functions for posts / custom post types and everything

I’m currently working on a search function in a wp site. The plan is to have a search function on the news page which just searches posts.

I’m achieving this by adding the below to my functions.php file:

   /* search just posts */
function SearchFilter($query) {
  if ($query->is_search) {
  $query->set('post_type', 'post');
}
return $query;
}

 add_filter('pre_get_posts','SearchFilter');

which works fine. BUT. I also need to create a search on a custom post type listing – for just the custom posts and also one for the entire site to live on the 404 page.

Any ideas how to go about this greatly appreciated?

1 Answer
1

you can change your search filter to this:

function SearchFilter($query) {
$post_type = $_GET['post_type'];
if (!$post_type) {
    $post_type="any";
}
if ($query->is_search) {
    $query->set('post_type', $post_type);
};
return $query;
}  

add_filter('pre_get_posts','SearchFilter');

then on your news search form add :

<input type="hidden" name="post_type" value="post" />

on your custom post type listing search form add

<input type="hidden" name="post_type" value="customtypename" />

and on the entire site search for don’t add anything
an you are set.

Leave a Comment