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:

Read More
   /* 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?

Related posts

Leave a Reply

1 comment

  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.